为了学习Node.js 开始做一个简单的小项目,静态服务器。
我们先在码云上新建一个项目,然后再克隆到本地。
然后呢,我们开始来写代码啦。
静态服务器,本质上,就是 HTTP 的请求与响应,客服端发送 HTTP 请求,服务端传一个HTTP 响应。
而这中间,需要我们来先了解 http 模块。
这是官方文档中http 模块部分 http://nodejs.cn/api/http.html
然后,可以看一下这个 https://nodejs.org/en/docs/guides/getting-started-guide/ (简单的web server,代码如下)
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
上面的代码,使用 http 模块的 createServer 创建了一个 http 服务器,然后传入的参数是一个函数,如下,这个函数会自动添加到 ‘request’ 事件。而res 和 req 都是流对象,而 res 是可写的流,因此可以用res.write() 和 res.end() 往流中写入内容。(可以先write() 多次最后 end() )。设置好了server,就可以监听地址和端口号,等着客户端发送请求。
好啦,下面我们自己试一下。
在项目根目录下的 src 下新建文件 app.js , 再在 src 下新建目录config ,在config 下新建文件 defaultConfig.js 。
defaultConfig.js 如下(也可以把 127.0.0.1 换成 localhost)
module.exports = {
hostname: '127.0.0.1',
port: 9527
}
然后,写app.js 如下
const http = require('http');
const conf = require('./config/defaultConfig');
const server = http.createServer((req,res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end("Hello World!");
});
server.listen(conf.port, conf.hostname, () => {
const addr = `http://${conf.hostname}:${conf.port}`;
console.log(`Server started at ${addr}`);
})
node 运行一下代码,就可以在浏览器访问了。
然后,我们再改一下 app.js ,如下。让它返回一个简单的html。注意 setHeader 中的值要变化。
const http = require('http');
const conf = require('./config/defaultConfig');
const server = http.createServer((req,res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');
res.write('<html>');
res.write('<body>');
res.write("Hello World!");
res.write('</body>');
res.end('</html>');
});
server.listen(conf.port, conf.hostname, () => {
const addr = `http://${conf.hostname}:${conf.port}`;
console.log(`Server started at ${addr}`);
})
然后,我们下载一个工具 supervisor ,它能够监听我们文件的变化然后自动重启服务器.
呃,前面忘了初始化项目了,因此项目里没有package.json.
现在,我们初始化项目,然后再下载第三方工具。
npm init
npm install
npm install supervisor -g
supervisor app.js