[英]Issue with rendering express template with node.js
我在运行 node.js 服务器时遇到了呈现“EJS”Express 模板的问题。 我提供了下面的代码。 如您所见,我正在实现http.createServer(function (req, res)
以读取和向客户端写入消息。但是保存 HTML 代码的模板不会被呈现。代码的主要目标是客户端向服务器发送消息“来自客户端的你好”,服务器用“来自服务器的你好”响应客户端。
app.js(服务器端)
/** * Module dependencies. */ var express = require('express') , routes = require('./routes') , user = require('./routes/user') , http = require('http') , path = require('path') , request = require ('request') , cheerio = require ('cheerio') , $; var app = express(); //console.log($('[class = "orange"]').attr('id')); // all environments app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); // development only if ('development' == app.get('env')) { app.use(express.errorHandler()); } app.get('/', routes.index); app.get('/users', user.list); http.createServer(function (req, res) { var body=""; console.log('Request received: '); req.on('data', function (chunk) { body +=chunk; }); req.on('end', function(){ console.log("Body: "+body); res.write('Hello from Server'); res.end(); }); }).listen(3000);
index.ejs(客户端)
<!DOCTYPE html> <html> <head> <title><%= title %></title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js" type="text/javascript"></script> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h1><%= title %></h1> <input type="button" id="stopButton" value="Button1"/> <input type="button" id="stopButton2" value="Button2"/> <p>Welcome to <%= title %></p> <ul id="fruits"> <li id= "1" class="apple">Apple</li> <li id = "2" class="orange">Orange</li> <li id = "3" class="pear">Pear</li> </ul> <script type="text/javascript"> $(document).ready(function () { var formData = {data: "Hello from Client"}; $.ajax({ url: 'http://localhost:3000', dataType: "json", type: 'POST', data: formData, jsonpCallback: 'callback', success: function (data, textStatus, jqXHR) { var ret = jQuery.parseJSON(data); console.log(ret.msg); }, error: function (jqXHR, textStatus, errorThrown) { console.log("Error received"); } }); }); </script> </body> </html>
包.JSON
{ "name": "NewProject", "version": "0.0.1", "private": true, "scripts": { "start": "node app.js" }, "dependencies": { "express": "3.2.6", "ejs": "*" } }
早些时候我曾尝试使用有效的app.get
。
使用app.get()
、 request()
和http.createServer()
之间的主要区别是什么。 我们什么时候应该使用什么?
它不会那样工作。 查看文档:
例如:
var express = require('express');
var bodyParser = require('body-parser')
var app = express();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
app.post('/hello', function (req, res) {
res.send("Hello from server");
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
另外,请使用最新版本的 Express,你的已经过时了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.