requirejs基础

来源:互联网 发布:fifa online3新数据库 编辑:程序博客网 时间:2024/06/06 01:56

requirejs基础

随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,有时候js文件过多会导致加载慢等一系列的问题。

常用的方法:

requirejs.config
requirejs
define

requirejs.config

这里写图片描述
requirejs.config主要是指定模块的别名,这里jquery-1.9.1.js比较长,为了方便别的模块进行引入,所以我们将jquery-1.9.1.js修改为别名jquery

//配置别名,将jquery-1.9.1配置为别名jquery//require.config方法用来指定模块的别名,方便模块的引入requirejs.config({    paths:{        jquery:'jquery-1.9.1',    }});

有时候可以直接引入网络资源:

require.config({    paths : {        "jquery" : ["http://libs.baidu.com/jquery/2.0.3/jquery"],        "a" : "js/a"       }})

requirejs

//引入对应的模块,编写我们的主代码,$和validate相当于对象的概念,requirejs(['jquery','validate'],function($,validate){    $('body').css('background-color','red');    console.log(validate.isEqual(2222,2));});

可以看到我们引入了jquery这个模块,实际上就是jquery-1.9.1.js这个文件。
另外require===requirejs

//引入对应的模块,编写我们的主代码,$和validate相当于对象的概念,require(['jquery','validate'],function($,validate){    $('body').css('background-color','red');    console.log(validate.isEqual(2222,2));});

require和requirejs里面接受一个数组参数,表示要引入的模块,然后回到一个函数,加载完成执行的代码。

define

编写一个模块

//编写模块define(['validate'], function($) {    return{        isEmpty:function(){},        checkLength:function(){},        isEqual:function(str1,str2){            debugger            return str1==str2;        }    }});

将编写的函数功能放入到return中。

引用

<!DOCTYPE html><html><head>    <title>My Sample Project</title>    <!-- data-main attribute tells require.js to load             scripts/main.js after require.js loads. -->    <script data-main="js/main" src="js/require.js"></script></head><body>    <h1>My Sample Project</h1></body></html>

这里有一个data-main,作用是引入require.js之后。接下来调用的js文件。

扩展

理论上,require.js加载的模块,必须是按照AMD规范、用define()函数定义的模块。但是实际上,虽然已经有一部分流行的函数库(比如jQuery)符合AMD规范,更多的库并不符合。那么,require.js是否能够加载非规范的模块呢?
回答是可以的。
这样的模块在用require()加载之前,要先用require.config()方法,定义它们的一些特征。

requirejs.config({    baseUrl : "/"+contextName+"/static/js/yfq",    urlArgs: "v=2016061604",    paths : {        "underscore" : "./libs/underscore-min",        "zepto" : "./libs/zepto.min",        "touch" : "./libs/touch",        "fx" : "./libs/fx",        "fx_methods" : "./libs/fx_methods",        "class" : "./libs/class",        "utils" : "./utils",        "IScroll" : "./libs/iscroll-lite",        "doT" : "./libs/doT.min"    },    shim : {        "zepto" : {exports : "$"},        "touch" : {deps : ["zepto"]},        "fx" : {deps : ["zepto"]},        "fx_methods" : {deps : ["zepto"]},        "underscore" : {exports : "_"},        "doT" : {exports : "doT"},        "IScroll" : {exports : "IScroll"},        "utils" : {            exports : "utils",            init : function() {                return(Utils)            }        },    }});

require.config()接受一个配置对象,这个对象除了有前面说过的paths属性之外,还有一个shim属性,专门用来配置不兼容的模块。具体来说,每个模块要定义(1)exports值(输出的变量名),表明这个模块外部调用时的名称;(2)deps数组,表明该模块的依赖性。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 家里电路坏了怎么办 深圳户口没房怎么办 深圳租凭合同怎么办 房屋续租水电费怎么办 二手房买到凶宅怎么办 公租房退休之后怎么办 深圳公务员无房怎么办 深圳安居房回执遗失怎么办 社保网注册不了怎么办 深圳怎么办少儿医保卡 少儿没缴纳医保怎么办 上海辞职后社保怎么办 辞职去上学社保怎么办 辞职后异地社保怎么办 个人不想交社保怎么办 离职去异地社保怎么办 离职到外省社保怎么办 辞职去外省社保怎么办 永康光伏补贴怎么办? 找到工作后档案怎么办 夫妻离婚后户口怎么办 异地档案辞职后怎么办 去网吧没有招聘怎么办 建筑工地老板不给钱怎么办 2018高压电工证怎么办 深圳户口怎么办户口卡 在深圳找不到工作怎么办 亲戚户口不迁出怎么办 深圳集体户口准生证怎么办 天津集体户口怎么办准生证 深圳集体户离职户口怎么办 解析包出现错误怎么办 信息登记号没有怎么办 博士非211 985怎么办 下雨考科目二怎么办 公司新装修有甲醛怎么办 驾驶证c换证怎么办 科目一上课迟到怎么办 滴滴预约不到车怎么办 科目二考挂4次怎么办 车行易骗了怎么办