使用seajs封装js模块

//方法一:将函数绑定到原型上
define(function(require, exports, module) {
    $.fn.tab = function(option, callback) {
        function bootstrap() {
           console.log(‘djsakhdkj‘);
        }
        bootstrap();
    }
    $(function(){
        $().tab();//因为将tab绑定到$原型上,所以要使用$().tab()去调用
    })
})

//方法一(2):将函数绑定到jquery的原型上
define(function(require, exports, module) {
    $.tab = function(option, callback) {
        function bootstrap() {
           console.log(‘djsakhdkj‘);
        }
        bootstrap();
    }
    $(function(){
        $.tab();//因为将tab绑定到$原型上,所以要使用$.tab()去调用
    })
})

上面两个的区别是:$.calendar();不依赖与页面中的元素,是独立的,比如弹窗插件,就是独立于页面的;

$.fn.calendar();一般是依赖于页面元素的额,比如这个日历插件,需要依赖于一个input标签中,比如点击该input则产生弹窗:$(‘input‘).calendar();这个弹窗位于该input的位置,等等;再例如tab切换插件中:

<div id="demo-content" data-ui="u-tab">
        <ul>
            <li class="cur" data-ui="tab-nav"><a href="javascript:void(0);">青春</a>
            </li>
            <li class="" data-ui="tab-nav"><a href="javascript:void(0);">彩虹</a>
            </li>
            <li class="" data-ui="tab-nav"><a href="javascript:void(0);">歌唱</a>
            </li>
        </ul>
        <div class="tab-content">
            <div data-ui="tab-content">tab1</div>
            <div data-ui="tab-content">tab2</div>
            <div data-ui="tab-content">tab3</div>

        </div>
    </div>

调用该插件的时候就是使用的:$(‘#demo-content‘).tab();

所以日历插件有两种或思路:如果日历一直存在,则$(‘传入的是日历的class‘),日历下所有的元素都是依赖于该class的;如果日历需要点击input中才能出现,则$(‘input‘).calendar();这时需要按照input生成点击事件弹出日历;日历的相对input的位置;

//方法二:直接写函数形式
define(function(require, exports, module) {
    var tab = function(option, callback) {
        function bootstrap() {
           console.log(‘545‘);
        }
        bootstrap();
    }
    $(function(){
        tab();//因为将tab绑定到$原型上,所以要使用$().tab()去调用
    })
})

上面对应的html中调用:

seajs.use(‘./../../js/tab‘);

第三种方法:

//方法三:使用module.exports向外提供函数接口,html中代码为:
// seajs.use(‘./../js/calendar‘, function () {
//         init();
//     });
define(function(require, exports, module) {
    $.fn.tab = function(option, callback) {
        function bootstrap() {
           console.log(‘djsakhdkj‘);
        }
        bootstrap();
    }
    $(function(){
        init=function(){
            $().tab();//因为将tab绑定到$原型上,所以要使用$().tab()去调用
        }
        module.exports=init;
    })
})

对应的html文件:

seajs.use(‘./../js/calendar‘, function (initBox) {
        initBox();
    });

html文件中使用seajs引入calendar模块,并且根据calendar模块可以看出将函数名init作为接口:

module.exports=init;即,calendar向外提供函数借口init,html文件中的seajs.use接受该函数(此时两个名字可以不一样,init是js模块向外提供的借口函数;initBox是作为接收函数的参数名)function(initBox){  initBox();}执行该函数initBox();相当于执行模块中的函数init();然后init()函数再去调用$().tab()函数最后如果在其他的js文件中药日用seajs,则:
require(‘./calendar.js‘);
initBox();

先使用require引入calendar.js 文件,然后调用 initBox函数

 
时间: 2024-10-14 08:23:32

使用seajs封装js模块的相关文章

seajs封装js方法

必须要先引入sea.js文件 <script src="js/sea.js"></script> 其次,引入其他js文件 1 <script> 2 seajs.config({ 3 alias: { 4 "layer": "layer/layer.js", 5 "jsRender": "jquery.jsRender.min.js", 6 "dataInfo&q

Node.js模块封装及使用

Node.js中也有一些功能的封装,类似C#的类库,封装成模块这样方便使用,安装之后用require()就能引入调用. 一.Node.js模块封装 1.创建一个名为censorify的文件夹 2.在censorify下创建3个文件censortext.js.package.json.README.md文件 1).在censortext.js下输入一个过滤特定单词并用星号代替的函数. var censoredWorlds=["sad","bad","mad&

如何发布一个自定义Node.js模块到NPM(详细步骤)

咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着,以极少的文字说明以及极少的代码书写为原则来给大家演示! 文章中上传的模块不具备任何意义! 一.封装node.js模块时的必须项 1.创建package.json 每一个完整封装的node模块,必须含有一个参数明确的package.json文件! 以下为package.json的最精简配置: { "n

Node.js模块系统

为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码.JSON 或者编译过的C/C++ 扩展. 创建模块 在 Node.js 中,创建一个模块非常简单,如下我们创建一个 'main.js' 文件,代码如下: var hello = require('./hello'); hello.world(); 以上实例中

node.js 模块加载原理

来自BYVoid的<Node.js+开发指南> 2015-9-14 11:23:30 有时候我们只是想把一个对象封装到模块中,例如: //singleobject.js function Hello() { var name; this.setName = function (thyName) { name = thyName; }; this.sayHello = function () { console.log('Hello ' + name); }; }; exports.Hello

js模块化/js模块加载器/js模块打包器

之前对这几个概念一直记得很模糊,也无法用自己的语言表达出来,今天看了大神的文章,尝试根据自己的理解总结一下,算是一篇读后感. 大神的文章:http://www.css88.com/archives/7628(大神的文章写的很详细,建议先看完大神的文章) 一.js模块化 什么是js模块化,我们从历史说起. 1.一开始我们怎么写脚本?就是在html文件中用<script></script>写代码 这种方式的缺点:代码复用靠复制,基本是全局变量. 2.后来我们用js文件写代码,用<

node js 模块系统

Node.js模块系统 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码.JSON 或者编译过的C/C++ 扩展. 创建模块 在 Node.js 中,创建一个模块非常简单,如下我们创建一个 'hello.js' 文件,代码如下: var hello = require('./hello'); hello.w

3:Node.js模块系统

原文出自:http://www.w3cschool.cc/nodejs/nodejs-module-system.html Node.js模块系统 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码.JSON 或者编译过的C/C++ 扩展. 创建模块 在 Node.js 中,创建一个模块非常简单,如下我们创建

nodejs js模块加载

nodejs的非核心模块(core module)加载主要使用的就是module.js. 项目主模块(index.js/main.js等)加载使用的应该是module.js中的runMain(),其他js模块加载流程基本上是: 1,获取js文件信息: 2,new Module(): 3,读取js文件内容,封装到一个function中,同时注入module本身,module.exports,包装过的require函数等变量: 4,在某个上下文环境中执行这个封装后的function: 5,返回mod