requireJS 用法
2016-07-22 22:12
381 查看
requireJS使用教程 2.0
常用方法
requirejs.config : 为模块指定别名
requirejs : 将写好的模块进行引入,根据模块编写主代码
define : 编写模块
html
main.js
validate.js
以上就是简单用法
实际情况
1、datetimepicker 不支持 requirejs,需要用到shim参数
module
侧栏工具条开发
加载js
RequireJS以一个相对于baseUrl的地址来加载所有的代码,而baseUrl一般设置到与该属性相一致的目录。也可以通过config函数设置。
有时候你想避开"baseUrl + paths"的解析过程,而是直接指定加载某一个目录下的脚本。此时可以这样做:如果一个module ID符合下述规则之一,其ID解析会避开常规的"baseUrl + paths"配置,而是直接将其加载为一个相对于当前HTML文档的脚本:
以 ".js" 结束.
以 "/" 开始.
包含 URL 协议, 如 "http:" or "https:".
项目库/三方库
有些库并没有使用define()来定义它们的依赖关系,你必须为此使用shim config来指明它们的依赖关系。 如果你没有指明依赖关系,加载可能报错。这是因为基于速度的原因,RequireJS会异步地以无序的形式加载这些库。
data-main
你在main.js中所设置的脚本是异步加载的。所以如果你在页面中配置了其它JS加载,则不能保证它们所依赖的JS已经加载成功。
定义模块
特殊情况处理:
1、浏览器全局变量注入型的库,使用shim。比如 jquery.ui 依赖qjuery
2、CommonJS模块格式,需要通过简单包装来实现。
接下来练习一个commonJS的例子
实际中碰到的问题
1、模块A引入模块B
方法一:在main文件中,通过函数的参数引入
方法二:在模块A中引入,如果某个方法用不到模块B,则debugger时,看不到模块B,真正实现按需加载。
常用方法
requirejs.config : 为模块指定别名
requirejs : 将写好的模块进行引入,根据模块编写主代码
define : 编写模块
html
<script src="../js/require.js" data-main='../js/main.js'></script>
main.js
require.config({ paths: { jquery: 'jquery-2.1.4' } }); requirejs(['jquery', 'validate'], function($, validate){ validate.test(); })
validate.js
define(['jquery'], function($){ return { test: function(){ $('body').css('backgroundColor', 'red'); } } });
以上就是简单用法
实际情况
1、datetimepicker 不支持 requirejs,需要用到shim参数
require.config({ shim: { 'bootstrap': ['jquery'], 'datepicker': ['bootstrap'], }, paths: { jquery: 'jquery-2.1.4', bootstrap: 'bootstrap', datepicker: 'bootstrap-datetimepicker' } }); requirejs(['jquery', 'bootstrap', 'datepicker', 'modules/datepicker'], function($, a, b, datepicker){ datepicker.datepicker('date'); })
module
define(['jquery'], function($){ return { datepicker: function(id){ $('.'+id).datetimepicker({ format: 'YYYY.MM.DD' }); } } });
侧栏工具条开发
加载js
RequireJS以一个相对于baseUrl的地址来加载所有的代码,而baseUrl一般设置到与该属性相一致的目录。也可以通过config函数设置。
有时候你想避开"baseUrl + paths"的解析过程,而是直接指定加载某一个目录下的脚本。此时可以这样做:如果一个module ID符合下述规则之一,其ID解析会避开常规的"baseUrl + paths"配置,而是直接将其加载为一个相对于当前HTML文档的脚本:
以 ".js" 结束.
以 "/" 开始.
包含 URL 协议, 如 "http:" or "https:".
项目库/三方库
www/ index.html js/ app/ sub.js lib/ jquery.js canvas.js app.js
有些库并没有使用define()来定义它们的依赖关系,你必须为此使用shim config来指明它们的依赖关系。 如果你没有指明依赖关系,加载可能报错。这是因为基于速度的原因,RequireJS会异步地以无序的形式加载这些库。
data-main
你在main.js中所设置的脚本是异步加载的。所以如果你在页面中配置了其它JS加载,则不能保证它们所依赖的JS已经加载成功。
定义模块
define({ color: 'black', size: 4 }); define(function(){ alert('set up'); return { color: 'black', size: 4 } }); 存在依赖的函数式定义:http://www.requirejs.cn/ 1.3.3 将模块定义为函数。返回函数
特殊情况处理:
1、浏览器全局变量注入型的库,使用shim。比如 jquery.ui 依赖qjuery
2、CommonJS模块格式,需要通过简单包装来实现。
接下来练习一个commonJS的例子
实际中碰到的问题
1、模块A引入模块B
方法一:在main文件中,通过函数的参数引入
方法二:在模块A中引入,如果某个方法用不到模块B,则debugger时,看不到模块B,真正实现按需加载。
相关文章推荐
- UVA 11538 Chess Queen
- 适配ios7的时候仿UIAlertView弹框效果,修改内部的label和button的属性
- UICollectionViewCell 3种创建方法
- Biee 迁移和刷新GUIDs
- GUI为什么不设计为多线程(用户事件和底层事件的流程是相反的,每层都加锁效率太低,共用一把锁那就是单线程)
- codeforces 691E Xor-sequences(矩阵快速幂)
- 【POJ 2533】Longest Ordered Subsequence(最长上升子序列LIS)
- cpuinfo和lscpu查看CPU相关的信息
- EasyUI ComboBox(下拉列表框)
- POJ 1947 Rebuilding Roads (树形dp + 01背包)
- UICollectionViewCell中cell的定义与自定义方式总结
- 获取Map中的所有value
- Handler,Looper,MessageQueue,ThreadLocal讲解以及实例
- Pin 3.0 User Guide
- iOS-UI之UICollectionView must be initialized with a non-nil layout parameter'解决方式
- SPOJ RMQSQ Range Minimum Query 《RMQ》
- 基于MVC+EasyUI的Web开发框架经验总结(10)--在Web界面上实现数据的导入和导出
- 基于MVC+EasyUI的Web开发框架经验总结(9)--在Datagrid里面实现外键字段的转义操作
- 基于MVC+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览
- 基于MVC+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动