Node学习笔记(一)

1. node的特点:

Node.js 不是一种独立的语言,与 PHP、Python、Perl、Ruby 的“既是语言也是平台”
不同。Node.js 也不是一个 JavaScript 框架,不同于 CakePHP、Django、Rails。Node.js 更不
是浏览器端的库,不能与 jQuery、ExtJS 相提并论。Node.js 是一个让 JavaScript 运行在服务
端的开发平台

Node.js 在执行的过程中会维护一个事件队
列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送
到事件队列,等待程序进程进行处理。

Node.js 的异步机制是基于事件的,所有的磁盘 I/O、网络通信、数据库查询都以非阻塞的方式请求,返回的结果由事件循环来处理。

node实现以非阻塞的I/O事件循环机制和文件与网络I/O库为中心,一切以V8 JavaScript引擎为基础。

采用了单线程、异步式I/O、事件驱动式的程序设计模型

   node的缺点:node无法实现桌面GUI应用。

2.“中间件”:易于挂载和调用的模块。

3. ejs模板的一些标签

   <%  code   %>  用于控制逻辑的不被缓存的代码

 <%=   code  %> 使用默认转义的html代码

<%-   code  %>未转义的被缓存代码

4.commonJS

CommonJS 试图定义一套普通应用程序使用的API,从而填补 JavaScript 标准库过于简单的不足。CommonJS 的终极目标是制定一个像 C++ 标准库一样的规范,使得基于 CommonJS API 的应用程序可以在不同的环境下运行,就像用 C++ 编写的应用程序可以使用不同的编译器和运行时函数库一样。

CommonJS 规范包括了模块(modules)、包(packages)、系统(system)、二进制(binary)、控制台(console)、编码(encodings)、文件系统(filesystems)、套接字(sockets)、单元测试(unit testing)等部分。

5.node 的 REPL 模式 (read eval print loop)即输入—求值—输出循环

6.node实时刷新小技巧:

因为 Node.js 只有在第一次引用到某部份时才会去解析脚
本文件,以后都会直接访问内存,避免重复载入

supervisor 可以帮助你实现这个功能,它会监视你对代码的改动,并自动重启 Node.js。
使用方法很简单,首先使用 npm 安装 supervisor(windows):
$ npm install -g supervisor

如果你使用的是 Linux 或 Mac,直接键入上面的命令很可能会有权限错误。原因是 npm
需要把 supervisor 安装到系统目录,需要管理员授权,可以使用 sudo npm install -g
supervisor 命令来安装。
接下来,使用 supervisor 命令启动 app.js:
$ supervisor app.js

6.同步式 I/O 和异步式 I/O 的特点

同步式 I/O(阻塞式):                                         异步式 I/O(非阻塞式)

利用多线程提供吞吐量                                           单线程即可实现高吞吐量
通过事件片分割和线程调度利用多核CPU              通过功能划分利用多核CPU
需要由操作系统调度多线程使用多核 CPU             可以将单进程绑定到单核 CPU
难以充分利用 CPU 资源                                         可以充分利用 CPU 资源
内存轨迹大,数据局部性弱                                    内存轨迹小,数据局部性强
符合线性的编程思维                                               不符合传统编程思维

7.模块的单次加载

require 不会重复加载模块,也就是说无论调用多少次 require,获得的模块都是同一个

对比: module.exports = Hello;    和   exports.Hello = Hello; 

exports 本身仅仅是一个普通的空对象,即 {},它专门用来声明接口,本
质上是通过它为模块闭包的内部建立了一个有限的访问接口。因为它没有任何特殊的地方,
所以可以用其他东西来代替

原文地址:https://www.cnblogs.com/lzcblog/p/10203537.html