- 稳定性版本
版本的小数位,偶数为稳定版本,奇数为非稳定版本,稳定版本中已经发布的 API 是不会修改的。
- cmd 命令行操作
Node 服务器中有全局变量 process
浏览器中有 window
- 模块化输入输出
exports 输出
require 输入
- url
url.parse
> url.parse('https://www.huangyuhong.cn:8080/class/list?name=now&type=slit') Url { protocol: 'http:', slashes: true, auth: null, host: 'www.huangyuhong.com:8080', port: '8080', hostname: 'www.huangyuhong.com', hash: null, search: '?name=now&type=slit', query: 'name=now&type=slit', pathname: '/class/list', path: '/class/list?name=now&type=slit', href: 'https://www.huangyuhong.cn:8080/class/list?name=now&type=slit' }
> url.parse('https://www.huangyuhong.cn:8080/class/list?name=now&type=slit','true') Url { protocol: 'http:', slashes: true, auth: null, host: 'www.huangyuhong.com:8080', port: '8080', hostname: 'www.huangyuhong.com', hash: null, search: '?name=now&type=slit', query: { name: 'now', type: 'slit' }, pathname: '/class/list', path: '/class/list?name=now&type=slit', href: 'https://www.huangyuhong.cn:8080/class/list?name=now&type=slit' }
> url.resolve('http://example.com/', '/one');
// 'http://example.com/one'
- querystring – 查询字符串
const querystring = require('querystring');
querystring.stringify(obj[, sep[, eq[, options]]])
该方法通过遍历给定的 obj 对象的自身属性,生成 URL 查询字符串。
querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' }); // 返回 'foo=bar&baz=qux&baz=quux&corge=' querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':'); // 返回 'foo:bar;baz:qux'
querystring.parse(str[, sep[, eq[, options]]])
该方法会把一个 URL 查询字符串 str 解析成一个键值对的集合。
sep 默认是 &
querystring.parse('foo=bar&abc=xyz&abc=123') { foo: 'bar', abc: ['xyz', '123'] }
querystring.escape(str)
对给定的 str 进行 URL 编码。 该方法是提供给 querystring.stringify() 使用的,通常不直接使用。
querystring.unescape(str)
对给定的 str 进行解码。
- http
http.createServer([options][, requestListener])
requestListener
是一个自动添加到'request'
事件的方法。
var http = require('http') http.createServer(function(req,res) { res.writeHead(200,{'Content-Type':'text/plain'}) res.write('hello') res.end() }).listen(2500)
打开浏览器,输入网址,展示如下图
用到的语法:
response.writeHead(statusCode[, statusMessage][, headers])
发送一个响应头给请求。 状态码是一个三位数的 HTTP 状态码,如 404。 最后一个参数 headers 是响应头。 第二个参数 statusMessage 是可选的状态描述。
response.setHeader()
设置的响应头会与 response.writeHead()
设置的响应头合并,且 response.writeHead()
的优先。
response.write(chunk[, encoding][, callback])
如果该方法被调用且 response.writeHead()
没有被调用,则它会切换到隐式响应头模式并刷新隐式响应头。
该方法会发送一块响应主体。 它可被多次调用,以便提供连续的响应主体片段。
server.listen()
开启HTTP服务器监听连接。
http.get(url[, options][, callback])
http.get(url, function(res) { var html = '' res.on('data', function(data) { html += data }) res.on('end', function() { console.log(html); }) }).on('error', function(err) { console.log('err: ' + err); })
http.request(options[, callback])
http.request(url[, options][, callback])
Node.js 为每台服务器维护多个连接来进行 HTTP 请求。 该函数允许显式地发出请求。
onst postData = querystring.stringify({ 'msg' : 'Hello World!' }); const options = { hostname: 'www.google.com', port: 80, path: '/upload', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': Buffer.byteLength(postData) } }; const req = http.request(options, (res) => { console.log(`状态码: ${res.statusCode}`); console.log(`响应头: ${JSON.stringify(res.headers)}`); res.setEncoding('utf8'); res.on('data', (chunk) => { console.log(`响应主体: ${chunk}`); }); res.on('end', () => { console.log('响应中已无数据。'); }); }); req.on('error', (e) => { console.error(`请求遇到问题: ${e.message}`); }); // 写入数据到请求主体 req.write(postData); req.end();
- events
var eventEmitter = require('events').EventEmitter
emitter.on(eventName, listener)
添加事件监听
server.on('connection', (stream) => { console.log('已连接'); });
emitter.removeAllListeners([eventName])
删除所有事件
emitter.removeListener(eventName, listener)
删除某个监听函数,(需要是定义的 function 才能删除)
function give(who) { console.log('give1 ' + who); } life.on('want', give) life.removeListener('want', give)
emitter.listenerCount(eventName)
获取某个事件的监听器个数
EventEmitter.defaultMaxListeners
设置允许使用的监听器个数,默认一般是10个
emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.getMaxListeners()
获取允许的个数
- 其它:
GitHub 搜索源码快捷键 T