脚本在控制器中倍增

时间:2017-02-15 12:42:18

标签: angularjs node.js sails.js

我正在使用node.js,其中sails.js用于后端,angular.js用于前端。

在角度我正在使用一个主控制器和一些孩子控制器。

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

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

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

主要内容包含在<%- body %>代码

当我举起帆时,去浏览器并检查&#34;元素&#34;我看到了一些问题:

主控制器(让它成为&#34; myApp&#34;)在角度生成html中使用layout.ejs(如主体(包含所有css和js)),然后包含控制器内容。

现在问题: 问题是&#34; myApp&#34;的另一个孩子控制器通过使用layout.ejs生成。这就是为什么一些脚本包括多次。

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

现在问:我如何解决这个问题,并且只包含一次脚本和CSS?

1 个答案:

答案 0 :(得分:1)

创建另一个布局,我们只用这个内容称它为views/blanklayout.ejs

<%- body %>

现在,将此布局与所有子控制器视图一起使用。 做任何一件事

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

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

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

PS:你也可以交换布局,意思是<%- body %>只有layout.ejs,另一种布局(例如mainLayout.ejs)包含layout.ejs的当前内容。这样你就不会必须指定仅将mainLayout用于主控制器视图。