• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > requireJS多页面应用实例

requireJS多页面应用实例

作者:qupeng666的博客 字体:[增加 减小] 来源:互联网 时间:2017-08-02

qupeng666的博客通过本文主要向大家介绍了应用,实例,require.js等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

原文出自:http://www.cnblogs.com/zhenwen/p/5604342.html       (长文章时间充足的话一定要耐心看完..)

 

本文是requireJS的一些知识点的总结,配上多页面应用中的实例分析。


本案例的目录结构如下:

 


requireJS API的三个主要函数:define(创建模块),require(加载模块),config(配置)

 

1、 HTML文件中加载JS文件

page1.html内容如下:

复制代码

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <title>Page 1</title>
 5         <script data-main="scripts/page1" src="scripts/lib/require.js"></script>
 6     </head>
 7     <body>
 8         <a href="page2.html">Go to Page 2</a>
 9     </body>
10 </html>

复制代码

page2.html内容如下:

复制代码

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <title>Page 2</title>
 5         <script data-main="scripts/page2" src="scripts/lib/require.js"></script>
 6     </head>
 7     <body>
 8         <a href="page1.html">Go to Page 1</a>
 9     </body>
10 </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代码如下:

复制代码

1 require.config({
2     baseUrl: 'scripts/app',
3     paths: {
4         jquery: [
5             'http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min',
6             '../lib/jquery'
7         ]
8     }
9 });

复制代码

 

知识扩展:

支持的配置项:

baseUrl :

  所有模块的查找根路径。注意:当加载的js文件(以.js结尾、以”/”开头、含有协议),不会使用baseUrl;

paths :

  path映射那些不直接放置于baseUrl下的模块名。设置path时起始位置是相对于baseUrl的,除非该path设置以"/"开头或含有URL协议;

  注意:在paths中定义的路径不能含有.js后缀,因为路径解析机制会自动添加上.js后缀;而且加载路径可以设置多个,如从CDN加载失败,则加载本地js文件;

shim:

  为那些没有使用define()来声明依赖关系的模块进行配置;

  其中需要注意两个参数:

    (1)exports值(输出的变量名),暴露方法接口
    (2)deps数组,表明该模块的依赖性

  如:

复制代码

 1 require.config({
 2     baseUrl: '/scripts/lib',
 3     shim:{
 4         zepto: {
 5             exports: '$'
 6         },
 7         backbone: {
 8             deps: ['underscore', 'zepto'],
 9             exports: 'Backbone'
10         },
11         'zepto.animate': ['zepto']
12     }
13 });

复制代码

 

3、模块的加载 

page1.js代码如下:

1 require(['./common'], function (common) {
2     require(['sayPage1'], function (sayPage1) {
3         sayPage1.hello();
4     });
5 });

page2.js代码如下:

1 require(['./common'], function (common) {
2     require(['sayPage2'], function (sayPage2) {
3         sayPage2.hello();
4     });
5 });

 

知识拓展: 

 require()函数接受两个参数。第一个参数是一个数组,表示所依赖的模块;第二个参数是一个回调函数,当前面指定的模块都加载成功后,它才会被调用。加载的模块可以作为回调函数的参数进行调用。

  这里为了保证配置完成后才加载需要的模块,主要是为了路径的正确解析,在回调函数中再进行require。

 

4、模块的定义

sayPage1.js中的代码:

复制代码

1 define(['jquery'], function($) {
2     function sayHi(){
3         $('body').append('<h1>Hello page1!</h1>');
4     }
5     return {
6         hello: sayHi
7     }
8 });

复制代码

 

知识扩展: 

  define函数也接受两个参数。第一个参数为所依赖模块组成的数组,第二个参数是一个回调函数。

 

  当然最后上线的时候还要进行JS文件的合并与压缩,可以利用r.js,方便快捷~

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • nodejs 终端打印进度条实例代码
  • 微信小程序商城项目之侧栏分类效果(1)
  • 作为老司机使用 React 总结的 11 个经验教训
  • Bootstrap DateTime Picker日历控件简单应用
  • Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
  • vuejs响应用户事件(如点击事件)
  • bootstrap实现的自适应页面简单应用示例
  • 微信小程序 支付功能开发错误总结
  • AngularJS实现路由实例
  • requireJS多页面应用实例

相关文章

  • 2017-05-11jQuery中table数据的值拷贝和拆分
  • 2017-05-11JavaScript数据结构之二叉树的计数算法示例
  • 2017-05-11微信小程序实现图片轮播及文件上传
  • 2017-05-11jQuery点击头像上传并预览图片
  • 2017-05-11详解webpack es6 to es5支持配置
  • 2017-05-11jquery 仿锚点跳转到页面指定位置的实例
  • 2017-05-11Javascript 使用ajax与C#获取文件大小实例详解
  • 2017-08-31js日期与字符串之间相互转换
  • 2017-05-11bootstrap中模态框、模态框的属性实例详解
  • 2017-05-11xmlplus组件设计系列之按钮(2)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 微信小程序 基础知识css样式media标签
    • Bootstrap 3 进度条的实现
    • js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
    • 前端编码规范(3)JavaScript 开发规范
    • JS简单获取日期相差天数的方法
    • 深入理解Javascript箭头函数中的this
    • jQuery制作图片旋转效果
    • 通过修改360抢票的刷新频率和突破8车次限制实现方法
    • 微信JS-SDK选取手机照片上传功能
    • javascript 实现小球碰撞

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有