在Sails.js中使用客户端模板

时间:2015-12-06 10:21:07

标签: jquery sails.js jquery-templates jst

我是Sails.js

的新手

我试图在风帆中使用assets/templates功能来呈现数据客户端,但我似乎无法找到任何有用的示例。

我正在寻找原生的Sails解决方案,没有角度或其他框架。只需从.JST加载assets/templates模板,然后使用jQuery填充它们

  

任何人都可以参考sails.js?

中使用客户端模板的工作示例

2 个答案:

答案 0 :(得分:6)

这篇文章真的缺乏文档。但是,我设法通过以下步骤在Sails 0.12.4中使用客户端模板:

1。先决条件

默认情况下,您应该已经有一个文件views/homepage.ejs,其中包含模板部分:

...
<!--TEMPLATES-->
<!--TEMPLATES END-->
...

现在,通过运行$ sails liftassets/templates/下的模板会被编译为javascript文件jst.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可以作为javascript函数编译到jst.js

3。定义_

这还不够。 jst.js中已编译的javascript取决于UnderscoreLodash。在客户端的命名空间中没有_,执行模板函数会抛出错误。

要在客户端导入此内容,请下载您选择的版本并将其放在assets/js/dependencies/下。例如,缩小的Lodash核心似乎就足够了。在下一个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)或旧的document.getElementById('target').innerHTML = piece。无论如何,结果,渲染的字符串现在插入到#target元素下的页面中。

答案 1 :(得分:-1)

您是否在layout.ejs中定义了ng-app和ng-view?如果您定义然后在/ assets中使用路由创建一个有角度的app.js,那么这肯定会有效。 如果还有任何问题,请告诉我。