Node.js 教程
http://www.runoob.com/nodejs/nodejs-tutorial.html
- Node.js 是运行在服务端的 JavaScript
- Node.js REPL(Read Eval Print Loop:交互式解释器) 像命令行程序(cmd.exe)
- NPM是包管理工具,上传自己的包或下载别人的包
- Node.js提供的库函数,几乎都支持回调。(函数最后一个参数就是回调函数参数。)
- 用EventEmitter类来支持事件(Event), eventEmitter.on来绑定事件,eventEmitter.emit来触发事件。
- 模块: 一个 Node.js 文件就是一个模块,用exports导出。
-
//hello.js function Hello() { var name; this.setName = function(thyName) { name = thyName; }; this.sayHello = function() { console.log('Hello ' + name); }; }; module.exports = Hello;
- 路由:得到路径后,根据路径后应该做路由处理,具体看教程网址。
- Express 简介: Web应用框架。 (没必要自己从头写,使用前需: $ npm install express)
- RESTful API: 采用JSON 数据格式,对数据增删改查。从下面的例子中也看到了Express的用法。
-
var express = require('express'); var app = express(); var fs = require("fs"); app.get('/listUsers', function (req, res) { fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { console.log( data ); res.end( data ); }); }) //添加的新用户数据 var user = { "user4" : { "name" : "mohit", "password" : "password4", "profession" : "teacher", "id": 4 } } app.get('/addUser', function (req, res) { // 读取已存在的数据 fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { data = JSON.parse( data ); data["user4"] = user["user4"]; console.log( data ); res.end( JSON.stringify(data)); }); }) app.get('/:id', function (req, res) { // 首先我们读取已存在的用户 fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { data = JSON.parse( data ); var user = data["user" + req.params.id] console.log( user ); res.end( JSON.stringify(user)); }); }) var id = 2; app.get('/deleteUser', function (req, res) { // First read existing users. fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { data = JSON.parse( data ); delete data["user" + 2]; console.log( data ); res.end( JSON.stringify(data)); }); }) var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("应用实例,访问地址为 http://%s:%s", host, port) })
- 多进程: Node 提供了 child_process 模块来创建子进程
// support.js 文件代码:
console.log("进程 " + process.argv[2] + " 执行。" );
//master.js 文件代码:
const fs = require('fs');
const child_process = require('child_process');
for(var i=0; i<3; i++) {
var workerProcess = child_process.exec('node support.js '+i, function (error, stdout, stderr) {
if (error) {
console.log(error.stack);
console.log('Error code: '+error.code);
console.log('Signal received: '+error.signal);
}
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
});
workerProcess.on('exit', function (code) {
console.log('子进程已退出,退出码 '+code);
});
}