在 Sails.js 中使用客户端模板
Using Client-side Templates in Sails.js
我是 Sails.js
的新手
我正在尝试使用 sails 中的 assets/templates
功能来呈现数据客户端,但我似乎找不到任何可用的示例。
我正在寻找没有 angular 或其他框架的原生 Sails 解决方案。只需从 assets/templates
加载 .JST
模板并使用 jQuery
填充它们
Can anyone reference a working example of using client-side templates in sails.js?
你在 layout.ejs 中定义了 ng-app 和 ng-view 了吗?如果您定义然后在 /assets 中使用路由创建一个 angular app.js,那么这肯定会起作用。
如果还有任何问题,请告诉我。
这个文档真的很缺乏。但是,我通过以下步骤设法让客户端模板在 Sails 0.12.4 中工作:
1。先决条件
默认安装时,您应该已经有一个文件 views/homepage.ejs
,其中包含模板部分:
...
<!--TEMPLATES-->
<!--TEMPLATES END-->
...
现在,运行 $ sails lift
将 assets/templates/
下的模板编译成 javascript 文件 jst.js
,然后自动插入 [=15] =] 在模板部分注释标签之间。但是,我们首先需要一个模板!
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依赖于Underscore or alternatively Lodash。客户端命名空间中没有_
,执行模板函数会报错
要在客户端导入它,请下载您选择的版本并将其放在 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'})
这应该 return 你的字符串 <h1>Hello</h1>
。您现在要将此字符串插入到文档的某处。假设您将它存储到一个变量 piece
中。您可以使用 jQuery $('#target').html(piece)
或旧的 document.getElementById('target').innerHTML = piece
。无论如何,结果,呈现的字符串现在被插入到#target 元素下的页面中。
我是 Sails.js
我正在尝试使用 sails 中的 assets/templates
功能来呈现数据客户端,但我似乎找不到任何可用的示例。
我正在寻找没有 angular 或其他框架的原生 Sails 解决方案。只需从 assets/templates
加载 .JST
模板并使用 jQuery
Can anyone reference a working example of using client-side templates in
sails.js?
你在 layout.ejs 中定义了 ng-app 和 ng-view 了吗?如果您定义然后在 /assets 中使用路由创建一个 angular app.js,那么这肯定会起作用。 如果还有任何问题,请告诉我。
这个文档真的很缺乏。但是,我通过以下步骤设法让客户端模板在 Sails 0.12.4 中工作:
1。先决条件
默认安装时,您应该已经有一个文件 views/homepage.ejs
,其中包含模板部分:
...
<!--TEMPLATES-->
<!--TEMPLATES END-->
...
现在,运行 $ sails lift
将 assets/templates/
下的模板编译成 javascript 文件 jst.js
,然后自动插入 [=15] =] 在模板部分注释标签之间。但是,我们首先需要一个模板!
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依赖于Underscore or alternatively Lodash。客户端命名空间中没有_
,执行模板函数会报错
要在客户端导入它,请下载您选择的版本并将其放在 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'})
这应该 return 你的字符串 <h1>Hello</h1>
。您现在要将此字符串插入到文档的某处。假设您将它存储到一个变量 piece
中。您可以使用 jQuery $('#target').html(piece)
或旧的 document.getElementById('target').innerHTML = piece
。无论如何,结果,呈现的字符串现在被插入到#target 元素下的页面中。