1. //方法一:将函数绑定到原型上
  2. define(function(require, exports, module) {
  3. $.fn.tab = function(option, callback) {
  4. function bootstrap() {
  5. console.log('djsakhdkj');
  6. }
  7. bootstrap();
  8. }
  9. $(function(){
  10. $().tab();//因为将tab绑定到$原型上,所以要使用$().tab()去调用
  11. })
  12. })
  13.  
  14. //方法一(2):将函数绑定到jquery的原型上
  15. define(function(require, exports, module) {
  16. $.tab = function(option, callback) {
  17. function bootstrap() {
  18. console.log('djsakhdkj');
  19. }
  20. bootstrap();
  21. }
  22. $(function(){
  23. $.tab();//因为将tab绑定到$原型上,所以要使用$.tab()去调用
  24. })
  25. })

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

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

  1. <div id="demo-content" data-ui="u-tab">
  2. <ul>
  3. <li class="cur" data-ui="tab-nav"><a href="javascript:void(0);">青春</a>
  4. </li>
  5. <li class="" data-ui="tab-nav"><a href="javascript:void(0);">彩虹</a>
  6. </li>
  7. <li class="" data-ui="tab-nav"><a href="javascript:void(0);">歌唱</a>
  8. </li>
  9. </ul>
  10. <div class="tab-content">
  11. <div data-ui="tab-content">tab1</div>
  12. <div data-ui="tab-content">tab2</div>
  13. <div data-ui="tab-content">tab3</div>
  14.  
  15. </div>
  16. </div>

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

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

  1. //方法二:直接写函数形式
  2. define(function(require, exports, module) {
  3. var tab = function(option, callback) {
  4. function bootstrap() {
  5. console.log('545');
  6. }
  7. bootstrap();
  8. }
  9. $(function(){
  10. tab();//因为将tab绑定到$原型上,所以要使用$().tab()去调用
  11. })
  12. })

上面对应的html中调用:

  1. seajs.use('./../../js/tab');

第三种方法:

  1. //方法三:使用module.exports向外提供函数接口,html中代码为:
  2. // seajs.use('./../js/calendar', function () {
  3. // init();
  4. // });
  5. define(function(require, exports, module) {
  6. $.fn.tab = function(option, callback) {
  7. function bootstrap() {
  8. console.log('djsakhdkj');
  9. }
  10. bootstrap();
  11. }
  12. $(function(){
  13. init=function(){
  14. $().tab();//因为将tab绑定到$原型上,所以要使用$().tab()去调用
  15. }
  16. module.exports=init;
  17. })
  18. })

对应的html文件:

  1. seajs.use('./../js/calendar', function (initBox) {
  2. initBox();
  3. });

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

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

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

  1.  

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

  1. seajs封装js方法

    必须要先引入sea.js文件 <script src="js/sea.js"></script> 其次,引入其他js文件 <script> se ...

  2. Node.js模块封装及使用

    Node.js中也有一些功能的封装,类似C#的类库,封装成模块这样方便使用,安装之后用require()就能引入调用. 一.Node.js模块封装 1.创建一个名为censorify的文件夹 2.在c ...

  3. Angular JS - 9 - SeaJS加载js模块

    seajs加载模块的三种方式 1.seajs.use() 加载入口模块,类似于Java的main函数 2.require:      当在一个模块中需要用到其它模块时一般用require加载 1)   ...

  4. 【 js 模块加载 】深入学习模块化加载(node.js 模块源码)

    一.模块规范 说到模块化加载,就不得先说一说模块规范.模块规范是用来约束每个模块,让其必须按照一定的格式编写.AMD,CMD,CommonJS 是目前最常用的三种模块化书写规范.  1.AMD(Asy ...

  5. 【 js 模块加载 】【源码学习】深入学习模块化加载(node.js 模块源码)

    文章提纲: 第一部分:介绍模块规范及之间区别 第二部分:以 node.js 实现模块化规范 源码,深入学习. 一.模块规范 说到模块化加载,就不得先说一说模块规范.模块规范是用来约束每个模块,让其必须 ...

  6. 彻底搞清楚javascript中的require、import和export(js模块加载规范的前世今生)

    为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 但是,Javascript不是一种模块化编程语言,在es6以前,它是不支持”类”(class),所以也 ...

  7. JS模块规范:AMD,CMD,CommonJS

    浅析JS模块规范 随着JS模块化编程的发展,处理模块之间的依赖关系成为了维护的关键. AMD,CMD,CommonJS是目前最常用的三种模块化书写规范. CommonJS CommonJS规范是诞生比 ...

  8. 第三课:sea.js模块加载原理

    模块加载,其实就是把js分成很多个模块,便于开发和维护.因此加载很多js模块的时候,需要动态的加载,以便提高用户体验. 在介绍模块加载库之前,先介绍一个方法. 动态加载js方法: function l ...

  9. JS模块规范 前端模块管理器

    一:JS模块规范(为了将js文件像java类一样被import和使用而定义为模块, 组织js文件,实现良好的文件层次结构.调用结构) A:CommonJS就是为JS的表现来制定规范,因为js没有模块的 ...

随机推荐

  1. [必会] 表单验证+弹框~老司机原生js

    <!DOCTYPE html><html><head> <meta charset="gb2312"> <title>恰 ...

  2. JQuery_简单选择器

    jQuery 最核心的组成部分就是:选择器引擎.它继承了 CSS 的语法,可以对 DOM 元素的标签名.属性名.状态等进行快速准确的选择,并且不必担心浏览器的兼容性. jQuery选择器实现了 CSS ...

  3. java jar包解析:打包文件,引入文件

    java jar包解析:打包文件,引入文件 cmd下: jar命令:package包打包 javac命令:普通类文件打包 Hello.java: package org.lxh.demo; publi ...

  4. ubuntu忘记密码怎么办

    刚安装了,ubuntu14.04,就想着,如果忘记登录密码,这可不好办,所以测试下开机,刚过bios显示画面,不停的点击,,键盘左边的shift键.(因为刚开始是采用按着不放的办法,结果不灵.所以我不 ...

  5. MVC5 + EF6 入门完整教程二:从前端的UI开始

    从前端的UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分. ASP.NET MVC抛弃了WebForm的一些特有的习惯,例如服务器端控件,Vie ...

  6. eclipse 本地项目提交到远程库以及从远程库中添加项目 ---git

    本地项目提交到远程库 1.右击项目->team->share project 2.选择本地库 从远处库中的项目拉到本地 1.右击项目->import项目

  7. ios资源

    ios 资源 分类: ios开发2012-05-30 16:39 573人阅读 评论(0) 收藏 举报 ios文档calendar2010reference图像处理 学习过程当中查找到的资料,做一个记 ...

  8. KnockOut.js入门示例详解

    KnockOut框架简称KO,是微软将应用于WPF/Silverlight的MVVM模式在Web上的尝试,这是一个非常有用的JavaScript框架. KO的核心就是绑定,包括数据绑定和行为绑定: K ...

  9. ConvertFrom-String 命令研究

    -------先上个例子------- $aaa = @'0.027 0.034 0.834 0.1050.346 0.558 0.018 0.0780.001 0.997 0.001 0.0010. ...

  10. 自己常用的8个Web在线工具

    为什么要用 Web 在线工具呢?有两个原因,第一,它不受限于物理平台,我既可以在自己的电脑上使用,也可以在公司或亲戚朋友的电脑上使用(不管对方的操作系统是什么,只要能上网):第二,可以解放硬盘,减少 ...