随身笔记
随身笔记

requirejs模块管理插件简单介绍及案例

requirejs跟seajs差不多都属于模块管理插件,简单来说就是将页面上的众多加载js的文件综合整理,让首页只加载一条js文件,让页面代码看起来简洁。

直接放例子:

以下是常规的做法:

JS:

<script src="js/jquery-1.8.3.min.js"></script>
<script src="js/velocity.min.js"></script>
<script src="js/velocity.ui.js"></script>
<script>
 $(function(){
 
  $.Velocity.RegisterUI("callout.zidingyi", {
    defaultDuration: 3000,
    calls: [ 
      [ { rotateZ: 1080 }, 0.50 ],
      [ { scaleX: 0.5 }, 0.25, { easing: "spring" } ],
      [ { scaleX: 1 }, 0.25, { easing: "spring" } ]
    ]
  });
  $('.c').velocity('callout.zidingyi');

 });
</script>

HTML:

<div class="c">1</div>
<div class="c">2</div>
<div class="c">3</div>

如果遇到大项目的时候JS文件加载更多,而且还要考虑JS加载的依赖顺序。

以下是引用requirejs修改后的代码:

JS:

<script data-main="js/main" src="js/require.js"></script>

对首页就只加载一条JS文件即可。

重点是要介绍main.js文件,如下:

require.config({
  shim: {
    velocity:['jquery'], //要加载velocity先加载jquery,以下类同
    velocityui: ['velocity'],
    jshome:['velocityui'],
  },
  paths: {
    jquery: 'jquery-1.8.3.min', //jquery是jquery-1.8.3.min的别名以下类同
    velocity:'velocity.min',
    jshome:'1', //这里的1.js就是自己要写的逻辑代码
    velocityui : 'velocity.ui',
  }
});
 
require(['jshome']); //在shim上设置依赖加载顺,所以这里加载jshome会按顺序加载jquery>velocity>velocityui>jshome

以后需要哪些依赖的模块只需要引入别名即可,也要保持顺序,例如要依赖jquery和velocity.min:
require(['jquery','velocity'],function(){  //这里就引入了2个依赖文件
    // 这里写自己需要的代码
});

Require.js中使用jQuery 插件

虽然jQuery的支持AMD的API, 这并不意味着jQuery插件也是和AMD兼容的。

 (function ($) {
   $.fn.m​​yPlugin = function () {
     //你自己的插件代码
   };
})(jQuery);

不过我们稍微修改一下就可以使用Require.js加载一个jQuery插件:

;(function (factory) {
 if (typeof define === "function" && define.amd) {
 // AMD模式
 define([ "jquery" ], factory);
 } else {
 // 全局模式
 factory(jQuery);
 }
}(function ($) {
   $.fn.jqueryPlugin = function () {
     //插件代码
   };
}));

Require.js中使用jQuery UI组件

Require.js中使用jQuery UI组件也类似的,只要改造一下jQuery Widget Factory 代码就可以了,并且感觉jQuery UI的依赖关系加载就可以了。例如:

(function (widgetFactory) {
if (typeof define === "function" && define.amd) {
 // AMD模式
 define("jquery.ui.widget", ["jquery"], function () {
widgetFactory(window.jQuery);
});
 } else {
 // 全局模式
 widgetFactory(window.jQuery);
 }
}
(function ($, undefined) {
// jQuery Widget Factory 代码
}));

http://www.jb51.net/article/50724.htm

没有标签
首页      前端资源      requirejs模块管理插件简单介绍及案例

随身笔记

requirejs模块管理插件简单介绍及案例
requirejs跟seajs差不多都属于模块管理插件,简单来说就是将页面上的众多加载js的文件综合整理,让首页只加载一条js文件,让页面代码看起来简洁。 直接放例子: 以下是常规的做法:…
扫描二维码继续阅读
2015-05-07