requirejs 是一个根据需要加载javascript模块的框架。但是有时候在一个项目中,我们可能需要根据不同的平台或者浏览器加载不同的模块,下面我们通过举一个例子介绍一个简单的方法解决这些问题。
工具/原料
假如我们现在有以下需要
1、如果浏览器原生支持JSON对象,则不加载JSON2模块,否则,加载JSON2
2、我们现在有2个文件,一个用来操作localStorage,命名为StorageModel.js,一个用来操作cookie,命名为CookieModel.js;假如浏览器支持localStorage,则我们加载StorageModel.js而不加载CookieModel.js,否则加载CookieModel.js而不加载StorageModel.js
下面我们来解决这个问题
方法/步骤
1
判断是否支持
//-------------下面是代码-----------
var SUPPORT_JSON=(typeof(JSON)!=='undefined');//如果支持则为true,不支持则false
var SUPPORT_STROAGE=(typeof(Storage)!=='undefined')
//----------------------------------
2
requirejs配置
//-------------------------
require.config({
paths:{
/ 当SUPPORT_STORAGE 的值为true时,表达式的值为'/StorageModel';为false时,表达式的值为'/CoookieModel';这样就达到了根据情况加载其中一个模块的效果
'model':(SUPPORT_STORAGE && '/StorageModel')||'/CookieModel',/
'json':'/json2'
}
});
//-------------------------
3
载入代码
//--------------------------------
//下面 (SUPPORT_JSON &&'model')||'json' 当SUPPORT_JSON 的为true时,则表达式的值为'model',而前面已经载入'model'所以会被忽略,当SUPPORT_JSON为false时,则表达式的值为'json',那么就会载入json2模块
require('model',(SUPPORT_JSON &&'model')||'json'],
function(){
//......
});
//--------------------------------