gpt4 book ai didi

javascript - "res.render"是做什么的,html 文件是什么样的?

转载 作者:IT老高 更新时间:2023-10-28 22:02:19 27 4
gpt4 key购买 nike

What does res.render do, and what does the html file look like?

我的最终目标是将文本文件中的任意逗号分隔值加载到 html 文件中(例如)。我只能推断出一个 View 是 html 文件,而回调会返回该 html 文件。

这里是文档:http://expressjs.com/api.html#res.render .

现在,根据我找到的一些示例代码的上下文,使用 ejs (嵌入式 javascript)与 <%%> .

但如果我可以补充一下,我只是无能还是文档真的很模糊,并假设读者什么都知道?我怎么能自己解决这个问题?有没有官方文档可以让我全面了解用法、优缺点?


编辑 1

我只是想补充一点,我正在学习 node.js .是我还是一般文档真的含糊不清?除了像上面这样糟糕的解释之外,没有参数或返回值的类型规范。


编辑 2

让我在代码上方问你一些更具体的问题。

实际orders.ejs文件位于 views/orders.ejs .这段代码是怎么引用的?

HTML 摘录:

<tbody>
<% for(var i=0; i<orders.length; i++) {%>
<tr>
<td><%= orders[i].id %></td>
<td><%= orders[i].amount %></td>
<td><%= orders[i].time %></td>
</tr>
<% } %>

还有 js。请参阅/订单:

  // Define routes for simple SSJS web app. 
// Writes Coinbase orders to database.
var async = require('async')
, express = require('express')
, fs = require('fs')
, http = require('http')
, https = require('https')
, db = require('./models');

var app = express();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.set('port', process.env.PORT || 8080);

// Render homepage (note trailing slash): example.com/
app.get('/', function(request, response) {
var data = fs.readFileSync('index.html').toString();
response.send(data);
});

// Render example.com/orders
app.get('/orders', function(request, response) {
global.db.Order.findAll().success(function(orders) {
var orders_json = [];
orders.forEach(function(order) {
orders_json.push({id: order.coinbase_id, amount: order.amount, time: order.time});
});
// Uses views/orders.ejs
response.render("orders", {orders: orders_json});
}).error(function(err) {
console.log(err);
response.send("error retrieving orders");
});
});

// Hit this URL while on example.com/orders to refresh
app.get('/refresh_orders', function(request, response) {
https.get("https://coinbase.com/api/v1/orders?api_key=" + process.env.COINBASE_API_KEY, function(res) {
var body = '';
res.on('data', function(chunk) {body += chunk;});
res.on('end', function() {
try {
var orders_json = JSON.parse(body);
if (orders_json.error) {
response.send(orders_json.error);
return;
}
// add each order asynchronously
async.forEach(orders_json.orders, addOrder, function(err) {
if (err) {
console.log(err);
response.send("error adding orders");
} else {
// orders added successfully
response.redirect("/orders");
}
});
} catch (error) {
console.log(error);
response.send("error parsing json");
}
});

res.on('error', function(e) {
console.log(e);
response.send("error syncing orders");
});
});

});

// sync the database and start the server
db.sequelize.sync().complete(function(err) {
if (err) {
throw err;
} else {
http.createServer(app).listen(app.get('port'), function() {
console.log("Listening on " + app.get('port'));
});
}
});

// add order to the database if it doesn't already exist
var addOrder = function(order_obj, callback) {
var order = order_obj.order; // order json from coinbase
if (order.status != "completed") {
// only add completed orders
callback();
} else {
var Order = global.db.Order;
// find if order has already been added to our database
Order.find({where: {coinbase_id: order.id}}).success(function(order_instance) {
if (order_instance) {
// order already exists, do nothing
callback();
} else {
// build instance and save
var new_order_instance = Order.build({
coinbase_id: order.id,
amount: order.total_btc.cents / 100000000, // convert satoshis to BTC
time: order.created_at
});
new_order_instance.save().success(function() {
callback();
}).error(function(err) {
callback(err);
});
}
});
}
};

最佳答案

What does res.render do and what does the html file look like?

res.render() 函数编译你的模板(请不要使用 ejs),在那里插入本地,并用这两个东西创建 html 输出。


回答编辑 2 部分。

// here you set that all templates are located in `/views` directory
app.set('views', __dirname + '/views');

// here you set that you're using `ejs` template engine, and the
// default extension is `ejs`
app.set('view engine', 'ejs');

// here you render `orders` template
response.render("orders", {orders: orders_json});

所以,模板路径是views/(第一部分)+ orders(第二部分)+ .ejs(第三部分)= == views/orders.ejs


无论如何,express.js 文档对于它的作用来说是很好的。它是 API 引用,而不是“如何使用 node.js”的书。

关于javascript - "res.render"是做什么的,html 文件是什么样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21843840/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com