Node.js
创建 Node.js 应用
步骤一、引入required模块
我们使用require指令来载入http模块,并将实例化的HTTP赋值给变量http,实例如下:
var http = require("http");
步骤二、创建服务器
接下来我们使用http.createServer()方法创建服务器,并使用listen方法绑定8888端口。 函数通过request, response参数来接收和响应数据。
实例如下,在你项目的根目录下创建一个叫server.js的文件,并写入以下代码:
var http = require('http');
http.createServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 发送响应数据 "Hello World"
response.end('Hello World\n');
}).listen(8888);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
以上代码我们完成了一个可以工作的HTTP服务器。
使用node命令执行以上的代码:
node server.js
Server running at http://127.0.0.1:8888/
接下来,打开浏览器访问http://127.0.0.1:8888/,你会看到一个写着"Hello World”的网页。
分析Node.js的HTTP服务器:
- 第一行请求(require)Node.js自带的 http 模块,并且把它赋值给http变量。
- 接下来我们调用http模块提供的函数:createServer 。这个函数会返回 一个对象,这个对象有一个叫做listen的方法,这个方法有一个数值参数,指定这个HTTP服务器监听的端口号。
Node.js回调函数
node.js异步编程的直接体现就是回调
回调函数在任务完成后就会被调用
var fs=require('fs');
fs.readFile('input.txt',function(err,data){
if(err) return console.error(err);
console.log(data.toString());
});
console.log("程序执行结束!");
输出结果:
程序执行结束!
“input.txt的内容”
Node.js 事件循环
Node.js有多个内置的事件,我们可以通过引入events模块,并通过实例化EventEmitter类来绑定和监听事件,如下实例:
// 引入events模块
var events = require('events');
// 创建eventEmitter对象
var eventEmitter = new events.EventEmitter();
// 创建事件处理程序
var connectHandlder = function connected(){
console.log('连接成功。');
// 触发 data_received 事件
eventEmitter.emit('data_received');
}
// 绑定connection事件处理程序
eventEmitter.on('connection',connectHandler);
// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received',function(){
console.log('数据接收成功。');
});
//触发 connection 事件
eventEmitter.emit('connection');
console.log('程序执行完毕。');
执行以上代码可获得
$ node main.js
连接成功。
数据接收成功。
程序执行完毕。
Node应用程序是如何工作的?
创建一个 input.txt ,文件内容如下:
马嘉骏要开心
创建 main.js 文件,代码如下:
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
if (err){
console.log(err.stack);
return;
}
console.log(data.toString());
});
console.log("程序执行完毕");
结果如下:
PS F:\360MoveData\Users\Lenovo\Desktop\HelloNode> node call
马嘉骏要开心
程序执行结束
假如删除input.txt
PS F:\360MoveData\Users\Lenovo\Desktop\HelloNode> node call
fs.js:114
throw err;
^
Error: ENOENT: no such file or directory, open 'input.txt'
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
at startup (internal/bootstrap/node.js:283:19)
fs.readFile():
用于异步函数用于读取文件。
如果在读取文件过程中发生错误,错误err对象就会输出错误信息。
如果没有发生错误,readFile跳过err对象的输出,文件内容就通过回调函数输出
Node.js事件
Node.js文件处理
fs.unlink
删除文件
fs.mkdirSync(‘stuff’);
创建了一个stuff文件夹
fs.rmdirSync(‘stuff’);
删stuff
var fs = require('fs');
fs.mkdir('stuff',function(){
fs.readFile('input1.txt','utf8',function(err,data){
fs.writeFile('stuff/writeMe.txt',data,function(){
console.log('copy successfully');
})
})
});
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!