LINUX.ORG.RU

Вопрос по Node.js

 , , , ,


0

1

Есть приложения, Express и Jade для views
index.jade:

each link in links
        li: a(href=link.path)= link.name

В app.coffee:
app.use '/', require './lib/routes/index'

В index.coffee:
express = require 'express'
router = express.Router()
menu = require "../menu.coffee"

router.get '/', (req, res) ->
  res.render 'index',
    links: menu::links

module.exports = router

в menu.coffee:
class Link
  links: []
  constructor: (@path, @name) ->
    link =
      path: @path
      name: @name
    @links.push link
new Link "/", "Home"

Вопрос - можно ли как-то в app.coffee прописать или где-нибудь еще, что бы при res.render не писать каждый раз links: menu::links
А то много роутов, а меню общее для всего приложения
Бывает в некоторых роутах я делаю new menu «/newpath», «Something», где menu = require '../menu.coffee'

★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Ответ на: комментарий от zz

Сделал
в app.coffee:

menu = require './lib/menu'
app.locals.menu = menu
app.locals.links = menu::links

в index.coffee:
router.get...
new req.app.locals.menu "/test", "TEST"

В layout.jade:
each link in menu.prototype.links

И все, работает, спасибо!
Осталось одна проблемка - каждый раз создается новый экземпляр класса
Жму несколько раз F5 и в меню несколько одинаковых пунктов
Как быть?

mystery ★★
() автор топика
Последнее исправление: mystery (всего исправлений: 1)
Ответ на: комментарий от zz

В классе Link находится массив links, конструктор класса создает объект link и добавляет его в массив объектов links
Как сделать лучше?

mystery ★★
() автор топика
Ответ на: комментарий от mystery

Тебе надо сделать

app.use(function(req, res, next) {
  req.app.locals = blah;
  next();
}

потому что иначе придется копировать в каждый роут. См http://expressjs.com/en/guide/writing-middleware.html

Если ты хочешь только один раз все это содавать, то создавай один раз:

var blah = makeBlah();
app.use(function(req, res, next) {
  req.app.locals = blah;
  next();
}
zz ★★★★
()

javascript, node.js

/me скастовался, посмотрел, не увидел ни одной строчки на js, ушёл.

ChALkeR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.