第一部分 NodeJs 初识 不知了了几行代码是否可以引起你的兴趣
// service.js var http = require("http"); http.createServer(function(req,res){ res.write("Hello NodeJs"); res.end(); }).listen(8888);
1 Nodejs是什么?
Node.js是一个让 JavaScript 运行在服务端的开发平台 ;
Node.js可以作为服务器向用户提供服务,它跳过了 Apache、Nginx 等 HTTP 服务器 ,直接面向前端开发。
优秀的第三方包管理器(node package manager,npm )
2 Nodejs不是什么?
Node.js 不是一种独立的语言 ,
Node.js 不是一个 JavaScript 框架 ;
3 Nodejs能做什么? 具有复杂逻辑的网站; 基于社交网络的大规模 Web 应用; Web Socket 服务器; TCP/UDP 套接字应用程序; 8 命令行工具; 交互式终端程序; 带有图形用户界面的本地应用程序; 单元测试工具; 客户端 JavaScript 编译器。
4 Nodejs 原理 Node.js 是基于Chrome V8引擎 构建的,由事件循环(Event Loop)分发 I/O 任务,最终工作线程(Work Thread)将任务丢到线程池(Thread Pool)里去执行 ,而事件循环只要等待执行结果就可以了。
核心概念
* Chrome V8 是 Google 发布的开源 JavaScript 引擎, 采用 C/C++ 编写,在 Google 的 Chrome 浏览器中被使用。 Chrome V8 引擎可以独立运行,也可以用来嵌入到 C/C++ 应用程序中执行。 * Event Loop 事件循环(由 libuv 提供) * Thread Pool 线程池(由 libuv 提供)
重点: 整体思路梳理
重点: 整体思路梳理
重点: 整体思路梳理
1. Chrome V8 是 JavaScript 引擎 2. Node.js 内置 Chrome V8 引擎,所以它使用的 JavaScript 语法 3. JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事 4. 单线程就意味着,所有任务需要排队,前一个任务结束, 才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。 5. 如果排队是因为计算量大,CPU 忙不过来,倒也算了, 但是很多时候 CPU 是闲着的,因为 I/O 很慢,不得不等着结果出来,再往下执行。 6. CPU 完全可以不管 I/O 设备,挂起处于等待中的任务,先运行排在后面的任务, 将等待中的 I/O 任务放到 Event Loop 里,由 Event Loop 将 I/O 任务放到线程池里, 只要有资源,就尽力执行。
重点理解如下这句话
Nodejs接受任务是单线程,执行任务是多线程。
思路如下:
Nodejs内置V8,采用Js语言,是单线程的,故接受任务是单线程,无需进程/线程切换,非常高效
EventLoop派发任务给线程池里的I/O去执行,故是多线程执行任务。
第二部分 配置开发环境 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
2 下载不同版本 now (io.js) v2.0 : v2.x | | : | v0.10.x /--------------:-----------------\ Node.js 2.0 ____|____/ : \______|_____ \ : / \--------------:-----------------/ | | : | | (node.js) v0.12.x : v0.13.x v0.14.x
对于nodejs与io.js的版本区别以及渊源,建议大家参考Node.js与io.js那些事儿
#罗列可以安装的版本 $ nvm ls-remote . . . v6.4.0 v6.5.0 v6.6.0
3 下载版本 #为了演示,选择了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)
4 切换版本 $ 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)
5 常用命令 # 下载 $ nvm install *** #切换版本 $ nvm use 版本号 #罗列下载的版本 $nvm ls # 罗列远程版本 $nvm ls-remote #设置默认的版本 $nvm alias default 版本
第三部分 注意事项
当关闭终端在此打开时, 输入 nvm 会提示找不到, 解决办法: 在.bash_profile
文件中添加source ~/.bashrc
;即可;
nvm安装 的路径是: ~/.nvm
;
使用nvm安装node, 会安装在该路径 下: ~/.nvm/versions/node
;
附加
Mac 环境变量配置
1./etc/profile: (不建议修改这个文件)全局(公有)配置,不管是哪个用户,登录时都会读取该文件。 2./etc/bashrc: 系统级环境变量. 全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。 3.~/.bash_profile: 用户级环境变量.每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!