Javascript Express+;EJS-将参数传递到EJS视图

Javascript Express+;EJS-将参数传递到EJS视图,javascript,json,node.js,express,ejs,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 = [

我不太熟悉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}
告诉V8引擎为属性
products
分配范围内变量
products
的值。这就是ES6的一个特点

{products:products}
是在ES6中创建对象的长格式方法,在ES6之前的任何版本中都是唯一的方法


只要您的节点版本支持速记,您就可以使用它。这都是关于偏好和可读性的,这里没有正确或错误的方法。

这两个代码的结果是相同的。 linter建议使用第一个版本,因为它更简洁易读

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

我推荐这里的airbnb。

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