源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

RequireJS多页面应用实例分析

  • 时间:2022-03-25 00:50 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:RequireJS多页面应用实例分析
本文是requireJS的一些知识点的总结,配上多页面应用中的实例分析。 本案例的目录结构如下: requireJS API的三个主要函数:define(创建模块),require(加载模块),config(配置) [b]1、 HTML文件中加载JS文件[/b] 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>
[b]知识扩展:[/b] 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,也可为每一个模块单独设置路径 [b]2、对模块的路径等进行配置[/b]   使用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'
]
}
});
知识扩展: 支持的配置项: [b]baseUrl :[/b]   所有模块的查找根路径。注意:当加载的js文件(以.js结尾、以”/”开头、含有协议),不会使用baseUrl; [b]paths :[/b]   path映射那些不直接放置于baseUrl下的模块名。设置path时起始位置是相对于baseUrl的,除非该path设置以"/"开头或含有URL协议;   注意:在paths中定义的路径不能含有.js后缀,因为路径解析机制会自动添加上.js后缀;而且加载路径可以设置多个,如从CDN加载失败,则加载本地js文件; [b]shim:[/b]   为那些没有使用define()来声明依赖关系的模块进行配置;   其中需要注意两个参数:     (1)exports值(输出的变量名),暴露方法接口     (2)deps数组,表明该模块的依赖性   如:
require.config({
baseUrl: '/scripts/lib',
shim:{
zepto: {
exports: '$'
},
backbone: {
deps: ['underscore', 'zepto'],
exports: 'Backbone'
},
'zepto.animate': ['zepto']
}
});
[b]3、模块的加载[/b] page1.js代码如下:
require(['./common'], function (common) {
require(['sayPage1'], function (sayPage1) {
sayPage1.hello();
});
});
page2.js代码如下:
require(['./common'], function (common) {
require(['sayPage2'], function (sayPage2) {
sayPage2.hello();
});
});
[b]知识拓展:[/b]   require()函数接受两个参数。第一个参数是一个数组,表示所依赖的模块;第二个参数是一个回调函数,当前面指定的模块都加载成功后,它才会被调用。加载的模块可以作为回调函数的参数进行调用。   这里为了保证配置完成后才加载需要的模块,主要是为了路径的正确解析,在回调函数中再进行require。 [b]4、模块的定义[/b] sayPage1.js中的代码:
define(['jquery'], function($) {
function sayHi(){
$('body').append('<h1>Hello page1!</h1>');
}
return {
hello: sayHi
}
});
知识扩展:   define函数也接受两个参数。第一个参数为所依赖模块组成的数组,第二个参数是一个回调函数。   当然最后上线的时候还要进行JS文件的合并与压缩,可以利用r.js,方便快捷~ 以上所述是小编给大家介绍的RequireJS多页面应用实例分析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程素材网网站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部