nodejs发送html文件给客户端
我使用这个函数发送HTML文件到客户端,但在客户端,我什么也没有(空白页)没有错误。 我错了什么?请帮忙?
var express = require('express'); var fs = require('fs'); var app = express(); app.set('view engine', 'jade'); app.engine('jade', require('jade').__express); app.get('/test', function(req, res) { fs.readFile(__dirname + '/views/test.html', 'utf8', function(err, text){ res.send(text); }); var port = process.env.PORT || 80; var server = app.listen(port); console.log('Express app started on port ' + port);
我的test.html文件
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <style something here </style> <title>Test</title> <script src="..."></script> </head> <body> <div> Somthing here </div> <script type="text/javascript"> //something here </script> </body></html>
试试你的代码是这样的:
var app = express(); app.get('/test', function(req, res) { res.sendFile('views/test.html', {root: __dirname }) });
-
使用res.sendFile而不是手动读取文件,以便expression可以正确处理设置内容types。
-
你不需要
app.engine
行,因为这是由express内部处理。
几年后,我想通过在Express.js
使用视图引擎添加另一种方法
var fs = require('fs'); app.get('/test', function(req, res, next) { var html = fs.readFileSync('./html/test.html', 'utf8') res.render('test', { html: html }) // or res.send(html) })
那么,如果在上面的代码中select了res.render
方法(我正在使用EJS格式),那么在views/test
这样做:
<%- locals.html %>
就这样。
这样,你不需要打破你的视图引擎安排。
你可以更容易地expression页面
var app = require('express')(); //to install express write "npm install express" app.get('/signup',function(req,res){ res.sendFile(path.join(__dirname+'/signup.html'));
});
所以如果你请求像
http://127.0.0.1:8080/signup
它会呈现signup.html页面