个人人为使用模块化加载的优点有三:

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模块加载的理解的更多相关文章

  1. 一个简单的AMD模块加载器

    一个简单的AMD模块加载器 参考 https://github.com/JsAaron/NodeJs-Demo/tree/master/require PS Aaron大大的比我的完整 PS 这不是一 ...

  2. requirejs:模块加载(require)及定义(define)时的路径理解

    给新来的实习生普及下JS基本知识,看到比较好的文章 转载https://blog.csdn.net/xuxiaoping1989/article/details/52384778 接触过require ...

  3. requirejs:模块加载(require)及定义(define)时的路径小结

    原文地址:http://www.tuicool.com/articles/7JBnmy 接触过requirejs的童鞋可能都知道,无论是通过define来定义模块,还是通过require来加载模块,模 ...

  4. JavaScript AMD 模块加载器原理与实现

    关于前端模块化,玉伯在其博文 前端模块化开发的价值 中有论述,有兴趣的同学可以去阅读一下. 1. 模块加载器 模块加载器目前比较流行的有 Requirejs 和 Seajs.前者遵循 AMD规范,后者 ...

  5. 实现一个类 RequireJS 的模块加载器 (二)

    2017 新年好 ! 新年第一天对我来说真是悲伤 ,早上兴冲冲地爬起来背着书包跑去实验室,结果今天大家都休息 .回宿舍的时候发现书包湿了,原来盒子装的牛奶盖子松了,泼了一书包,电脑风扇口和USB口都进 ...

  6. 如何解决requireJs的模块加载超时

    requireJs的加载是一种异步机制,它加载js的时候有个默认的超时机制,当加载一个js超过一定时间的时候,它就会在浏览器中抛出模块加载超时错误,接下来,就不会加载这个模块. 这个机制其实是起到了节 ...

  7. js与AMD模块加载

    目的: 了解AMD规范与CMD规范,写一个模块加载器雏形. 基本概念: AMD是异步模块定义规范,而CMD是通用模块定义规范.其他的还有CommonJS Modules规范. 对于具体的规范,可以参考 ...

  8. seaJS 模块加载过程分析

    先看一个seajs的官方example,  以下以seajs.use('main')为例, 解析加载mod main的过程 //app.html seajs.use("main") ...

  9. 【模块化编程】理解requireJS-实现一个简单的模块加载器

    在前文中我们不止一次强调过模块化编程的重要性,以及其可以解决的问题: ① 解决单文件变量命名冲突问题 ② 解决前端多人协作问题 ③ 解决文件依赖问题 ④ 按需加载(这个说法其实很假了) ⑤ ..... ...

随机推荐

  1. 解决 Chrome 浏览器自动调整小于11px字体的问题

    不知道说是 Chrome 智能呢?还是说它多此一举?Chrome 浏览器中存在默认会自动将小于11px大小的字体调整为12px.我在写 BlueNight 主题的最新评论时候就设置了评论发布时间为11 ...

  2. 【Java Web】Eclipse中配置Marven环境

    1  Marven简介 Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信 ...

  3. 64位Python安装PIL

    写个小程序需要安装PIL,但是官网只有32位,无法找到64位安装路径.根据网上教程自行编译,但是由于VS版本问题总是提示“Python error: Unable to find vcvarsall. ...

  4. Inside of Jemalloc

    INSIDE OF JEMALLOCThe Algorithm and Implementation of Jemalloc author: vector03mail:   mmzsmm@163.co ...

  5. Oracle监听器—静态注册

    注册就是将数据库作为一个服务注册到监听程序.客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库.这个服务名可能与实例名一样,也有可能不一样. 注册分: 1. 静 ...

  6. 自己动手,丰衣足食。普通键盘实现键盘宏(Windows和Mac版)

    很多高端机械键盘,支持宏定义,例如我们可以设置"D"键为"dota",这样当我们按一下宏开启键,再按一下"D"键,就等价于分别按了" ...

  7. MVC5+EF6+BootStrap3.3.5 博客系统之项目搭建(一)

    环境:vs2013,sql2008R2 引用版本:MVC5,EF6,BootStrap3.3.5 在之前一直都是webfrom开发,虽然开发简单:但是有很多不足的地方.在之前开发都是webfrom+M ...

  8. 【BZOJ 1189】[HNOI2007]紧急疏散evacuate

    Description 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一块空地:如果是'X',那么表示这是一面墙,如果是'D',那么表示这是一 ...

  9. C# send mail with outlook and word mailmerge

    http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.document_members(v=office.15). ...

  10. 元素属性和js数组

    arrObj.push(数组元素) --增加arrObj.splice(index,howmany)--删除  一般howmany为1,  index,开始截取掉的位置,arrObj[index].P ...