文章目录
  1. 1. node
  2. 2. npm
  3. 3. 其他
    1. 3.1. node 中的模板加载
    2. 3.2. 杂谈1
    3. 3.3. 杂谈2
  4. 4. 参考

node

Node:Evented I/O for V8 Javascript
Ryan Dahl 给 Chrome V8 Javascript 引擎添加了一组友好的 JavaScript API,并让 V8 能够独立运行于多个平台上(暂且把 V8 看做是 js 虚拟机),这样 js 也能写出跨平台非浏览器页面的应用。

Node.js 特性(单线程异步编程模型)
1.单线程:编程复杂性更容易控制
2.事件驱动的异步编程:非阻塞 IO,更高并发量的网络程序
3.Google V8

适用场景:高并发小数据(实时数据统计、Restful API、Twitter 的 tweet 处理队列)
“Node.js”是官方称呼,交流多用node简称。

npm

npm 是 node 的内置功能,目的:让 node 具有很好的扩展性。
npm:用来管理依赖模块
node 本身只提供实现应用程序的精简api集合。

为了让 node 能提供更强大的功能,Ryan 借鉴了 Perl、Python 等语言的经验,提出了 NPM(Node Packaged Module,简称模块)的概念,并创建了一整套的模块发布、安装、依赖管理机制。
node 后来的成功,也是所有 node 社区成员共同努力的结果,npm 起了关键的作用。没有 npm 就没有近日风靡全球的 node,庞大丰富的 npm 库。可见npm 在 node 生态中的重要地位。

我们可以看到大家提交的 npm 库。可以通过两个重要榜单去看模板的质量:最多依赖模块和最受欢迎模块
通过看榜单,可以对 node 有个概况的了解,以最多依赖模板为例:
1.1698 underscore util库,Backbone.js 项目的一部分
2.1033 request,Http request method
3.1002 async,用同步的代码风格写异步代码
4.935 coffee-script
5.832 express,轻量Web App Framework,基于connect
6.812 optimist,命令行辅助
7.634 commander,命令行辅助
8.571 colors,命令行着色辅助
9.436 uglify-js,压缩
10.421 connect,Http Server中间件库

有各种 util、app 框架、编译器等
Backbone.js、request、express、connect

其他

node 中的模板加载

node 中的模块分类:
1.核心模块(Core Module):node 内置模块,通常存在于 node 安装路径 lib 目录下
2.第三方模块:

require 是 node 中加载模块的全局函数,涉及到 node.js 的模块机制。
node 如何寻找到对应模块的呢?规则是:
1.路径为Y的module中使用 require(X)
2.如果是X为核心模块,命中则结束
3.如果X以‘./’、‘/’、‘../’开头时,加载第三方模块,命中则结束
4.查找失败抛出异常

杂谈1

Node 是一个使用了 CommonJS 风格的代码加载。

接着:都提供了什么
1.NPM:node.js package management
2.命令行工具,管理你的项目依赖的那堆东西
3.Node和NPM之间的联系:文件夹 node_modules、package.json
4.一个注册工具,几乎每一个来自外部的 Node.js package

最后:常见任务的流行的 package
1.对项目有用的工具:
2.单元测试:Mocha
3.web框架:Express.js、Koa
4.模板引擎:Jade、EJS
5.网络:Connect、Request、socket.io
6.命令行交互:参数解析器(Optimist、Commander)、Colors(美化CLI输出)

杂谈2

说开了 NodeJs 只是 JavaScript 作为 CommonJS 的实现,使得 JavaScript 在服务器端有了用武之地。所以 NodeJs 从语法层面来说还是 JavaScript。

但是与客户端的 JavaScript 又有所区别。需要注意:
1.要有js基础、理解事件模型、了解js的语法和特性、理解js的面向对象编程
2.代码组织方式:包机制、require、exports
3.基本的操作系统、数据库(尤其非关系型数据库)、Web编程、HTTP等网络通信

node 使用 javascript 作为其应用层编程语言,所以 node 程序的语法和 js 无差。
console.log 和浏览器中使用习惯一致(只是打到了标准输出-命令界面)

参考

Node.js的系列文 来自博客园,Luics的博客,有概况挺全面,质量不错
如何开始学习Node.js 来自stackoverflow,里面对node做了简要介绍,并对资料的提供层层递进
怎样有效地学习Node.js 来自知乎,多看文档、代码、代码。。。

文章目录
  1. 1. node
  2. 2. npm
  3. 3. 其他
    1. 3.1. node 中的模板加载
    2. 3.2. 杂谈1
    3. 3.3. 杂谈2
  4. 4. 参考