4

我是新手Sails.js

我正在尝试使用assets/templatessails 中的功能来呈现数据客户端,但我似乎找不到任何工作示例。

我正在寻找没有角度或其他框架的本机 Sails 解决方案。只需从jQuery加载.JST模板并填充它们assets/templates

任何人都可以参考使用客户端模板的工作示例sails.js?

4

2 回答 2

7

这个文档真的很缺乏。但是,我通过以下步骤设法让客户端模板在 Sails 0.12.4 中工作:

1.先决条件

默认安装时,您应该已经有一个包含views/homepage.ejs模板部分的文件:

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

现在,通过运行$ sails lift,将下面的模板assets/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能够被编译成jst.jsjavascript 函数。

3.定义_

这还不够。编译后的 javascriptjst.js依赖于UnderscoreLodash。如果不在_客户端的命名空间中,执行模板函数将引发错误。

要在客户端导入它,请下载您选择的版本并将其放在assets/js/dependencies/. 例如,缩小的 Lodash 核心似乎就足够了。在 next 期间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 元素下。

于 2016-09-02T20:51:27.480 回答
-1

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

于 2015-12-07T10:02:31.250 回答