Node初识与配置安装(一)

执笔记忆的空白 2017-12-04 12:04:20 ⋅ 922 阅读

第一. JavaScript简述


1992年, 第一个客户端脚本语言ScriptEase诞生, 由Nombas公司开发;JavaScript的首秀是在1995年,JScript 的诞生成为 JavaScript 发展的一个重要里程碑,标志了动态网页时 代的全面到来。


在1996年,JavaScript 标准由诸多软件厂商共同提交给ECMA(欧洲计算机制造商协会)。 ECMA 通过了标准 ECMA-262,也就是 ECMAScript。



第二. Node.js是什么?


2009年,由 Ryan Dahl发起的开源项目, 后被Joyent公司收购并管理维护;Node.js 有着强大而灵活的包管理器(node package manager,npm),目前已经有上万个第三方模块,其中有网站开发框架, 有 MySQL、PostgreSQL、MongoDB 数据库接口,有模板语言解析、CSS 生成工具、邮件、 加密、图形、调试支持,甚至还有图形用户界面和操作系统API工具。


Node.js是一个让 JavaScript 运行在服务端的开发平台;


Node.js可以作为服务器向用户提供服务,它跳过了 Apache、Nginx 等 HTTP 服务器,直接面向前端开发。Node.js 的许多设计理念与经典架构(如 LAMP)有着很大的 不同,可提供强大的伸缩能力,以适应21世纪10年代以后规模越来越庞大的互联网环境。


第三. Node.js不是什么?

1. Node.js 不是一种独立的语言,

2. Node.js 不是一个 JavaScript 框架 ; 


第四 JS分类


第一种分类

JavaScript 是由 ECMAScript、文档对象模型(DOM)和浏览器对象模型(BOM)组成的,


第二种分类

JavaScript 由 Core JavaScript 和 Client JavaScript 组成.


Node.js 中所谓的 JavaScript 只是 Core JavaScript,或是ECMAScript的一种实现, 不包含 DOM、BOM 或者 Client JavaScript;


Node.js 是一个让 JavaScript 运行在浏览器之外的平台。它实现了诸如文件系统、模块、 包、操作系统 API、网络通信等 Core JavaScript 没有或者不完善的功能。

Node.js 的 JavaScript 引擎是 V8,来自 Google Chrome 项目。


Node.js能做什么?


 具有复杂逻辑的网站;

 基于社交网络的大规模 Web 应用;

 Web Socket 服务器;

 TCP/UDP 套接字应用程序; 8  命令行工具;

 交互式终端程序;

 带有图形用户界面的本地应用程序;

 单元测试工具;

 客户端 JavaScript 编译器。


第五. Node.js 与 PHP 对比


Node.js 内建了 HTTP 服务器支持,也就是说你可以轻而易举地实现一个网站和服务器

的组合。


使用 PHP 的时候,必须先搭建一个 Apache 之类的HTTP 服务器,然后通过 HTTP 服务器的模块加载或 CGI 调用,才能将 PHP 脚本的执行结 果呈现给用户。



Node.js 最大的特点就是采用异步式 I/O 与事件驱动的架构设计。


第六 Node.js与传统对比


1. 传统: 多线程模型. 为每个业务逻辑提供一个系统线程,通过系统线程切换来弥补同步式 I/O 调用时的时间开销。

2. Node.js: 单线程模型, 对于所有 I/O 都采用异步式的请求方式,避免了频繁的上下文切换。



异步机制是基于事件的, 以非阻塞的方式请求,返回的结果由事件循环来处理。


优缺点

1. 优点: CPU 和内存在同一时间集中处理一件事,同时尽可能让耗时的 I/O 操作并行执行。

2. 缺点: 它不符合开发者的常规线性思路,往往 需要把一个完整的逻辑拆分为一个个事件,增加了开发和调试难度。


引擎效率革命导致, 之前网景公司实现并收费的服务端的JavaScript重回人们的视野, 为了统一 JavaScript 在浏览器之外的实现,CommonJS 诞生了, CommonJS 规范包括了模块(modules)、包(packages)、系统(system)、二进制(binary)、 控制台(console)、编码(encodings)、文件系统(filesystems)、套接字(sockets)、单元测 试(unit testing)等部分。


Node.js 是目前 CommonJS 规范最热门的一个实现,它基于 CommonJS 的 Modules/1.0 规 范实现了 Node.js 的模块,同时随着 CommonJS 规范的更新,Node.js 也在不断跟进。


第二部分

配置开发环境


