【问题标题】:Scripts multiplies in controllers脚本在控制器中成倍增加
【发布时间】:2017-07-04 03:15:23
【问题描述】:

我将 node.js 与sails.js 用于后端,将angular.js 用于前端。

在 Angular 中,我使用一个主控制器和一些子控制器。

如您所知,默认情况下,在sails.js 中,在文件layout.ejs 中包含标签之间的所有java 脚本和css 文件

<!--SCRIPTS--><!--SCRIPTS END-->

<!--STYLES--><!--STYLES END-->

主要内容包含在&lt;%- body %&gt;标签中

当我扬帆起航时,转到浏览器并检查“元素”,我发现一些问题:

主控制器(让它成为“myApp”)在角度生成 html 中使用 layout.ejs 之类的主体(包含所有 css 和 js),然后包含控制器内容。

现在的问题: 问题是“myApp”的另一个子控制器也使用 layout.ejs 生成。这就是为什么某些脚本包含多次的原因。

示例:4 个子控制器 = 4 个包含在 google.maps.api 中。那很糟!!代码好脏!

现在的问题是:我怎样才能解决这个问题,并且只包含一次脚本和 css?

【问题讨论】:

  • 使用服务来包含 google.maps.api 并与控制器共享该服务。服务是单例的,只构造一次。

标签: angularjs node.js sails.js


【解决方案1】:

创建另一个布局,让我们称之为views/blanklayout.ejs,仅包含以下内容:

<%- body %>

现在,将此布局用于所有子控制器视图。 做任何一个

在您的风帆控制器中将布局设置为空白布局:res.locals.layout = 'blanklayout';

或者您也可以在路线中指定布局,例如

'GET /test': {
  controller: 'TestController',
  action: 'test',
  locals: {
    layout: 'blanklayout',
  },
},

PS:您也可以交换布局,这意味着在 layout.ejs 中只有 &lt;%- body %&gt; 和另一个布局(例如 mainLayout.ejs 包含 layout.ejs 的当前内容。这样您就不必指定使用 @ 987654328@ 仅用于主控制器视图。

【讨论】:

  • 对不起,错过了。谢谢帮助!!))
猜你喜欢
  • 2011-09-29
  • 1970-01-01
  • 2021-08-02
  • 2021-11-04
  • 1970-01-01
  • 2021-09-10
  • 2019-03-26
  • 1970-01-01
  • 2012-08-18
相关资源
最近更新 更多