Node相关
| crypto模块:提供通用的加密和哈希算法。
| 服务器案例(模块http、path、fs的运用):
1  | 
  | 
| pipe
1  | var fs = require("fs");  | 
| stream 是node.js提供的仅在服务端可用的模块;
基于事件的、异步的方式:
1  | var fs = require("fs");  | 
| 同步的写文件:fs.writeFileSync();
| 写文件:fs.writeFile("output.txt", data, function(x){}),如果data是String,默认
  编码是UTF-8;如果传入的是Buffer,则写入的是二进制文件;回调函数只关心成功与否。
| 同步读文件使用fs.readFileSync()方法,不接受回调函数,函数直接返回结果。
通过try...catch来捕获同步获取文件时的错误。
| Buffer对象可以和String做转换:
1  | // Buffer -> String  | 
| fs模块
- 读取文件编码是
utf-8的文件;1
2var fs = require("fs");
fs.readFile("hello.js", "utf-8", console.log); - 读取二进制文件,不传入文件编码,回调函数将返回一个Buffer对象。
1
fs.readFile("hello.js", console.log);
 
| 在需要使用回调函数的地方,传入console.log,可以打印出回调函数的参数信息。
| 建议始终使用module.exports的方式,而不是省写的exports;
| 如果要输出一个键值对象{},可以利用exports这个已经存在的空对象{},
  并继续在上面添加新的键值;
var exported = load(module.exports, module);
因为对exports重新赋值,对module.exports没有任何副作用。
如果要输出一个函数或数组,必须直接对module.exports对象赋值;
| 实现“模块”功能的奥妙就在于JavaScript是一种函数式编程语言,它支持闭包。
| 引入的对象具体是什么,取决于引用模块输出的变量。(输出的变量可以是任意对象、函数、数组等等)
| 一个模块想要对外暴露变量(函数也是变量),可以用module.exports = variable;;
  一个模块想要引用其他模块暴露的变量,用var ref = require('module_name')就拿到了引用模块变量;
| 使用模块的好处:
- 提高了代码的可维护性;
 - 代码重用;
 - 避免了函数名和变量名冲突;
 
| 在Node环境中,一个.js文件就称之为一个模块(module)。
| 让node直接为所有js文件都开启严格模式:
1  | node --use_strict myFile.js  | 
http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000