首页 > 语言 > JavaScript > 正文

第二次聊一聊JS require.js模块化工具的基础知识

2024-05-06 14:59:22
字体:
来源:转载
供稿:网友

前一篇:JS模块化工具我们以非常简单的方式引入了requirejs://www.Vevb.com/article/82527.htm,这一篇将讲述一下requirejs中的一些基本知识,包括API使用方式等

基本API

require会定义三个变量:define,require,requirejs,其中require === requirejs,一般使用require更简短

define 从名字就可以看出这个api是用来定义一个模块
require 加载依赖模块,并执行加载完后的回调函数
前一篇中的a.js:

define(function(){  function fun1(){   alert("it works");  }  fun1();})

 通过define函数定义了一个模块,然后再页面中使用:

require(["js/a"]);
来加载该模块(注意require中的依赖是一个数组,即使只有一个依赖,你也必须使用数组来定义),requir API的第二个参数是callback,一个function,是用来处理加载完毕后的逻辑,如:

require(["js/a"],function(){  alert("load finished");})

加载文件

之前的例子中加载模块都是本地js,但是大部分情况下网页需要加载的JS可能来自本地服务器、其他网站或CDN,这样就不能通过这种方式来加载了,我们以加载一个jquery库为例:

require.config({  paths : {    "jquery" : ["http://libs.baidu.com/jquery/2.0.3/jquery"]   }})require(["jquery","js/a"],function($){  $(function(){    alert("load finished");   })})

这边涉及了require.config,require.config是用来配置模块加载位置,简单点说就是给模块起一个更短更好记的名字,比如将百度的jquery库地址标记为jquery,这样在require时只需要写["jquery"]就可以加载该js,本地的js我们也可以这样配置:

require.config({  paths : {    "jquery" : ["http://libs.baidu.com/jquery/2.0.3/jquery"],    "a" : "js/a"   }})require(["jquery","a"],function($){  $(function(){    alert("load finished");   })})

通过paths的配置会使我们的模块名字更精炼,paths还有一个重要的功能,就是可以配置多个路径,如果远程cdn库没有加载成功,可以加载本地的库,如:

require.config({  paths : {    "jquery" : ["http://libs.baidu.com/jquery/2.0.3/jquery", "js/jquery"],    "a" : "js/a"   }})require(["jquery","a"],function($){  $(function(){    alert("load finished");   })})

这样配置后,当百度的jquery没有加载成功后,会加载本地js目录下的jquery

在使用requirejs时,加载模块时不用写.js后缀的,当然也是不能写后缀
上面例子中的callback函数中发现有$参数,这个就是依赖的jquery模块的输出变量,如果你依赖多个模块,可以依次写入多个参数来使用:

require(["jquery","underscore"],function($, _){  $(function(){    _.each([1,2,3],alert);  })})
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选