我是新手Sails.js
我正在尝试使用assets/templatessails 中的功能来呈现数据客户端,但我似乎找不到任何工作示例。
我正在寻找没有角度或其他框架的本机 Sails 解决方案。只需从jQuery加载.JST模板并填充它们assets/templates
任何人都可以参考使用客户端模板的工作示例
sails.js?
我是新手Sails.js
我正在尝试使用assets/templatessails 中的功能来呈现数据客户端,但我似乎找不到任何工作示例。
我正在寻找没有角度或其他框架的本机 Sails 解决方案。只需从jQuery加载.JST模板并填充它们assets/templates
任何人都可以参考使用客户端模板的工作示例
sails.js?
这个文档真的很缺乏。但是,我通过以下步骤设法让客户端模板在 Sails 0.12.4 中工作:
默认安装时,您应该已经有一个包含views/homepage.ejs模板部分的文件:
...
<!--TEMPLATES-->
<!--TEMPLATES END-->
...
现在,通过运行$ sails lift,将下面的模板assets/templates/编译成一个javascript文件jst.js,然后自动插入到views/homepage.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 函数。
这还不够。编译后的 javascriptjst.js依赖于Underscore或Lodash。如果不在_客户端的命名空间中,执行模板函数将引发错误。
要在客户端导入它,请下载您选择的版本并将其放在assets/js/dependencies/. 例如,缩小的 Lodash 核心似乎就足够了。在 next 期间sails lift,文件的新脚本标签将自动插入到homepage.ejs中,最终放入_命名空间。
默认情况下,运行$ 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 元素下。
您是否在 layout.ejs 中定义了 ng-app 和 ng-view ?如果您定义然后在 /assets 中创建一个带有路由的角度 app.js,那么这肯定会起作用。如果还有问题,请告诉我。