我正在使用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?
答案 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
用于主控制器视图。