Express + EJS - 将参数传递给 EJS 视图
Express + EJS - passing arguments to EJS view
我对 Node 比较陌生。js/Express/EJS。
我最近注意到,当我将参数从 Express 请求处理程序传递到 EJS 视图并省略参数名称时,它会根据变量名称创建一个名称。因此,例如,在下面的代码中,
//server.js
var express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res){
var products = [
{ name: 'Tennis Ball', price: 10 },
{ name: 'Basketball', price: 20 }
];
res.render('index', {products});
});
app.listen(8080);
//index.ejs
<ul>
<% products.forEach(function(product){ %>
<%= product.name %>
<% })%>
</ul>
传递的参数将被调用"products",视图将能够很好地迭代它。我假设,为了更好的代码可读性,我应该改为放置这一行:
res.render('index', {products : products});
我想知道是否可以同时使用这两种技术?
两者的区别在于您定义对象及其属性的方式。
{ products }
告诉 V8 引擎分配 属性 products
范围内的变量 products
的值。这称为 Object Literal Property Value Shorthand 并且是 ES6 的一个特性。
{ products: products }
是在 ES6 中创建对象的长格式方式,而 only 方式在之前的任何版本中到 ES6.
只要您的 Node 版本支持 shorthand,您就可以使用它。一切都与偏好和可读性有关,这里没有正确或错误的方法。
这两个代码被编译为相同的结果。
第一个版本是 linter 建议的,因为它更短且可读。
请学习 JavaScript 风格指南,有很多指南,例如爱彼迎、Google 等
这里我推荐airbnb。
https://github.com/airbnb/javascript
我对 Node 比较陌生。js/Express/EJS。
我最近注意到,当我将参数从 Express 请求处理程序传递到 EJS 视图并省略参数名称时,它会根据变量名称创建一个名称。因此,例如,在下面的代码中,
//server.js
var express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res){
var products = [
{ name: 'Tennis Ball', price: 10 },
{ name: 'Basketball', price: 20 }
];
res.render('index', {products});
});
app.listen(8080);
//index.ejs
<ul>
<% products.forEach(function(product){ %>
<%= product.name %>
<% })%>
</ul>
传递的参数将被调用"products",视图将能够很好地迭代它。我假设,为了更好的代码可读性,我应该改为放置这一行:
res.render('index', {products : products});
我想知道是否可以同时使用这两种技术?
两者的区别在于您定义对象及其属性的方式。
{ products }
告诉 V8 引擎分配 属性 products
范围内的变量 products
的值。这称为 Object Literal Property Value Shorthand 并且是 ES6 的一个特性。
{ products: products }
是在 ES6 中创建对象的长格式方式,而 only 方式在之前的任何版本中到 ES6.
只要您的 Node 版本支持 shorthand,您就可以使用它。一切都与偏好和可读性有关,这里没有正确或错误的方法。
这两个代码被编译为相同的结果。 第一个版本是 linter 建议的,因为它更短且可读。
请学习 JavaScript 风格指南,有很多指南,例如爱彼迎、Google 等
这里我推荐airbnb。 https://github.com/airbnb/javascript