[英]Custom Javascript in EJS templates using Sails.js
到目前为止,我一直很喜欢Sail.js,但是我仍然遇到一个简单的问题:如果我有一个仅想在特定视图上运行的javascript函数,该在哪里调用它?
一个非常简单的例子是:
//contact.ejs
<div id="contact"></div>
<script>
renderContact();
</script>
假设renderContact
在站点的主JS文件中定义,并且听起来像那样:在<div id='contact'></div>
创建联系人列表。
当然,该主JS文件以及所有供应商JS都不会在此脚本标记之后加载,因为它已注入到layout.ejs
,因此该函数将是未定义的。 我总是可以本地等待页面加载,如下所示:
document.addEventListener("DOMContentLoaded", function(event) {
renderContact();
});
但这似乎是一个可怕的解决方案。
我意识到Sails与Angular,React等功能进行了强大的集成,但是我首先想了解在花哨之前将JS调用到单个页面的基本方式。 DOM加载后,必须有更好的方法仅在某些页面上运行某些功能吗?
因此, renderContact
正常工作,它应如下所示:
<html>
<head></head>
<body>
HTML
<script src="master.js"></script>
<script>
(function() {
renderContact();
})();
</script>
</body>
</html>
ejs的缺点是AFAIK不支持块。 这是一种裸机。 因此,您必须将所有脚本放入主布局文件中,并且这些脚本将出现在不需要它们的页面上。 但是,您可以配置其他模板引擎,例如jade。 Jade支持您可以覆盖或扩展的块。 这是一个玉块的例子: https : //stackoverflow.com/a/22748166/401025
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.