作家
登录

RequireJS模块化编程详解

作者: 来源: 2017-05-18 12:06:31 阅读 我要评论

  1. <script src=http://developer.51cto.com/art/201705/"js/require.js"></script> 

data-main属性的感化是,指定网页法度榜样的主模块。在上例中,就是js目次下面的main.js,这个文件会第一个被require.js加载。因为require.js默惹9依υ?件后缀名是js,所以可以把main.js简写成main。

require.config()的设备

应用require.config()办法,我们可以对模块的加载行动进行自定义。require.config()就写在主模块(main.js)的头晨。参数就是一个对象,这个对象的paths属性指定各个模块的加载路径。

  1. require.config({ 
  2. baseUrl: "js/lib"
  3. paths: { 
  4. "jquery""jquery.min"
  5. "underscore""underscore.min"
  6. "backbone""backbone.min" 
  7. });  
  1. var module1 = (function(){ 
  2. var _count = 0; 
  3. var m1 = function(){ 
  4. //... 
  5. }; 
  6. var m2 = function(){ 
  7. //... 
  8. }; 
  9. return { 
  10. m1 : m1, 
  11. m2 : m2 
  12. }; 
  13. })();  

AMD模块的写法

模块必须采取特定的define()函数来定义。如不雅一个模块不依附其他模块,那么可以直接定义在define()函数之中。

  1. // math.js 
  2. define(function (){ 
  3. var add = function (x,y){ 
  4. return x+y; 
  5. }; 
  6. return { 
  7. addadd 
  8. }; 
  9. });  

加载办法如下:

应用"急速履行函数"(Immediately-Invoked Function Expression,IIFE),可以达到不裸露私有成员的目标。

  1. // main.js 
  2. require(['math'], function (math){ 
  3. alert(math.add(1,1)); 
  4. });  

如不雅这个模块还依附其他模块,那么define()函数的第一个参数,必须是一个数组,指明该模块的依附性。

  1. define(['myLib'], function(myLib){ 
  2. function foo(){ 
  3. myLib.doSomething(); 
  4. return { 
  5. foo : foo 
  6. }; 
  7. });  

当require()函数加载膳绫擎这个模块的时刻,就会先加载myLib.js文件。

define()的完全定义:

关于define函数的name和require函数的依附名称之间的关系

1)define(name,[] , callback); 这个name可以省掉落,默认是文件名称;当然也可以自定义,一旦我们定义了name,根据源代码我们可以发明define函数内部其实就是把这个name以及依附模块、回调函数作为一个对象存储在全局的数组傍边,也就是 defQueue.push([name,deps,callback]);那么这个name就是这个组件注册的的ID!


  推荐阅读

  如何安装pandom : 一个针对Linux的真随机数生成器

本教程只针对 amd64/x86_64 架构 Linux 内核版本大年夜于等于 2.6.9 的体系。本文将解释若何安装 pandom,这是一个由 ncomputers.org 保护的准时颤抖真随机数生成器。我们老是建议在应用>>>详细阅读


本文标题:RequireJS模块化编程详解

地址:http://www.17bianji.com/lsqh/35293.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)