我是Sails.js
我试图在风帆中使用assets/templates
功能来呈现数据客户端,但我似乎无法找到任何有用的示例。
我正在寻找原生的Sails解决方案,没有角度或其他框架。只需从.JST
加载assets/templates
模板,然后使用jQuery填充它们
任何人都可以参考
中使用客户端模板的工作示例sails.js?
答案 0 :(得分:6)
这篇文章真的缺乏文档。但是,我设法通过以下步骤在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
可以作为javascript函数编译到jst.js
。
这还不够。 jst.js
中已编译的javascript取决于Underscore或Lodash。在客户端的命名空间中没有_
,执行模板函数会抛出错误。
要在客户端导入此内容,请下载您选择的版本并将其放在assets/js/dependencies/
下。例如,缩小的Lodash核心似乎就足够了。在下一个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元素下的页面中。
答案 1 :(得分:-1)
您是否在layout.ejs中定义了ng-app和ng-view?如果您定义然后在/ assets中使用路由创建一个有角度的app.js,那么这肯定会有效。 如果还有任何问题,请告诉我。