在 Sails.js 应用程序中,如何选择性地包含 javascript 资产?
我使用 assets.js() 的包装器选择性地加载 js 资产。这个 sn-p 使用 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 的一个特例。