Express + EJS - 将参数传递给EJS视图

时间:2016-06-06 19:55:52

标签: javascript json node.js express ejs

我是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>

传递的参数将被称为“产品”,视图将能够很好地迭代它。我假设,为了更好的代码可读性,我应该放置这一行:

res.render('index', {products : products});

我想知道是否可以使用这两种技术?

2 个答案:

答案 0 :(得分:2)

两者之间的区别在于你如何定义对象及其属性。

{ products }告诉V8引擎为属性products分配范围内变量products的值。这称为Access to file property by clicking on file,是ES6的一项功能。

{ products: products }是在ES6中创建对象和在ES6之前的任何版本中以 方式创建对象的长篇形式。

只要您的Node版本支持简写,您就可以使用它。这完全取决于偏好和可读性,这里没有正确或错误的方法。

答案 1 :(得分:0)

两个代码都被cpmpiled到相同的结果。 第一个版本是由linter建议的,因为它更简洁,更易读。

请学习JavaScript样式指南,有很多指南,例如airbnb,谷歌等

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