如何在布局中使用脚本块
<html>
-- styles files ---
<body>
<%- body %> <!-- view content -->
-- layout's scripts ---
</body>
</html>
--- html tags ---
view's scripts
=&GT;我想在布局的脚本下面查看脚本,但不能。 当我把脚本放在布局中时,它是正文,意味着它将高于布局的脚本。
我不知道sailsjs有没有办法像php laravel框架那样定义块?或任何方式。
谢谢!
答案 0 :(得分:3)
使用默认资产管道, 。
如果可以的话,我实际上建议完全避免这个问题:相反,请转到您的tasks/pipeline.js
文件并添加您想要引入的脚本。这意味着它将被包含在所有页面中(作为开发中的脚本标记,以及在临时/生产中的缩小包中)。但根据我的经验,清晰度值得。 (另外,请记住,在制作中,您可能希望将所有脚本放在一个捆绑包中 - 或者大部分都是这样。)
如果仍然不能满足您的需求,并且您绝对不能在其他页面上存在该脚本(例如,因为您正在进行后期制作并且正在优化您的捆绑包的大小)那么您通过修改Grunt任务以支持不同的链接器,或者使用Brunch,Webpack或Gulp等其他工具,可以完成您最初要做的事情。
或者,如果您(可以理解)不想自定义您的Grunt任务,那么您可能使用的另一个解决方案是在layout.ejs
中添加脚本标记,但将其包装在条件中:< / p>
… (the automatically-injected scripts)
<script src="/dependencies/lodash.js"></script>
<script src="/js/utils/baz.js"></script>
<script src="/js/components/datepicker.component.js"></script>
<script src="/js/pages/foo/bar.page.js"></script>
<script src="/js/pages/beep/boop.page.js"></script>
… (etc)
<!--SCRIPTS END-->
<% if (view.path === 'pages/entrance/login') { %>
<!-- Additional script, since this is the login page: -->
<script>alert('hey!');</script>
<% } %>
顺便说一下,您也可以使用上述内容来有条件地包含Google Analytics等,因此您不会将测试请求作为实际生产流量进行跟踪 - 只需检查环境(我们的工作是什么)例如,在Sails网站上)。这对于有条件地包括/省略robots / noindex元标记(以防止在登台服务器上索引重复内容),帮助台聊天窗口小部件,typekit,其他分析服务等也很有用。