第一. 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信息,当用户登录时,该文件仅仅执行一次!
```
注意:本文归作者所有,未经作者允许,不得转载