问:什么是Nodo.js?###
答:Node.js 是基于Google V8 引擎的JavaScript 运行环境,使用事件驱动、非阻塞式I/O的模型而得以轻量和高效,非常适合在分布式设备上运行数据密集的实时应用。
问:怎么学习Node.js?###
答:
- www.nodejs.org 关注Node.js的版本升级,新特性的加入,重要bug 的修复;
- www.npmjs.com Node.js模块社区;
- www.github.com 开源平台;
- www.stackoverflow.com 技术问答社区。
问:Node.js如何选择版本?###
答:Node.js 偶数位为稳定版本,如:-0.6.x、-0.8.x、-0.10.x;奇数位为不稳定版本,如:-0.7.x、-0.9.x、-0.11.x 。
问:Windows如何安装Node.js?###
答:
- 下载 Git bash 安装;
- 下载 Node.js 安装;
-
配置环境变量,例:Win8右键左下角小磁块-系统-高级系统设置-系统变量-Path-编辑,在其后追加Node.js 的安装路径;
-
测试是否安装成功,打开Git或命令行,输入node -v、npm -v返回版本号即安装成功。
启动一个Web服务器###
- 新建工作目录-新建server.js文件
文件内容
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log('Server running at http://${hostname}:${port}/'); });
- 打开命令行,切换到工作目录,输入node server.js,打开浏览器访问http://127.0.0.1:3000/,页面中返回Hello World 。
浏览器执行环境与Node.js执行环境的异同###
相同点:都能执行普通的js代码;
不同点:全局变量不同,例如:window,document等只能在浏览器中取到,而process只能在node中取到,Node.js 本质上是一个js的运行环境,其封装和底层的处理赋予了更强的能力。
Node.js 的模块与Commonjs 的规范###
JS天生缺少命名管理机制,来隔离实现不同功能的js片段,避免相互污染。
为了解决此问题,我们经常采用命名空间,把变量和函数限制在某个特定的作用域内。
不同于jQuery,commonjs是一套规范。包括modules模块、packages包、system系统、binary二进制、console控制、 encodings编码、sokets套接字、unit test单元测试。来约定js应该怎么来组织,应该怎么去编写。
首先是把这些执行不同任务的特定的代码块或文件,看做是一个独立的模块,每个模块可以看做是一个独立的作用域,但不是孤立的,可能存在依赖关系。
对于一个模块可能分成三个关键部分:定义、标识、引用。这种设计规范,不断成长壮大,对很多开源项目有很大影响。
nodejs和Couchdb就是对Commonjs的实现,而且规范和实现互为促进,形成一个良性的循环链。
nodejs借鉴了commonjs的这种模块组织理念,实现了一套模块管理系统。在nodejs里面每个js文件可以看做是一个独立的模块,在它里面不需要有命名空间。不必担心变量、方法的污染、隔离。
同时这些模块(或者说是文件)通过彼此的引入,可以组合起来形成一个更强大的模块(或者是功能包)。
我们安装nodejs时会自动安装npm这个包管理工具。通过npm包管理工具,我们可以往项目里面引入各种形形色色的功能模块。他们或简单或复杂,但每个都是独立的,完整的。
Node.js模块的分类###
- 核心模块
- 文件模块
- 第三方模块
模块的流程###
创建模块-导出模块-加载模块-使用模块