在 Sails.js 应用程序中,如何选择性地包含 javascript 资产?
我使用 assets.js() 周围的包装器选择性地加载 js 资产。此片段使用 Jade 的“-”和“!{...}”。EJS 将改为使用“<%...%>”和“<%=...%>”
<!-- JavaScript and stylesheets from your assets folder are included here -->
!{assets.css()}
-function selectAssets (assetsjs, files, ifInclude) {
- return assetsjs.split('\n').reduce(function (prev, curr, i) {
- var frag = curr.match(/src="\/assets\/js\/\w{1,}\-/);
- if(frag) {
- var file = frag[0].substring(16, frag[0].length - 1);
- if ((files.indexOf(file) === -1) == ifInclude) { return prev; }
- }
- return prev + curr + '\n';
- }, '');
-}
//!{assets.js()} this line is replaced by:
!{selectAssets(assets.js(), ['dummy1', 'dummy5', 'dummy6'], false)}
以上内容不包括 /assets/js/dummy1.js, dummy5, dummy6 的布局。如果您想在特定页面上包含 dummy1 和 dummy5,您可以放置
!{selectAssets(assets.js(), ['dummy1', 'dummy5'], true)}
在那个页面上。
注意:代码假定文件名不包含“-”。它可以直接概括为 css 和模板。Sails-io 是 mixins 的一个特例。