sea.js+jQuery+jQueryMobile的模块化开发

由于现在整个前端都尽量要使用模块化开发,因此不可避免需要使用到前置依赖组件(AMD:如require.js)或就近依赖组件(CMD:如sea.js)。

        本文主要是sea.js对jquery及依赖jquery的插件如jQueryMobile的模块化整合。当然还涉及到grunt等自动化管理工具。这些都是做前端模块化开发必不可少的知识。对sea.js还不熟悉的同学请先移步到sea.js官网


用一个案例说明:

目录结构:


index.html文档:

<div class="container">
    <!--礼包列表-->
    <ul class="list">
        <li class="item">
            <i class="icon icon-gift"></i>
            <h4>新手大礼包</h4>
            <p>钻石*50、白银宝箱*2、白银钥匙*2、白银匙*2、 法杖*2、百宝箱*2、金钥匙*2</p>
            <input type="button" value="领取" class="gift-btn get-btn J_getBtn" data-role="none"/>
        </li>
        <li class="item">
            <i class="icon icon-gift"></i>
            <h4>五一集赞礼包</h4>
            <p>钻石*50、白银宝箱*2、白银钥匙*2、白银匙*2、 法杖*2、百宝箱*2、金钥匙*2</p>
            <input type="button" value="复制" class="gift-btn copy-btn" data-role="none"/>
        </li>
    </ul>
</div>


jquery.js的CMD规范:

define( function(require, exports, module) {
//下面为jquery源码

    return $.noConflict(true);
});
jQueryMobile.js的CMD规范:

define( function(require, exports, moudles) {
    return function(jQuery) {
//jqueryMobie.js源码

   };
});
注意,因为jqueryMobile并非默认支持CMD规范,因而要手动修改源码,将

(function ( root, doc, factory ) {
	if ( typeof define === "function" && define.amd ) {
		// AMD. Register as an anonymous module.
		define( [ "jquery" ], function ( $ ) {
			factory( $, root, doc );
			return $.mobile;
		});
	} else {
		// Browser globals
		factory( root.jQuery, root, doc );
	}
}( this, document, function ( jQuery, window, document, undefined ) {
//中间保留的源码

}));
这段代码删除,以便后来将jquery整个对象传递给jqueryMobile实现扩展。

接下来便可使用grunt打包,最后在index.js中,需要把jquery对象传给jQueryMobile实现扩展

define(function(require, exports, moudule){
var $ = require('jquery');
    require('jqueryMobile')($);//将$对象赋给jqueryMobile
//测试下jqueryMobile是否引入成功
$(function(){
        //点击领取
                $('.J_getBtn').on('tap',function(e){
                    console.log('mm');
                });
    });
})
点击领取按钮,最后可以发现在控制台看到



当然,我只是踩了好几个坑才摸索出这个方法,应该还有其他方法。希望大家集思广益,找出更简单有效的方法。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值