还是在工作中遇到的问题,在项目改造中,我们使用了oclazyload.js
来实现js按需加载,第三方插件当然也需要按需引用。
但是使用oclazyload.js
需要遵行它的加载标准,需要使用的插件,按json格式引用到modules
,大概需要像如下这样使用:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24(function () {
;
var app = angular.module('app');
//按需加载,modules内容为gulp自动化处理
app.config(['$ocLazyLoadProvider', function ($ocLazyLoadProvider) {
$ocLazyLoadProvider.config({
debug: true, //调试模式
events: true,//广播事件
modules: [
{
"name":"angular",
"files":"bower_components/angular/angular.js"
},{
"name":"ui-navbar",
"files":[
"bower_components/ui-navbar/release/js/ui-navbar.js",
"bower_components/ui-navbar/release/css/ui-navbar.css"
]
}
...
]
});
}]);
})();
这样使用有个小问题需要解决,我们原来有很多的第三方插件,7、80个插件的样子,手动一个一个的引用进来,是可以用,但是如果又安装了新的插件,还是需要手动引用,这样很麻烦,而且手动引用难免出错。
我就寻思着,能不能自动加载bower
安装的三方插件到modules
中。找来找去没有找到类似的插件,那就自己写个吧。
于是,就写了个gulp
任务,思路如此这般:找到bower_components地址,循环里面的文件夹,找到每个文件夹下的bower.json文件,再读取bower.json中的main字段,组合返回需要的json字段,再找到目标文件,写入需要的JSON。
1 | //获取bower.json中插件的引用地址,写入app.config.js中 |
完成。没有找到其他的使用场景,不然可以写成插件。(^_^)