Native JavaScript Templates (nJSt). Шаблонизатор, построенный на нативном JavaScript
Приветствую тебя, читатель. Гоняясь за идеей сделать шаблонизатор, основанный на нативном JavaScript — я кое к чему пришёл. В Node.JS для реализации этой задачи нашлось всё, что я мог пожелать, и выполнить задачу получилось настолько же нативными средствами. Например, главным инструментом послужил модуль VM для выполнения изолированного от внешней среды JavaScript-кода. Шаблонные вставки — это чистый JS, но туда не попадают всяческие опасные инструменты вроде скальпеля, require, global и др.
Перед тем как приступить к подробному разбору полётов, сразу взглянем на пример использования, который скорей нагляднее отразит суть, чем что-либо ещё. Код создания сервера приводить не буду, просто опишу сам шаблон и парсинг под определённым контекстом.
HTML-шабон:
<html> <head> <title>#{PageTitle}</title> </head> <body> <h1>#{PageTitle}</h1> <ul> <# for (var i=0; i<List.length; i++) { #> <li> <# if (typeof List[i] !== 'object') { show(List[i]); } else { show(List[i].name +' - '+ List[i].note); } #> </li> <# } #> </ul> </body> </html>
Контекст:
var context = { PageTitle: 'jJSt test', List: ['First', {name:'Second', note:'2th'}, 'Third'], }; var result = njst.parse(html, context, {debug:1});
© unclechu
Учимся создавать маленький парсер шаблонов
Приветствую тебя, читатель. Ещё давеча я даже не знал о существовании Node.js, но зато успел увесисто поработать с JavaScript, после которого так не хочется писать на чём-либо другом. Многие, кто вник в JS и его дзен, что всё есьм — объект, в замыкания, анонимные функции, предпочитают работать только с ним. Однажды с товарищем обменивались мыслями о PHP, покритиковали скудные и неудобные возможности ООП, и я тут выдал: «вот бы вместо PHP на серверной стороне писать на JS», — на что получил мгновенный ответ: «nodejs тебе в руки». Не долго думая я начал рыть по wiki и другим ресурсам, далее в кротчайший срок я поднял Ubuntu Server на Virtual Box и поставил туда сам Node.js.
Сразу предупреждаю, что если вы не работали с JavaScript или просто скудно с ним знакомы, начните именно с него, иначе Node.js может показаться вам тёмным лесом. Хочу познакомить вас с языком сразу на практике, и так же показать идею по опять же практическому применению. Я приведу пример реализации маленького парсера шаблонов, всё это уложится в 2-а небольших файла, нарочито без излишеств, чтобы наглядно и прозрачно посмотреть «как это работает».
© unclechu
Шаблонизатор: Mu
Итак, в написании блога настал момент когда просто выводить HTML стало недостаточно, и я стал искать шаблонизатор для сайта. Выбор пал на Mu – порт Mustache из Ruby, насколько я понял. И хоть с Ruby работать мне не приходилось, синтаксис и набор фич понравился. Чёткое отделение логики от представления (в шаблоне вообще нет кода), вложенные шаблоны, компиляция в функции. В общем, решил изучить.
