繁体   English   中英

使用 node.js 呈现快速模板的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM