基础
URL
// 1. 引入 url 模块
var url = require("url");
// 2. 引入 http 模块
var http = require("http");
// 3. 用 http 模块创建服务
/**
* req 获取 url 信息 (request)
* res 浏览器返回响应信息 (response)
*/
http.createServer(function (req, res) {
// 4. 获取服务器请求
/**
* 访问地址是:http://localhost:3000/?userName=jsliang&userAge=23
* 如果你执行 console.log(req.url),它将执行两次,分别返回下面的信息:
* / ?userName=jsliang&userAge=23
* / /favicon.ico
* 这里为了防止重复执行,所以排除 req.url == /favicon.ico 的情况
*/
if(req.url != "/favicon.ico") {
// 5. 使用 url 的 parse 方法
/**
* parse 方法需要两个参数:
* 第一个参数是地址
* 第二个参数是 true 的话表示把 get 传值转换成对象
*/
var result = url.parse(req.url, true);
console.log(result);
/**
* Url {
* protocol: null,
* slashes: null,
* auth: null,
* host: null,
* port: null,
* hostname: null,
* hash: null,
* search: '?userName=jsliang&userAge=23',
* query: { userName: 'jsliang', userAge: '23' },
* pathname: '/',
* path: '/?userName=jsliang&userAge=23',
* href: '/?userName=jsliang&userAge=23' }
*/
console.log(result.query.userName); // jsliang
console.log(result.query.userAge); // 23
}
// 设置 HTTP 头部,状态码是 200,文件类型是 html,字符集是 utf8
res.writeHead(200, {
"Content-Type": "text/html;charset=UTF-8"
});
// 往页面打印值
res.write('<h1 style="text-align:center">Hello NodeJS</h1>');
// 结束响应
res.end();
}).listen(3000);
crypto
使用crypto.createHash()的方法可以得到哈希的实例,提供的算法实现包括md5、sha1、sha256、sha512、ripemd160。在下面的例子中,hash.update()加密字符串,使用hash.digest()输出字符串。
var ctypto = require("crypto");
// 使用md5进行加密,还可以使用sha1、sha256、sha512、ripemd160方法进行加密
var hash = crypto.createHash("md5");
// 使用二进制数据流将huangdanhua字符串进行加密
// 同样也可以直接使用字符串,两者输出的结果是一样的
// 但是在不同的场景下选择合适的传递方式
hash.update(new Buffer("huandanhua", "binary"));
// 返回hash对象加密后的字符串
var encode = hash.digest("hex");
console.log(encode)
hash.digest这个函数可以传入3个类型的参数hex(十六进制)、binary(二进制)或者base64输出加密后的字符串,默认参数是binary。
官网介绍在调用digest方法后,hash对象将不能再使用,也就是会清空,
理解Buffer
Buffer的转换
Buffer的拼接
var fs = require("fs");
var iconv = require("iconv-lite")
var rs = fs.createReadStream("test.md");
var chunks = [];
var size = 0;
rs.on("data", function(chunk) {
chunks.push(chunk);
size += chunk.length;
})
rs.on("end", function() {
var buf = Buffer.concat(chunks, size);
var str = iconv.decode(buf, 'utf8');
console.log(str)
})