2016-06-06 2 views
3

Я довольно новичок в Node.js/Express/EJS.Express + EJS - передача аргументов в представление 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

Разница между двумя заключается в том, как вы определяете свой объект и его свойства.

{ products } указывает двигателю V8 присвоить значение products значение переменной products, которое находится в области. Это называется Object Literal Property Value Shorthand и является особенностью ES6.

{ products: products } это давно форма способ создания объекта в ES6 и только пути в любой версии до начала ES6.

Пока ваша версия узла поддерживает стенографию, вы можете ее использовать. Все о предпочтении и удобочитаемости, здесь нет правильного или неправильного пути.

0

Оба кода подпадают под один и тот же результат. Первая версия предложена linter, потому что она укорочена и читаема.

Пожалуйста, изучите руководство по стилю JavaScript, есть много руководств, например. airbnb, Google и т. д.

Я рекомендую airbnb здесь. https://github.com/airbnb/javascript

Смежные вопросы