繁体   English   中英

使用Sails.js在EJS模板中自定义Javascript

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM