node.js - 如何仅在 Nodejs 中编写与 app.get('/') 相同的功能
问题描述
我正在使用javascript
and构建应用程序node.js
。
当我想打开主页时,我会这样做express
:
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
这样,当我打开主页时,它会返回我index.html
但我想知道如何只用Nodejs
without做同样的事情express
。
我想我需要先创建服务器,然后index.html
在请求时以某种方式返回页面/
,尽管我不确定这种方法是否正确。
const server = http.createServer((req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
});
server.on('request', (request, response)=> {
if (requsest.url == '/') {
response.end('index.html')
}
});
上面写的代码是我的思考方式,可能不是正确的方式,所以请如果有人能给我想法或解决方案,我应该如何在Nodejs
.
提前致谢 :)
解决方案
它只是呈现一个静态文件index.html
const http = require('http');
const fs = require('fs');
fs.readFile('./index.html', function(err, html) {
if (err) {
throw err;
}
http.createServer(function(request, response) {
response.writeHeader(200, {
"Content-Type": "text/html"
});
response.write(html);
response.end();
}).listen(3000);
});
假设您的文件夹结构
project root
├── server.js
├── package.json
└── index.html
对于Node.js
不使用框架的基本路由express
。您需要设置您的server.js
文件,以便switch
为各种路线使用案例块。简单示例:
const http = require('http');
const fs = require('fs');
const port = 3000;
const server = http.createServer((req, res) => {
let htmlFile = '';
switch (req.url) {
case '/':
htmlFile = 'index.html';
break;
case '/about':
htmlFile = 'about.html';
break;
default:
break;
}
if (htmlFile)
render(res, htmlFile);
});
function render(res, htmlFile) {
fs.stat(`./${htmlFile}`, (err, stats) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');
if (stats) {
fs.createReadStream(htmlFile).pipe(res);
} else {
res.statusCode = 404;
res.end('Page not found!');
}
});
}
index.html
关于访问根路径/
。about.html
在访问/about
.
推荐阅读
- powershell - PS7.1 - 你如何使用带有自定义函数的流水线链接?
- parsing - Antlr Matlab 语法词法冲突
- python-3.x - How to define a function that checks each column of 'object' dtype and gets those columns which can be converted to datetime format
- amazon-web-services - 通过 AWS S3 SDK 访问 Google Cloud Storage 遇到带有特殊字符的文件的 403 错误
- r - lmer or binomial GLMM
- ruby-on-rails - 调用中的 RSpec 未定义方法“每个”
- discord.js - Creating an invite in a GuildCreate event
- flutter - 在容器下方显示列表视图时出错
- angular - 显示更多和显示更少的角度
- python - Python中的多处理中的多线程