【问题标题】:Express + EJS - passing arguments to EJS viewExpress + EJS - 将参数传递给 EJS 视图
【发布时间】:2016-10-06 13:21:55
【问题描述】:

我对 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});

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

【问题讨论】:

    标签: javascript json node.js express ejs


    【解决方案1】:

    两者之间的区别在于您定义对象及其属性的方式。

    { products } 告诉 V8 引擎将属性 products 分配给范围内的变量 products 的值。这称为Object Literal Property Value Shorthand,是 ES6 的一个特性。

    { products: products } 是在 ES6 中创建对象的长格式方式,而在 ES6 之前的任何版本中only 方式。

    只要您的 Node 版本支持简写,您就可以使用它。一切都与偏好和可读性有关,这里没有对错之分。

    【讨论】:

      【解决方案2】:

      两个代码都被编译成相同的结果。 第一个版本是 linter 推荐的,因为它更短且易读。

      请学习 JavaScript 风格指南,有很多指南,例如Airbnb、谷歌等。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-13
        • 2018-04-09
        • 1970-01-01
        • 2018-03-11
        • 1970-01-01
        • 2014-08-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多