作家
登录

RequireJS模块化编程详解

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

  1. var math = require('math'); 

然后,就可声调用模块供给的办法:

2009年,美公法度榜样员Ryan Dahl创造了node.js项目,将javascript说话用于办事器端编程。

  1. var math = require('math'); 
  2.  
  3. math.add(2,3); // 5  

因为这个系列重要针对浏览器编程,不涉及node.js,所以对CommonJS就不多做介绍了。我们在这里只要知道,require()用于加载模块就行了。

有了办事器端模块今后,很天然地,大年夜家就想要客户端模块。并且最好两者可以或许兼容,一个模块不消修改,在办事器和浏览器都可以运行。

然则,因为一个重大年夜的局限,使得CommonJS规范不实用于浏览器情况。照样上一节的代码,如不雅在浏览器中运行,会有一个很大年夜的问题,你能看出来吗?

  1. var math = require('math'); 
  2.  
  3. math.add(2, 3);  

这对办事器端不是一个问题,因为所有的模块都存放在本地硬盘,可以同步加载完成,等待时光就是硬盘的攫取时光。然则,对于浏览器,这倒是一个大年夜问题,因为模块都放在办事器端,等待时光取决于网速的快慢,可能要等很长时光,浏览器处于"假逝世"状况。

是以,浏览器端的模块,不克不及采取"同步加载"(synchronous),只能采取"异步加载"(asynchronous)。这就是AMD规范出生的背景。

假定如今有一个math.js文件,它定义了一个math模块。那么,math.js就要如许写:

  1. define('sample3' ,['sample','sample1'],function (sample,sample1) { 
  2.     var sample4 = require('sample4'); 
  3.     return function(){ 
  4.         alert(sample.name+':'+sample.sayhell()); 
  5.     } 
  6. });  

AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采取异步方法加载模块,模块的加载不影响它后面语句的运行。所有依烂魅这个模块的语句,都定义在一个回调函数中,比及加载完成之后,这个回调函数才会运行。

AMD也采取require()语句加载模块,然则不合于CommonJS,它请求两个参数:

  1. require([module], callback); 

第一个参数[module],是一个数组,琅绫擎的成员就是要加载的模块;第二个参数callback,则是加载成功之后的回调函数。如不雅将前面的代码改写成AMD情势,就是下面如许:

  1. require(['math'], function (math) { 
  2.  
  3. math.add(2, 3); 
  4.  
  5. });  

math.add()与math模块加载不是同步的,浏览器不会产生假逝世。所以很显然,AMD比较合适浏览器情况。

3.require.js的加载

有人可能会想到,加载这个文件,也可能造成网页掉去响应。解决办法有两个,一个是把它放在网页底部加载,另一个是写成下面如许:

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

async属性注解这个文件须要异步加载,避免网页掉去响应。IE不支撑这个属性,只支撑defer,所以把defer也写上。

加载require.js今后,下一步就要加载我们本身的代码了。假定我们本身的代码文件是main.js,也放在js目次下面。那么,只须要写成下面如许就行了:

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

      推荐阅读

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

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


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

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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