使用Express和EJS - 将参数传递给EJS视图

3
我很新于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});

我想知道同时使用这两种技术是否可行?
2个回答

2
两者之间的区别在于你如何定义对象及其属性。 { products } 告诉 V8 引擎将属性 products 的值分配为在范围内的变量 products 的值。这被称为Object Literal Property Value Shorthand,是 ES6 的一个特性。 { products: products } 是在 ES6 中创建对象的长格式方式,在 ES6 之前的任何版本中都是唯一的方式。
只要你的 Node 版本支持简写,你就可以使用它。这完全取决于个人偏好和可读性,这里没有对错之分。

0

这两个代码编译后得到的结果是相同的。 第一个版本由linter建议,因为它更短且易读。

请学习JavaScript风格指南,有很多指南,例如airbnb、Google等。

我在这里推荐airbnb。 https://github.com/airbnb/javascript


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接