Web前端Node.js专题前端开发那些事

Nodo.js :十问十答

2016-11-06  本文已影响116人  caoleic

问:什么是Nodo.js?###

答:Node.js 是基于Google V8 引擎的JavaScript 运行环境,使用事件驱动非阻塞式I/O的模型而得以轻量和高效,非常适合在分布式设备上运行数据密集的实时应用。


问:怎么学习Node.js?###

答:

  1. www.nodejs.org 关注Node.js的版本升级,新特性的加入,重要bug 的修复;
  2. www.npmjs.com Node.js模块社区;
  3. www.github.com 开源平台;
  4. 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?###

答:

  1. 下载 Git bash 安装;
  2. 下载 Node.js 安装;
  3. 配置环境变量,例:Win8右键左下角小磁块-系统-高级系统设置-系统变量-Path-编辑,在其后追加Node.js 的安装路径;


    配置环境变量
  4. 测试是否安装成功,打开Git或命令行,输入node -v、npm -v返回版本号即安装成功。


    测试安装是否成功

启动一个Web服务器###

  1. 新建工作目录-新建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}/'); });

  1. 打开命令行,切换到工作目录,输入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模块的分类###

  1. 核心模块
  2. 文件模块
  3. 第三方模块

模块的流程###

创建模块-导出模块-加载模块-使用模块

上一篇下一篇

猜你喜欢

热点阅读