离开express、koa、egg
你还会利用原生node写后端的http服务吗?
这里有一个例子,原生node起http服务。
返回了静态页面文件、字符串拼接的html,json对象和优化404。
做个备忘吧!
import { createServer } from "http";
import path from 'path';
import { __dirname } from './utils/index.js'
const httpServer = createServer((req, res) => { // 创建一个http服务
const { url } = req;
if (url === '/') { // 返回现有的静态页面
const file = path.join(__dirname, '../views/index.html');
const data = readFileSync(file);
res.end(data);
} else if (url === '/test') { // 返回手写的html
res.writeHead(200, { 'Content-Type': 'text/html;charset=utf-8' })
res.write('<h1>你好,这是你人生中创建的第一个服务器</h1>');
res.end('<h1>响应结束!!!</h1>'); // 响应结束
} else if (url === '/json') { // 返回json
res.writeHead(200, 'OK', { 'Content-type': 'application/json' });
res.end(JSON.stringify({
msg: '你好啊'
}));
} else { // 自定义404
es.writeHead(200, { 'Content-Type': 'text/html;charset=utf-8' })
res.end('<h1>你来到了一片荒无人烟之处!</h1>');
}
});
httpServer.listen(3000, () => { console.log('服务已经启动: http://127.0.0.1:3000'); }); // 启动http服务
因为__dirname
是commonjs规范内置的变量,当package.json的"type":"module"
时,便无法找到。
不过有补救的办法
import { fileURLToPath } from 'url'
import path from 'path';
import os from 'os'
const __filenameNew = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filenameNew);
标签:原生,__,httpServer,const,nodejs,res,http,path,import
From: https://www.cnblogs.com/dingshaohua/p/18194342