上一篇讨论了seajs的两种加载文件的方式。
但是在平常使用中有很多情况一个页面会加载几个,甚至更多的js文件。当这种情况产生时,无论采用seajs.use直接加载 或者 script标签+ seajs.use的方式加载都无可避免的导致加载代码又臭又长,不好维护。
有一种很简单的方案可以有效的减少代码,聪明的你一定已经想到了----循环。
<script>
var seaConfig = {
a: './js/a.js'
, b: './js/b.js'
};
for(var i in seaConfig) {
seajs.use(seaConfig[i]);
}
</script>
如上(a.js和b.js请脑补),可以将seaConfig中配置的文件,都加载到页面上,这里可以通过seajs.cache对象来看这两个文件是否加载了,如下图
这种方式有几个好处:
1、可以极大的减少加载的代码量,同时也可以统一管理加载位置。
2、可以给所有的加载出来的对象都做一些统一处理,方法很简单,如下代码所示;
seajs.use(seaConfig[i], function(e) {
// do something to e;
});
当然,这种方式,略显丑陋,其实seajs给我门提供了一种更为简单的方式----别名,也就是config中的alias对象,采用alias对象,采用如下代码:
<script>
var seaConfig = {
a: './js/a.js'
, b: './js/b.js'
};
seajs.config({
alias: seaConfig
});
// 这么使用即可
seajs.use('a');
seajs.use('b');
</script>
运行效果是一样的,只是这样会产生一个问题,因为config中的对象,seajs会做自动合并,当再次调用seajs.config时之前的配置都会被覆盖,如果老项目中已经配置了paths等对象,而又和你新增的目录相冲突的话,那你就确实悲剧了,比如上例中,如果原项目中配置了
paths:{'js': 'js/xxxx'},而a.js的路径刚好为,a:
'js/a.js',在不能改动paths.js的前提下,a.js就无法正常加载。
有一种比较好玩的方法,可以绕过这个问题,既可以不改动原有paths,也可以加载新的a.js,这种奇葩的方法,我们在seajs使用小结(三)中介绍吧。
分享到:
相关推荐
NULL 博文链接:https://bijian1013.iteye.com/blog/2259862
自己在公司需要使用seajs,就学习了seajs写了个手册和demo,欢迎阅读。
SeaJS Web 端的js 模块加载器
seajs-2.3.0.zip
提供了前端框架seajs的简要使用说明
knockout seajs .net中实战应用
seajs-2.2.0源码
seajs源码
seajs下载,包含自己总结的用法和规范
要在项目中使用SeaJS,你所有需要做的准备工作就是下载sea.js然后放到你项目的某个位置。SeaJS项目目前托管在GitHub上,主页为 https://github.com/seajs/seajs/ 。可以到其git库的build目录下下载sea.js(已压缩)...
seajs-5分钟上手。。。。。。...................................................。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
第一次接触的可以下来看看,会用的就没必要下载了
本文实例讲述了JavaScript 模块化开发...SeaJs使用 引入sea.js的库 如何变成模块? define 如何调用模块? exports 和 seajs.use 如何依赖模块? require //html: [removed][removed] <script type="text/javascr
seajs入门完整案例,适合新手学习! seajs入门完整案例,适合新手学习!
seajs源文件以及一个帮助文档,文档介绍比较详细
seajs-css.js 用于seajs加载css文件,上课用的课件资源,大家有需要的可以随时下载。版本是非常好用的,作为一个学习模块化我们必须的知识插件
用于seajs的预加载使用,有需要的小伙伴可以免费下载使用。方便大家多多分享免费的资源,有问题随时给我们留言。希望能帮助大家解决更多的问题
Bootstrap和seajs结合的分页器,绝对好用嗷
开始学习seajs,模块化的js思想。SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。与jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现...