Node.js 安装包:https://nodejs.org/en/download/。Node配置:https://www.runoob.com/nodejs/nodejs-install-setup.html
npm和cnpm安装步骤:https://blog.csdn.net/wjnf012/article/details/80422313
nodejs
一、用 Node 创建 Web 服务器
1.server.js
var http=require('http');
var fs=require('fs');
var url=require('url');
//创建服务器
http.createServer(function(request,response){
//解析请求,包括文件名
var pathname=url.parse(request.url).pathname;
//输出请求的文件名
console.log("Request for"+pathname+"received");
//从文件系统中读取请求的文件内容
fs.readFile(pathname.substr(1),function(err,data){
if(err){
console.log(err);
//HTTP状态码:404:NOT FOUND
//Content Type:text/html
response.writeHead(404,{'Content-Type':'text/html'});
}else{
//HTTP状态码:200:OK
//Content Type:text/html
response.writeHead(200, {'Content-Type': 'text/html;charset="utf-8"'});
//响应文件内容
response.write(data.toString());
}
//发送响应数据
response.end();
});
}).listen(8080);
//控制台会输出以下信息
console.log('Server running at http://127.0.0.1:8080/');
2.index.html
<!DOCTYPE html>
<html>
<head>
<mate charset="utf-8">
<title>测试测试(runoob.com)</title>
</head>
<body>
<h1>标题-2020-10-14-周3</h1>
<p>段落-271.</p>
</body>
</html>
3.打开cmd命令行执行server.js文件
4.打开浏览器输入127.0.0.1:8080/index.html
二、用 Node 创建 Web 客户端
client.js
var http = require('http');
// 用于请求的选项
var options = {
host: 'localhost',
port: '8080',
path: '/index.html'
};
// 处理响应的回调函数
var callback = function(response){
// 不断更新数据
var body = '';
response.on('data', function(data) {
body += data;
});
response.on('end', function() {
// 数据接收完成
console.log(body);
});
}
// 向服务端发送请求
var req = http.request(options, callback);
req.end();
打开命令行执行client.js文件
三、Node.js 回调函数
第一个实例在文件读取完后才执行程序。 第二个实例我们不需要等待文件读取完,这样就可以在读取文件时同时执行接下来的代码,大大提高了程序的性能。
input.txt
阻塞代码实例 main.js
var fs=require("fs");
var data=fs.readFileSync('input.txt');
console.log(data.toString());
console.log("程序执行结束!");
执行main.js
非阻塞代码实例 main1.js
var fs=require("fs");
fs.readFile('input.txt',function(err,data){
if(err)return console.error(err);
console.log(data.toString());
});
console.log("程序执行结束!");
执行main1.js
var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
四、Node.js 事件循环
事件驱动程序
main.js
// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
// 创建事件处理程序
var connectHandler = 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