本文是requireJS的一些知识点的总结,配上多页面应用中的实例分析。
本案例的目录结构如下:
requireJS API的三个主要函数:define(创建模块),require(加载模块),config(配置)
1、 HTML文件中加载JS文件
page1.html内容如下:
<!DOCTYPE html><html><head><title>Page 1</title><script data-main="scripts/page1" src="scripts/lib/require.js"></script></head><body><a href="page2.html">Go to Page 2</a></body></html>
page2.html内容如下:
<!DOCTYPE html><html><head><title>Page 2</title><script data-main="scripts/page2" src="scripts/lib/require.js"></script></head><body><a href="page1.html">Go to Page 1</a></body></html>
知识扩展:
data-main属性指定网页程序的主模块,这个文件被requireJS首先加载。由于requireJS默认的文件后缀名是js,所以可以把page1.js简写成page1
加载脚本文件的根路径优先规则
用require()加载模块时,省略.js后缀,会从baseUrl下查找;如果带有.js后缀、或以”/"开始、或包含URL协议(http/https)则将根
据你的具体路径设置去查找
config > data-main > 默认baseUrl
不对data-main和config进行设置,则默认baseUrl为引用require.js的那个HTML页面所在目录
设置data-main,则baseUrl为主模块所在目录(如第一段HTML中的主模块为page1.js,因此以其所在目录/scripts为根目录)
配置config,显式设置baseUrl,也可为每一个模块单独设置路径
2、对模块的路径等进行配置
使用require.config()方法,可以对模块的加载行为进行自定义。在多页面应用中,可以将配置写在共用的文件中,如本例中的common.js文件,然后各个页面加载当前配置后,在回调函数中再加载各自需要的模块。
common.js代码如下:
require.config({baseUrl: 'scripts/app',paths: {jquery: ['http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min','../lib/jquery']}});
知识扩展:
支持的配置项:
baseUrl :
所有模块的查找根路径。注意:当加载的js文件(以.js结尾、以”/”开头、含有协议),不会使用baseUrl;
paths :
path映射那些不直接放置于baseUrl下的模块名。设置path时起始位置是相对于baseUrl的,除非该path设置以"/"开头或含有URL协议;
注意:在paths中定义的路径不能含有.js后缀,因为路径解析机制会自动添加上.js后缀;而且加载路径可以设置多个,如从CDN加载失败,则加载本地js文件;
shim:
为那些没有使用define()来声明依赖关系的模块进行配置;
新闻热点
疑难解答
图片精选