lampaa / NodeSmarty

NodeSmarty is a template engine for JavaScript
12 stars 3 forks source link

NodeSmarty and ExpressJs #2

Open yuri-karadzhov opened 11 years ago

yuri-karadzhov commented 11 years ago

Can you add some examples how can NodeSmarty be used with ExpressJs framework?

lampaa commented 11 years ago

Hello Yuri!

View source: https://github.com/lampaa/NodeSmarty/blob/master/others/express.example.js

yuri-karadzhov commented 11 years ago

Is it possible to use NodeSmarty in more usual for express way like view engine. Smth like this

app = express()

  smarty = NodeSmarty()

  viewsDir = '../views/templates'

  app.configure ->
    app.set 'views', viewsDir
    app.engine 'smarty', smarty(
      cache: true
      watch: true
      template: viewsDir
      compile: './view/compile'
      cache: './view/cache'
    ).render
    app.set 'view engine', 'smarty'
    ...

And then call res.render(view) as usual

app.get '/', (req, res, next) ->
  ...
  #Get some db calls
  ...
  return res.render 'index', template: 'shop/main', data: dbQueryResult

I use coffe-script but I think you catch the idea.

lampaa commented 11 years ago

I understand your idea, and I wanted to use it, but then i change my code. In the future, we can expect the following initialization library:

var Template = NodeSmarty({
    'templateDir': './views/templates/',
    'cacheDir': './views/cache/',
    'compileDir': './views/compile/',
    ///...
});

В общем, библиотека будет развиваться. Сам же люблю минимализм и простоту. По этому упрощаю: меньше настроек, всё должно быть как можно прозрачней :) Тогда и использовать шаблонизатор будет не определенный круг лиц, а уже больше.

yuri-karadzhov commented 11 years ago

You should implement renderer for exppress and these are all changes which should be done.

P.S.: Для меня этот проект - очень удобное средство для портирования готовых проектов с php на node. Остальные, которые я нашёл выглядят заброшенными http://code.google.com/p/jsmart/ https://github.com/stepofweb/nsmarty https://github.com/kudige/transformer В целом подогнать его под стандарты экспресса не сложно - код

Template.assign({
  'values':fields
});

var Final = Template.fetchSync('data.html');

нужно переместить в рендерер для экспресса (можно глянуть например готовые рендеры для ect или ejs).

Желаю удачи с проектом, буду за ним наблюдать.

lampaa commented 11 years ago

Ок, пожелание понял :)

Как появиться система плагинов, так сразу будут разные удобные фичи. Но пока всё равно нужно нарастить основной функционал, тот же тег {selection}, его пока нет.

yuri-karadzhov commented 11 years ago

Если будет время попробую поучавствовать. Сейчас навалилось много всего - рук не хватает =)

xxxalz commented 9 years ago

Бро, незабивай на проект, хочу потдержку

lampaa commented 9 years ago

@xxxalz на сайте http://nodesmarty.com 4ая версия стоит, я её полностью перебрал еще пол года назад, но документацию написать руки не дошли. Надо будет как-нибудь собраться и доделать.

xxxalz commented 9 years ago

@lampaa у меня такой вопрос как делать инклуд файла название которго в переменной? .... content:'index.tpl' .... {include file=$content} не работает, как быть?

upd: документации правдо мало иной раз просто преходиться лезть в код модуля и смотерть как все работает. А вообще jade неудобен для больших проектов где много верстики, у меня после ста строк начинаються галюцинации с табом) Ждем документации!

xxxalz commented 9 years ago

Горю, инклуд нужен срочно, срочно

lampaa commented 9 years ago

@xxxalz ты мне скажи для начала, какую ты версию используешь?

lampaa commented 9 years ago

@xxxalz В общем смотри, вот 4ая версия, но альфа, пробуй аккуратно: http://nodesmarty.com/styles/scripts/nodesmarty.4.0.js

xxxalz commented 9 years ago

@lampaa версия с npm

lampaa commented 9 years ago

@xxxalz на npm еще не заливал обновленную. Сегодня в обед будет, сейчас загружен по работе

xxxalz commented 9 years ago

@lampaa скачал 4. так всеже как делать инклуд на файл из переменной?

lampaa commented 9 years ago

@xxxalz {include file=$variable} Вчера пробовал, всё работает.

xxxalz commented 9 years ago

@lampaa {include file=$content}

обработчик ошибок возращает 400 { [Error: ENOENT, stat '/home/protected/views/$content'] errno: 34, code: 'ENOENT', path: '/home/protected/views/$content' } 8

lampaa commented 9 years ago

@xxxalz посмотри пример http://lampaa.github.io/nodesmarty/nodesmarty.html у меня всё работает.

lampaa commented 9 years ago

@xxxalz lampaa.github.io/blob/master/nodesmarty/nodesmarty.html

xxxalz commented 9 years ago

@lampaa я на nodejs пробую, может дело в этом?

lampaa commented 9 years ago

@xxxalz нет, не в этом. Держи архив, тут рабочий пример. Скорее всего так и не обновил библиотеку: https://github.com/lampaa/lampaa.github.io/blob/master/nodesmarty/test.rar