[Node.js官网](https://nodejs.org/en/)提供了 Mac OS X 的安装包, 下载安装包。下载完成后运行安装包;

主要概念

1. Homebrew: 是一款自由及开放源代码的软件包管理系统,用以简化Mac OS X系统上的软件安装过程;

2. nvm: 借助(Node Version Manager)来安装并管理Node.js。由于node更新非常快速,开发过程很有可能会有切换node版本的需求;

3. npm: 是 Node 的模块管理器,功能极其强大。只要一行命令,就能安装别人写好的模块。

4. curl: 是利用URL语法在命令行方式下工作的文件传输工具,支持很多协议,如HTTP、FTP、TELNET等。



正确姿势: [<多看官方文档>](https://github.com/creationix/nvm)


第一步: 使用`curl`方式安装:


```

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash

```


```

export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

```

Mac安装后如果提示`nvm: command not found`, 是因为没有`[.bash_profile file] `文件,

第一种方法: 创建`touch ~/.bash_profile`, 然后重新执行curl操作;

第二种方法: 打开`.bash_profile`, 添加`source ~/.bashrc`


第二步:下载不同版本<2016年9月23日>



对于nodejs与io.js的版本区别以及渊源,建议大家参考Node.js与io.js那些事儿(http://www.infoq.com/cn/articles/node-js-and-io-js/)


2006年,也许是厌倦了读博的无聊,他产生了『世界那么大,我想去看看』的念头,做出了『退学』的决定,然后一个人来到智利的Valparaiso小镇。** 】那时候他尚不知道找一个什么样的工作来糊口。。。。。

【**在他眼中,拿工资和上班其实就是去那里旅行。】


歪瓜仁没事咋就喜欢随便退学呢?

还不知道怎么糊口,就先退个学试试,闹着玩儿呢。


2.1罗列


```

#罗列可以安装的版本

$ nvm ls-remote

.

.

.

   v6.4.0

   v6.5.0

   v6.6.0

      

```


2.2下载版本


```

#为了演示,选择了6.6.0

$ nvm install v6.6.0


$ nvm install v5.12.0

######################################################################## 100.0%

WARNING: checksums are currently disabled for node.js v4.0 and later

Now using node v5.12.0 (npm v3.8.6)


```


2.3切换版本


```

$ nvm use v5

Now using node v5.12.0 (npm v3.8.6)


$ nvm use v6

Now using node v6.6.0 (npm v3.10.3)


```



第三步骤常用命令


```

# 下载

$ nvm install ***

#切换版本

$ nvm use 版本号

#罗列下载的版本

$nvm ls

# 罗列远程版本

$nvm ls-remote

#设置默认的版本

$nvm alias default 版本


```


**注意事项**

1. 当关闭终端在此打开时, 输入 **nvm**会提示找不到, 解决办法: 

在`.bash_profile`文件中添加`source ~/.bashrc`;即可;


2. **nvm安装**的路径是: `~/.nvm`;

3. 使用nvm安装**node, 会安装在该路径**下: `~/.nvm/versions/node`;



**附加**


Mac 环境变量配置


```

1./etc/profile: (不建议修改这个文件)全局(公有)配置,不管是哪个用户,登录时都会读取该文件。

2./etc/bashrc: 系统级环境变量. 全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。 

3.~/.bash_profile: 用户级环境变量.每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!

```



全部评论: 0

    我有话说:

    安全攻防系列 安全基础概念

      该系列记录学习极客时间–安全攻防技能30讲相关内容 安全的本质 安全的本质就是保护数据被合法地使用。 数据:应用最核心的东西;如用户信息、订单信息等等 合法:大到法律法规、业务

    Node实战篇:Express中间件request(四)

    Express 是一个路由和中间件 Web 框架,其自身只具有最低程度的功能:Express 应用程序基本上是系列中间件函数调用。

    Node模块之fs模块(六)

    屏幕快照 2017-08-08 上午10.53.21.png 第一部分 概述 Node.js 提供组类似UNIX(POSIX)标准的文件操作API,Node.js中操作文件的模块是fs(File

    Node实战篇:Express路由(三)

    Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供系列强大的特性,帮助你创建各种 Web 和移动设备应用。

    Node模块之Events模块(五)

    Node模块之Events模块(五)

    Node异步式I/O和异步式编程(三)

     Node.js 最大的特点就是异步式 I/O(或者非阻塞I/O)事件紧密结合的编程模式。 第一部分: I/O 1.阻塞I/O非阻塞I/O概念 1.1阻塞I/O(同步I/O) 线程在

    Nodejs视频服务器 切片ffmpeg

    Node 视频服务器 切片ffmpeg

    Node实战篇:Express--jade模板引擎(七)

    Jade(Pug) — Node Template Engine,一个高性能的模板引擎,专为 Node 而做......

    NodeJs 面试

    来源:https://github.com/ElemeFE/node-interview/tree/master/sections/zh-cn Js 基础问题 前端 Js 不同, 后端是直面

    2018年8个技巧来构建更好的Node.js应用程序

    2018年8个技巧来构建更好的Node.js应用程序

    Node 模块之 util URL queryString path(八)

    第一部分 util util是一个Node.js核心模块,util模块设计的主要目的是为了满足Node内部API的需求。其中包括:格式化字符串、对象的序列化、实现对象继承等常用方法。要使用util

    Nginx架构详解(二):nginx反向代理配置

    上次文章中我们已经安装了Nginx,这次就写下如何配置反向代理。

    Node.js 实战篇--微信支付系列(

    真正的无知不是知识的贫乏, 而是拒绝获取知识!——波普尔 (哲学家 思想家)鉴于微信支付文档内容详实

    Python 基础系列-- 【1】

    人生苦短,我用 Python —— Life is short, you need Python

    Mac安装VM虚拟机/Centos7配置使用

    让你的Mac拥有多个windows虚拟桌面!

    Node.js 实战篇--微信支付系列(二)

    接上篇首先我们看下整体上微信小程序的开发流程图

    为什么要使用 Node.js?这几点你必须知道!

    经过这几年的发展,前端普遍进入了技术深水区,只会Web页面开发已经难以满足企业的需求,Node逐渐成为了刚性技能。 但Node在业务上的使用还没有那么普及,有的时候想用老板还不同意,本文将从4个角度

    NodeJS 10.5.0 中的线程:实用介绍

    几天前,Node.js版本10.5.0发布,其中包含的主要功能之一是添加了线程支持。

    nvm常见配置问题

      本文涉及使用nvm时候 常见的三个问题 zsh: command not found: npm curl: (7) Failed to connect to raw.githubusercontent.com ...