你需要先学习的
1)什么是Node.js?(戳这里:《【Node.js】一篇文章带你彻底理解Node.js及其特性》)
2)安装Node.js。(node -v
如果得到版本号,则安装成功)
js_9">Node.js模块化
每个文件就是一个模块(module),有自己独立的作用域。也就是说,在一个文件里定义的变量、函数、类都对其他文件不可见。
你可能会有疑问,一个js文件对另一个js文件不可见,这不是废话吗?注意,这里我们讨论的后端的js,而不是前端的js。
虽然一个模块对外界不可见,但我们可以通过 exports 向外进行暴露,并在另一个模块中使用 require 进行加载。下面进行演示:
javascript">demo1.js ----------------------------------------------------------------------------------
exports.add = function (a, b) {
return a + b;
}
javascript">demo2.js ----------------------------------------------------------------------------------
var demo = require("./demo1");
console.log(demo.add(100, 200));
js已经脱离了前端,所以我们不依托html文件即可演示js文件:
>>> node demo2.js
module.exports和exports有什么区别?(⭐️)
exports用于暴露属性和方法,module.exports用于暴露对象。
但是,二者尽量不要混用。如果先使用exports,再使用module.exports,会使得 exports 上暴露的属性或者方法失效。原因在于,exports 仅仅是 module.exports 的一个引用,修改 module.exports 就是修改了被引用的本体。
web_46">创建web服务器
web服务端开发还是这几步,只不过实现语言是JavaScript而已:
① 创建服务器
② 设置监听端口
③ 接收请求 & 业务逻辑处理 & 返回响应
下面进行演示,你会发现,服务器的搭建竟然如此简单:
// 引入node.js内置模块
var http = require("http");
// 创建并监听服务器
http.createServer(function (request, response) {
// 响应行/响应头
// 参数1:响应行的信息之一,响应状态吗,200表示成功
// 参数2:响应头的信息之一,内容类型为纯文本
response.writeHead(200, {"Content-Type": "text/plain"});
// 响应体
response.write("Loli suuuuuuuuuki!!!");
response.end("Bye~");
}).listen(8888);
>>> 访问地址:http://localhost:8888
web_85">获取web请求参数
上面说过,web服务端开发无非就是获取请求参数、设置响应内容(不考虑视图跳转的话)。一切在node.js中都是这么简单:
javascript">// 引入node.js内置模块
var http = require("http");
var url = require("url");
// 创建并监听服务器
http.createServer(function (request, response) {
// 响应行/响应头
// 参数1:响应行的信息之一,响应状态吗,200表示成功
// 参数2:响应头的信息之一,内容类型为纯文本
response.writeHead(200, {"Content-Type": "text/plain"});
// 解析请求url
var params = url.parse(request.url, true).query;
// 设置响应
for (var k in params) {
response.write(k + " : " + params[k]);
response.write("\n");
}
response.end("");
}).listen(8888);
>>> 访问地址:http://localhost:8888/?name=Alice&age=12
从客户端发出请求
回想我们对Java后台开发,似乎一直是关注服务端的编写。至于客户端?那不是前端人员的工作吗?至于请求,那不是在前端写个url访问后台资源不就行了吗?
node.js可以让你开开眼界。
node.js的特点是异步I/O、事件驱动、回调函数。所以,在客户端的请求不仅仅是设置一个url这么简单,还可以设置收到响应后的回调。下面还是看演示:
javascript">// 引入node.js内置模块
var http = require("http");
// 组成请求URL
var option = {
host: "localhost",
port: "8888",
path: "/index.html"
}
// 响应后的回调
var callback = function (response) {
var body = "";
// 不断把响应数据加到一起
response.on("data", function (data) {
body += data;
});
// end是响应结束的标志
response.on("end", function () {
console.log(body);
});
}
// 客户端向服务端发出请求
var req = http.request(option, callback);
req.end();
JS Saikou!!!