RequireJS模块的建立:插件化体验 - demo演示篇

新建一个RequireJS模块:作为jQuery验证插件进行使用。


一、 前文的目录结构

结合前文的目录结构和相关文件,在lib文件夹下,新建js文件:lib/validation-plugin.js

二、 相关文件的全部代码示下:

1、文件 validation-plugin.js 代码块:

我们在该文件内,以jQuery插件形式编写验证模块,指定jQuery作为它的唯一依赖。
该模块检查某一个输入值,符合Email格式返回true,不符合返回false

/* validation-plugin.js */define(["jquery"], function ($){$.fn.isValidEmail = function (){var isVaild = true,regEx = /\S+@\S+\.\S+/;this.each(function (){if (!regEx.test(this.value)){isVaild = false;}});return isVaild;}
});
2、文件 main.js 代码块:

前文参考: // 4. 内容分发网络和后备 的代码

// 4. 内容分发网络和后备
requirejs.config({paths: {"jquery": [// CDN"https://ajax.googleapis.com/ajax/jquery/1.10.2/jquery.min",// 如果CDN不能正常运作,则从本地文件加载"lib/jquery-1.11.1"]}
});// 本次新增验证代码块
require(["jquery", "lib/validation-plugin"], function ($){var $form = $("#form"),$email = $("#email");$form.on("submit", function (e){e.preventDefault();if ($email.isValidEmail()){$form.get(0).submit();} else {$email.addClass("error").focus();}});$email.on("keyup", function (){$email.removeClass("error");});});

三、总结 && 效果截图:

1. 总结:
  • 在调用define()函数进行模块建立时,省略了模块名这个可选参数。

  • 这样,此模块就会以本文件相对于require.js文件的相对位置文件名进行注册。

  • 其他对此模块有依赖的文件可以通过“ lib/validation-plugin ” 这个模块名来引用此模块。

依赖项处理完毕,接着就是主应用脚本main.js的代码编写。
.
这里不打算用define()函数。
作为替代,可以使用RequireJS或AMD API都有的函数:require()函数
.
两者的区别:

  • RequireJS适用于声明模块,以便以后使用;
  • AMD API适用于不需要建立可重用的模块、只需要加载各个依赖直接执行的场合。
    .
    后者适用我们的main.js主应用脚本,即:一次性执行,不需要重用。

当所用事情结束,首页index.html文件在浏览器执行时,jQuery库将会先加载,然后是验证插件模块。你可能会注意到我在前文的定义验证模块时也指定了jQuery作为验证模块的依赖。

RequireJS的一个优点就是当遇到一个已经被引用过的依赖时,它会使用缓存在客户端内存中的值,而不是再次下载。
这样,我们就能专注于正确定义代码文件依赖,而不需要考虑所需要下载的数据量。

  • 一旦所有依赖项加载完毕,匿名函数就会执行,来自于依赖项的返回值将作为匿名函数的参数传入函数体内。
  • 因为我们把验证模块定义为了jQuery的一个插件,并没有指定返回值,它将会添加到jQuery的 $变量其他插件普遍都是这种做法
2. 模块引用:前、后效果图,对比示下:


以上就是关于 “ RequireJS模块的建立:插件化体验 - demo演示篇 ” 的全部内容。

RequireJS模块的建立:插件化体验 - demo演示篇相关推荐

  1. 大熊君JavaScript插件化开发------(实战篇之DXJ UI ------ ItemSelector)

    一,开篇分析 Hi,大家好!大熊君又和大家见面了,还记得前两篇文章吗.主要讲述了以"jQuery的方式如何开发插件",以及过程化设计与面向对象思想设计相结合的方式是 如何设计一个插 ...

  2. 代码高亮插件——wangHightLighter.js——demo演示

    wangHighLighter.js demo 语言:   主题: 转换 说明: wangHightLighter.js是一个可以将代码高亮显示的javascript小插件,支持常用的20多语言.多个 ...

  3. 【unity 保卫星城】--- 开发笔记(Demo演示篇)

    [unity 保卫星城]- 开发笔记 保卫星城 一.游戏介绍 <保卫星城>是一款移动端2D横板射击类游戏,使用Unity3D引擎开,与一般的打飞机需要躲避子弹不同,本游戏需要玩家控制小飞机 ...

  4. 爱奇艺开源轻量级插件化方案 Neptune

    爱奇艺近日开源了其轻量级插件化方案 Neptune,项目地址:https://github.com/iqiyi/Neptune 插件化框架可以在主程序不重新安装的情况下,针对单个业务模块进行动态加载达 ...

  5. android:使用small一步步实现插件化与热更新

    由于插件化开发与热更新最近貌似越来越火,新开的项目准备也使用插件化进行开发!其中遇到不少坑,在这里写了一个小的例子,记录一下开发流程,有助于自己,同时希望能够帮助大家理解,并且对于自身项目接入插件化有 ...

  6. 爱奇艺插件化之Neptune

    2019独角兽企业重金招聘Python工程师标准>>> 爱奇艺APP从2013年就开始了插件化技术的研究和改造,截止目前一共有20多个独立业务模块以插件化的方式运行和并行迭代,其中包 ...

  7. linux系统怎么安装爱奇艺_爱奇艺插件化之Neptune

    爱奇艺APP从2013年就开始了插件化技术的研究和改造,截止目前一共有20多个独立业务模块以插件化的方式运行和并行迭代,其中包括APP首页的奇秀.文学.电影票.漫画等业务.开发插件化框架的Demo并不 ...

  8. 酷狗 Android App 插件化实施过程

    什么是插件化框架     插件化框架可以在主程序不重新安装的情况下,针对单个业务模块进行加载达到模块更新的目的,整个加载更新过程,对用户来说也是无感知的.     正式因为这样,新需求比起传统更新方式 ...

  9. Autoware入门学习(三)——Autoware软件功能使用介绍(1/3)及demo演示

    文章目录 1 Autoware 的官方 demo 演示 1.1 数据下载(点击链接or指令均可) 1.2 Demo 运行 2 Autoware 软件功能使用介绍(1/3) 2.1 Quick Star ...

最新文章

  1. 基于Windows配置COLMAP环境
  2. [BTCC] 要“工程师”“工程师”“工程师”
  3. myeclipse10安装了activiti插件后创建BPMN 文件时报错,
  4. android闹钟提醒
  5. redis学习及实践5---redis相关资料参考文献
  6. Qt高级——QTestLib单元测试框架
  7. apache安装配置
  8. 利用display属性写的遮罩层
  9. android seekbar 圆角,android - 最小或最大时,圆角android seekbar的ui奇怪行为 - 堆栈内存溢出...
  10. 基数树(radix tree)
  11. BZOJ2002[HNOI2010] 弹飞绵羊(分块)
  12. 一键卡iPhoneQQ在线
  13. java教程配置通达信_通达信公式转换JAVA,一招最绝的选股技巧
  14. 使用Python编写简单的端口扫描程序
  15. finereport与finebi差别_FineBI与FineReport对比
  16. win10电脑不小心卸载的软件怎么恢复
  17. php薄饼,厦门薄饼
  18. 微信小程序创建节点选择器获取宽高wx.createSelectorQuery
  19. 计算机开机选择用户界面,Windows10每次开机都会出现选择操作系统界面的解决方法...
  20. 使用DGV列获取Combox绑定所有的列为筛选条件

热门文章

  1. 图解从上电到执行main函数的处理
  2. 解决苹果os 10.9 和 parallels desktop 8 兼容问题
  3. 探讨 .NET 4 新增的 SortedSet 类
  4. linux 与有什么不同
  5. redis命令 举例
  6. 【转】盖茨给职场新人的10句话
  7. GridView里的一点小功能:截取多余字符、改变鼠标经过行的样式
  8. 计算机单招六百分好考吗,单招分数线一般多少 单招考过的几率有多少
  9. windows apche php mysql zend_Windows XP上安装配置 Apache+PHP+Mysql+Zend
  10. java集合继承_java集合继承关系