对于requirejs AMD模块加载的理解
个人人为使用模块化加载的优点有三:
1,以我的项目为例:90%为图表展示,使用的是echarts,此文件较大,requirejs可以在同一个版本号(urlArgs)之下缓存文件,那么我就可以在访问登陆页(不需要图表的加载,但是没说不能请求啊~~~)的时候异步将echarts库加载下来缓存,那么你之后的页面速度会飞一般的快(只需要将版本号作为变量存储,每次更新代码之后修改一次版本好就行了)
2,requirejs本身采用的就是js的异步加载防止页面失去响应,打开页面的时候css会优先渲染,会让用户先看到界面
3,引进模块化的概念,消除全局变量,很大程度上解决了变量覆盖和冲突的问题(很重要,代码量打的时候如果出现变量或者函数覆盖的情况,很头疼很头疼找不出来问题)
4,引进模块化的概念,将每个功能作为独立出来,使耦合性降低(开发阶段分出来的js会有些多,但是在部署阶段需要使用r.js进行模块整合)
对于requirejs加载模式的进一步理解:
1,只要是AMD规范的模块,在模块和shim中都可以管理依赖,不遵循的依赖就只能用shim管理(exports暴露变量给requirejs,然后就可以在调用的时候注入使用了)
2,path中声明模块时需要确认载入的是否是具名模块(模块中带id),如果是具名模块,声明的名字和id必须一致。当一般情况下推荐模块写成匿名的
3,path中可以以数组的形式声明模块,如:
require.config({
baseUrl: "js",
urlArgs: "v=1.222",
paths: {
jquery: [
"//cdn.bootcss.com/jquery/1.10.1/jquery.min",
"jquery-1.8.3.min"]
},
shim: {
}
});
这里对于jquery,会先加载cdn资源,加载异常才会加载本地资源
对于requirejs AMD模块加载的理解的更多相关文章
- 一个简单的AMD模块加载器
一个简单的AMD模块加载器 参考 https://github.com/JsAaron/NodeJs-Demo/tree/master/require PS Aaron大大的比我的完整 PS 这不是一 ...
- requirejs:模块加载(require)及定义(define)时的路径理解
给新来的实习生普及下JS基本知识,看到比较好的文章 转载https://blog.csdn.net/xuxiaoping1989/article/details/52384778 接触过require ...
- requirejs:模块加载(require)及定义(define)时的路径小结
原文地址:http://www.tuicool.com/articles/7JBnmy 接触过requirejs的童鞋可能都知道,无论是通过define来定义模块,还是通过require来加载模块,模 ...
- JavaScript AMD 模块加载器原理与实现
关于前端模块化,玉伯在其博文 前端模块化开发的价值 中有论述,有兴趣的同学可以去阅读一下. 1. 模块加载器 模块加载器目前比较流行的有 Requirejs 和 Seajs.前者遵循 AMD规范,后者 ...
- 实现一个类 RequireJS 的模块加载器 (二)
2017 新年好 ! 新年第一天对我来说真是悲伤 ,早上兴冲冲地爬起来背着书包跑去实验室,结果今天大家都休息 .回宿舍的时候发现书包湿了,原来盒子装的牛奶盖子松了,泼了一书包,电脑风扇口和USB口都进 ...
- 如何解决requireJs的模块加载超时
requireJs的加载是一种异步机制,它加载js的时候有个默认的超时机制,当加载一个js超过一定时间的时候,它就会在浏览器中抛出模块加载超时错误,接下来,就不会加载这个模块. 这个机制其实是起到了节 ...
- js与AMD模块加载
目的: 了解AMD规范与CMD规范,写一个模块加载器雏形. 基本概念: AMD是异步模块定义规范,而CMD是通用模块定义规范.其他的还有CommonJS Modules规范. 对于具体的规范,可以参考 ...
- seaJS 模块加载过程分析
先看一个seajs的官方example, 以下以seajs.use('main')为例, 解析加载mod main的过程 //app.html seajs.use("main") ...
- 【模块化编程】理解requireJS-实现一个简单的模块加载器
在前文中我们不止一次强调过模块化编程的重要性,以及其可以解决的问题: ① 解决单文件变量命名冲突问题 ② 解决前端多人协作问题 ③ 解决文件依赖问题 ④ 按需加载(这个说法其实很假了) ⑤ ..... ...
随机推荐
- php学习日志(2)-php变量
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变量(例如:$x=$y+$z).变量的定义主要有以下规则: 变量以$开始,后面跟着变量的名称: 变量名 ...
- Programming Collective Intelligence
最近正在拜读 O'reilly出版的Programming Collective Intelligence,准备研究研究搜索引擎了,童鞋们,到时候会考虑公布源码哦!
- 《ENVI下遥感影像自然真彩色合成方法》——TM、spot5
来源:http://blog.sina.com.cn/s/blog_764b1e9d0100tz4f.html#bsh-73-375271630
- 2、[转]WPF与WinForm的比较
http://www.cnblogs.com/KnightsWarrior/archive/2010/07/09/1774059.htmlhttp://www.cnblogs.com/zenghong ...
- easy ui easyui-linkbutton 禁用、启用
<a id="btn_update_Shop" name="btn_update_Shop" class="easyui-linkbutton& ...
- 使用Yeoman搭建 AngularJS 应用 (11) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/prepare-production.html 让我们发布这个应用 优化产品的文件 为了创建应用的产品版本,我们想做如下的事情 检查你的代码 ...
- [转]struct实例字段的内存布局(Layout)和大小(Size)
在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Alig ...
- EhCache 分布式缓存/缓存集群(转)
开发环境: System:Windows JavaEE Server:tomcat5.0.2.8.tomcat6 JavaSDK: jdk6+ IDE:eclipse.MyEclipse 6.6 开发 ...
- Android进程守护
http://blog.csdn.net/t12x3456/article/details/8982198 http://blog.csdn.net/ljx19900116/article/detai ...
- hdu 4672 Present Day, Present Time 博弈论
看了解题报告才知道怎么做!! 题意:有 N 堆石子和 M 个石子回收站,每回合操作的人可以选择一堆石子,从中拿出一些 放到石子回收站里(可以放进多个回收站,每个回收站可以使用无数次),但每个石子回收站 ...