27.06.2016, 10:54
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Express: разница между app.locals и app.set(), app.get()
Какая принципиальная разница между app.locals и app.set(), app.get() в плане хранения каких-либо данных приложения?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
27.06.2016, 11:11
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
khusamov,
app.set(key, value) === app.locals.settings[key] = value
т.е. в шаблонах обращение как settings.key, а если так
app.locals.key = value
, то в шаблонах обращаемся просто key
|
|
27.06.2016, 16:31
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Спасибо за ответ!
Не ясно, зачем нужно было создавать app.locals.settings со своими методами?..
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
27.06.2016, 16:46
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
Цитата:
|
Не ясно, зачем нужно было создавать app.locals.settings со своими методами?..
|
можно устанавливать важные настройки приложения, такие как env, views, view engine и так далее.
http://expressjs.com/ru/4x/api.html#app.set
|
|
27.06.2016, 16:48
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
то есть settings это скорее раздел переменных Express-а и его плагинов, а все остальное пользователь сам наполняет как хочет (а точнее все относящееся к сайту например название страницы/сайта)?
хотя они предлагают вот что
app.set('title', 'My Site');
то есть бардак в общем-то))
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
27.06.2016, 16:53
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
khusamov,
Да, для глобальных переменных, которые можно будет использовать в каждом шаблоне, обычно пишут middleware, где объект response наполняют ими. Например
app.use((req, res, next) => {
res.locals.flo = baz;
next()
})
Последний раз редактировалось destus, 27.06.2016 в 17:54.
|
|
28.06.2016, 02:23
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Нашел новую инфу для размышления.
Оказывается чтобы задать опцию для шаблонизатора достаточно прописать, например, такую команду
app.locals.pretty = true;
Не сказал бы что это логично, но как ни странно, работает...
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
28.06.2016, 05:20
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
А так работает?
app.set('view options', { pretty: true });
Вообще, на самом деле должно быть что-то типо
if (app.get('env') === 'development') {
app.locals.pretty = true;
}
|
|
28.06.2016, 17:35
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Сообщение от destus
|
А так работает?
app.set('view options', { pretty: true });
|
Не работает. Это для экспресса второй версии работало.
http://stackoverflow.com/questions/5...tml-in-express
Сообщение от destus
|
Вообще, на самом деле должно быть что-то типо
if (app.get('env') === 'development') {
app.locals.pretty = true;
}
|
Само собой. Я там для примера привел же
.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
|
|