1、引入seajs:
<script src="sea.js"></script>
2、程序入口是一个use方法,2个参数,一个是主js引用,一个是回调方法:
seajs.use("./xx.js", function(xxx) {
xxx.x(agrs);
});
3、模块定义方法:一个全局define()方法调用,方法的参数是一个匿名函数,所有逻辑写在函数体里:
define(function(require, exports) {
//模块逻辑
});
一个js就是一个模块,一个模块里全文就是调用一个define方法,js文件名就是模块名。
匿名函数有2个参数require, exports
require用来引入外部依赖,exports向外部提供模块内的方法
但是这个参数不是固定的,假如只依赖不对外提供方法,那么只用require参数
如果当前模块即无依赖也不对外提供方法那么一个参数都可以不要
4、模块的引用:
使用require方法:var mod = require("./xxoo"),参数为模块的路径,xxoo为模块名
5、外部如何调用模块内部的方法:
在模块内部,给exports加静态方法:
exports.xxx = function(url, succCall) {
//......
}
假如xxx方法是xxoo模块内部定义的方法,外部调用xxoo的xxx方法就是:
var mod = require("./xxoo");
mod.xxx(url,fun);
6、实例:
实现功能:将指定元素背景变成指定颜色
将根据id获取元素的逻辑做成一个模块叫:getEle
设置颜色的逻辑模块是:main,main要依赖getEle
目录结构:
html:
<style type="text/css"> .box{width:200px;height:200px;background:#999;} </style> <div class="box" id="J_box"></div> <script type="text/javascript" src="./sea/sea.js"></script> <script type="text/javascript"> seajs.use("./main.js", function(xxx) { xxx.set("J_box","green"); }); </script>
main.js:
define(function(require, exports) { var get = require("./getEle"); exports.set=function(str,color){ var obj = get.$(str); obj.style.backgroundColor=color; } });
getEle.js:
define(function(require, exports) { exports.$=function(str){ return document.getElementById(str); } });
代码完成后,打开index.html会看到一个红色的方块,那是因为程序的入口处设置了红色(原来是灰色#999):
seajs.use("./main.js", function(xxx) { xxx.set("J_box","green"); });
xxx是个句柄,它代表main模块,用来调用main模块对外提供的set方法
PS:本文使用seajs的方式比较山寨,要规范正确使用seajs还是要看官网,以后再慢慢看吧
参考:http://www.zhangxinxu.com/wordpress/2012/07/seajs-node-nodejs-spm-npm/
吐槽:看了不少人写的文章,介绍各种技术层面的文章,生怕自己说的东西太low,简单的不说,太细节的不说,高大上的概念,没有营养的吐槽一堆,再或者一堆你不懂的概念,你还没学会1+1=2,他就跟你说1*1=1,1*1=1几句讲完,又来说1/1也是等于1的,把你绕得云里雾里,像懂又不懂的,只觉得对方“很厉害的样子”,目的就达到了。开头和末尾还不忘加上“就是这么简单”,╮(╯▽╰)╭