最近使用JS进行前端开发,在网上翻阅时发现SeaJS,据宣传资料它可以解决命名空间冲突,可以异步加载提高HTML的解析效率,且能遵循Keep It Simple, Stupid理念,把每个JS文件进行模块化管理,解决复杂的依赖关系,具体可参见https://github.com/seajs/seajs/issues/547。
关注到如此优点,利用工作之余学习了一下官方示例,并读了一下源码,深感觉是一个不错的框架,期望后续有机会加入开源团队。本章在Window操作系统上仅简单地介绍一下官方示例,展示一下SeaJS的基本使用。
一、官方示例
1. 把sea.js放置到E:\seajs\officialsample\sea-modules\seajs\seajs\2.1.1目录
2. 把jquery.js放置到E:\seajs\officialsample\sea-modules\jquery\jquery\1.10.1目录
3. 把style.css和spinning.js放置到E:\seajs\officialsample\static\hello\src目录
4. 在E:\seajs\officialsample\app下创建hello.html
4.1 该html在div中引入11个图片,代码如下图所示:
4.2 为了使用sea.js,需要在html中引入sea.js
<script src="../sea-modules/seajs/seajs/2.1.1/sea.js"></script>
4.3 由于控制图片元素需要使用到jquery.js,所以通过SeaJS的API引入jquery.js
<script>
seajs.config({
base: "../sea-modules/",
alias:{
"jquery": "jquery/jquery/1.10.1/jquery.js"
}
});
</script>
4.4 图片的渲染控制文件是spinning.js,为了使代码更加清晰,这里引用了main.js
seajs.use("../static/hello/src/main");
5. 在E:\seajs\officialsample\static\hello\src下创建main.js
define(function(require){
var Spinning = require("./spinning");
var s = new Spinning("#container");
s.render();
});
6. 在浏览器中打开hello.html文件,效果图如下:
二、官方示例简介
1. 为了节省学习官方示例时间,大家可以从附件中下载压缩包,解压后运行即可。
2. 为了让hello.html中的图片有转动效果,需要使用spinning.js管理这些<img>元素。同时在spinning.js中需要通过JQuery获取<img>元素,那么通常情况下在hello.html中要引入spinning.js和jquery.js,且jquery.js要在spinning.js之前加载,类似:
<script src="../sea-modules/jquery/jquery/1.10.1/jquery.js"></script>
<script src="../static/hello/src/spinning.js"></script>
但官方示例中并没有这样做,而只是引用了一个sea.js文件,为了使用jquery.js,这里调用了SeaJS的config API类似:
<script src="../sea-modules/seajs/seajs/2.1.1/sea.js"></script>
<script>
seajs.config({
base: "../sea-modules/",
alias:{
"jquery": "jquery/jquery/1.10.1/jquery.js"
}
});
</script>
3. 为了使代码逻辑更清晰,使用了main.js管理spinning.js。同时为了让sea.js认识main.js,必须使用seajs.use API且按SeaJS的要求定义main.js。类似:
seajs.use("../static/hello/src/main");
define(function(require){
require("./spinning"); // 引入依赖模块
var s = new Spinning("#container");
s.render();
});
附件:http://down.51cto.com/data/2363213
本文转自qingkechina 51CTO博客,原文链接:http://blog.51cto.com/qingkechina/1257600,如需转载请自行联系原作者