js模块化编程 : require.js
2015-10-16 19:10
417 查看
目录
目录一 requirejs的诞生
二 Javascript模块化的规范
三 requirejs具有如下优点
四 requirejs的使用
五详细概念请参考
六DEMO
一 、 require.js的诞生
为了解决以下两个问题而诞生:(1)实现js文件的异步加载,避免网页失去响应; (2)管理模块之间的依赖性,便于代码的编写和维护。
二、 Javascript模块化的规范
Javascript模块规范共有两种:CommonJS 和 AMD。三、 requirejs具有如下优点:
(1)防止js加载阻塞页面渲染(2)RequireJS是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一。最新版本的RequireJS压缩后只有14K,堪称非常轻量。它还同时可以和其他的框架协同工作,使用RequireJS必将使您的前端代码质量得以提升。
(3)使用程序调用的方式加载js,防止出现如下丑陋的场景
<script type="text/javascript" src="a.js"></script> <script type="text/javascript" src="b.js"></script> <script type="text/javascript" src="c.js"></script> ...... <script type="text/javascript" src="z.js"></script>
四、 requirejs的使用
(1) 首先加载requireJS (注意:async属性表明这个文件需要异步加载,避免网页失去响应。IE不支持这个属性,只支持defer,所以把defer也写上。)<script src="js/require.js" data-main="js/main"></script>
(2)其次进行配置 使用require.config()方法,我们可以对模块的加载行为进行自定义。require.config()就写在主模块(main.js)的头部。参数就是一个对象,这个对象的paths(有三种配置方式)属性指定各个模块的加载路径。
path配置方式:
一种则是直接改变基目录(baseUrl):
require.config({ baseUrl: "js/lib", paths: { "jquery": "jquery.min", "math": "math" } });
如果某个模块在另一台主机上,也可以直接指定它的网址:
paths: { "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min" }
全路径配置:
require.config({ paths: { "jquery": "js/lib/jquery.min" } });
(3)书写模块 (math.js)
define(function () { var add = function (x, y) { return x + y; }; return { add: add }; });
(4)模块化调用(main.js)
require(['math'], function (math){ alert(math.add(1,1)); });
(五)详细概念请参考
RequireJS和AMD规范(六)DEMO
demo下载相关文章推荐
- iOS开发系列之UI基础:设置PCH
- VS中报错 “ Error:未定义标识符 cvRodrigues2“
- 关于UIAlertController 的一些用法
- Android在其他线程中更新UI
- Hibernate错误:Unable to build the default Bean Validator Factory
- [UI]实用案例--Shape绘制实用圆圈
- intent,requesrcode,resultcode开发总结
- iOS将UIView转换成UIImageView
- druid简单教程
- 【ROS】Ubuntu12.04下ROS-Fuerte安装及工作环境配置
- java hashMap 查询效率非常高,看一下根据key找value,根据value找key
- Top 10 Java Serialization Interview Questions and Answers
- iOS中 FMDB第三方SQLite数据库 UI_20
- iOS中 FMDB第三方SQLite数据库 UI_20
- phpCAS::handleLogoutRequests()关于java端项目登出而php端项目检测不到的测试
- iOS UITableView 相关知识
- iOS开发之UIlabel多行文字自动换行 (自动折行)
- UIView hitTest:withEvent:方法流程
- iOS 中UUID唯一标记的使用
- ios UIView animateWithDuration 学习