Использование клиентских шаблонов в Sails.JS
Я новичок в Sails.js
Я пытаюсь использовать функцию assets/templates
в sails для визуализации данных на стороне клиента, но не могу найти ни одного рабочего примера.
.JST
из assets/templates
и заполните их с помощью jQuery
Может ли кто-нибудь сослаться на рабочий пример использования клиентских шаблонов в
sails.js?
2 ответа:
Документация действительно отсутствует с этим. Тем не менее, мне удалось получить шаблоны на стороне клиента, работающие в Sails 0.12.4 со следующими шагами:
1. Предпосылки
При установке по умолчанию у вас уже должен быть файл
views/homepage.ejs
с разделом для шаблонов:... <!--TEMPLATES--> <!--TEMPLATES END--> ...
Теперь, запустив
$ sails lift
, шаблоны подassets/templates/
компилируются в файл javascriptjst.js
, который затем автоматически вставляется вviews/homepage.ejs
между тегами комментариев раздела шаблона. Однако сначала нам нужен шаблон!2. Шаблон EJS
Напишите файл шаблона, скажем
assets/templates/example.ejs
:<h1><%= message %></h1>
Есть одна проблема. По умолчанию Sails компилирует только шаблоны, заканчивающиеся на
*.html
. Это не имеет смысла, потому что файл шаблона явно не HTML, а также потому, что шаблоны на стороне сервера подviews/
уже имеют расширение.ejs
. Чтобы изменить это, замените следующие строки вtasks/pipeline.js
:var templateFilesToInject = [ 'templates/**/*.html' ];
С
var templateFilesToInject = [ 'templates/**/*.ejs' ];
Это позволяет нашим
example.ejs
быть скомпилированным вjst.js
как функция javascript.3. Определить _
Это не достаточно. Скомпилированный javascript в
jst.js
зависит от подчеркивания или альтернативно Lodash. Без_
в пространстве имен клиента выполнение функции шаблона вызовет ошибку.Чтобы импортировать его на стороне клиента, загрузите выбранную версию и поместите ее под
assets/js/dependencies/
. Например, Лодашь сокращен ядро представляется достаточным. Во время следующегоsails lift
, новый тег скрипта для файла будет автоматически вставлен вhomepage.ejs
, в конечном итоге поместив_
в пространство имен.4. Рендеринг шаблона
Запустите
$ sails lift
и перейдите на главную страницу по адресуlocalhost:1337 по умолчанию.jst.js
создал функцию шаблона вwindow.JST['assets/templates/example.ejs']
.Чтобы проверить его в действии, откройте консоль разработчика и введите:
> window.JST['assets/templates/example.ejs']({message: 'Hello'})
Это должно вернуть вам строку
<h1>Hello</h1>
. Эта строка, которую вы теперь хотите вставить куда-то в документ. Допустим, вы храните его в переменнойpiece
. Вы можете использовать jQuery$('#target').html(piece)
или good olddocument.getElementById('target').innerHTML = piece
. В любом случае, в результате, отрисованная строка теперь вставляется на страницу под элементом # target.