RequireJS的目标是鼓励代码的模块化,它使用了不同于传统<script>标签的脚本加载步骤。可以用它来加速、优化代码,但其主要目的还是为了代码的模块化。它鼓励在使用脚本时以module ID替代URL地址。

优点

  • 防止js加载阻塞页面渲染(<head>中写<script>会阻塞中内容的加载)
  • 使用程序调用的方式加载js,防出现大量<script>加载代码

例子

目录结构

index.html

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><script data-main="js/data_main.js" src="js/lib/require.js"></script><title></title></head><body></body>
</html>

data_main.js

requirejs.config({baseUrl:'js',paths:{app:'app',app1:'/requireJsWeb/js/app1',jquery : ["http://libs.baidu.com/jquery/2.0.3/jquery"]}
});
//建议写在html中,不同html加载不同js
require(['jquery','app','app1'],function($){$(function(){alert("load finished");  })
});

require中的依赖是一个数组,即使只有一个依赖,你也必须使用数组来定义,require API的第二个参数是callback,一个function,是用来处理加载完毕后的逻辑。
baseUrl亦可通过RequireJS config手动设置。如果没有显式指定config及data-main,则默认的baseUrl为包含RequireJS的那个HTML页面的所属目录。
RequireJS默认假定所有的依赖资源都是js脚本,因此无需在module ID上再加".js"后缀,RequireJS在进行module ID到path的解析时会自动补上后缀。
有时候你想避开"baseUrl + paths"的解析过程,而是直接指定加载某一个目录下的脚本。此时可以这样做:如果一个module ID符合下述规则之一,其ID解析会避开常规的"baseUrl + paths"配置,而是直接将其加载为一个相对于当前HTML文档的脚本:

  • 以 “.js” 结束.
  • 以 “/” 开始.
  • 包含 URL 协议, 如 “http:” or “https:”.

app.js

(function app(){alert('app.js')}());

模块不同于传统的脚本文件,它良好地定义了一个作用域来避免全局名称空间污染。它可以显式地列出其依赖关系,并以函数(定义此模块的那个函数)参数的形式将这些依赖进行注入,而无需引用全局变量。RequireJS的模块是模块模式的一个扩展,其好处是无需全局地引用其他模块。

app1.js

(function app1(){alert('app1.js');})();

参考:
http://www.runoob.com/java/java-collections.html
http://www.requirejs.cn/

requirejs学习相关推荐

  1. RequireJS学习笔记(转)

    前言 进入移动前端是很不错的选择,这块也是我希望的道路,但是不熟悉啊... 现在项目用的是require+backbone,整个框架被封装了一次,今天看了代码搞不清楚,觉得应该先从源头抓起,所以再看看 ...

  2. requirejs学习之-- 初始化(一)

    为了规范在项目中使用的javascript代码,我们使用了requirejs框架. 初始阶段,我们在按钮的点击事件中调用创建的模块,代码如下: function button_click() {_th ...

  3. requirejs 学习笔记 0

    2019独角兽企业重金招聘Python工程师标准>>> require.config({waitSeconds : 12,paths:{jquery : "https:// ...

  4. requireJs学习06requirejs引入

    项目常见目录结构:js目录.index.html js目录下:apps目录.libs目录.main.js文件(主入口文件) index.html <!DOCTYPE html> <h ...

  5. requireJs学习心得

    记录自己requireJs的开发心得,大神勿喷! 1.几种依赖注入方式 define([require,path/myMod1,path/moMod2], function(require,mod1, ...

  6. requirejs加载顺序_【requireJS源码学习03】细究requireJS的加载流程

    前言 这个星期折腾了一周,中间没有什么时间学习,周末又干了些其它事情,这个时候正好有时间,我们一起来继续学习requireJS吧 还是那句话,小钗觉得requireJS本身还是有点难度的,估计完全吸收 ...

  7. requireJS文件夹

    前言 对于像我这样的requireJS刚開始学习的人而言,requireJS最难理解的部分应该是它的路径问题.晚上随便折腾了一下,算是略微理清了这个文件夹问题吧. requireJS学习网址:requ ...

  8. 最全前端资源---快过来 最新鲜的资源这里都有

    如果您阅读之后,感觉有缺失:麻烦您告诉我 我进行补充.谢谢 综合类 综合类 地址 前端知识体系 前端知识体系 - naniJser - 博客园 前端知识结构 https://github.com/Ja ...

  9. 前端资源分享-只为更好前端

    一.团队组织 网站 说明 腾讯 AlloyTeam 团队 腾讯Web前端团队,代表作品WebQQ,致力于前端技术的研究 ISUX 腾讯社交用户体验设计,简称ISUX,腾讯设计团队网站 CDC 腾讯用户 ...

最新文章

  1. Gradle 使用指南 -- 基础配置
  2. monodroid发布的最新版本
  3. 沪港通:利好出尽就是利空
  4. 文件 云存储服务器配置,文件和存储服务器配置
  5. c语言编译器怎样退出全屏,BOOX 应用软件怎样退出全屏模式?
  6. c#随机数的产生与输出【C#】
  7. c make干什么用得_CMake简单使用
  8. Ubuntu修改open files数
  9. 【小窍门tip】oracle sequence 修改增量值
  10. 利用postman测试post请求
  11. 系统功能测试思维导图
  12. Excel数据导出到txt文档
  13. PDF文件太大,两个超级实用方法压缩PDF
  14. 编程学习网站 收集于网络
  15. 9、recoil库的基本使用
  16. 不同安卓模拟器连接appium的端口
  17. API Promise化
  18. 企企通:数字化浪潮下,企业如何利用间接采购策略,实现降本增效?
  19. USB OTG简介、与普通USB线的区别
  20. 微信公众号开发之自动消息回复

热门文章

  1. vlayout源码解析
  2. 云计算学习需要什么样的电脑
  3. C#关于List的线程安全问题(一)
  4. miniSIP网络电话服务器搭建教程
  5. 金蝶服务器怎么修改ip地址,金蝶服务器账套ip地址修改
  6. UG后处理—文件格式大小判断研究
  7. 智慧城市中的LiFi
  8. ListBox控件—列表控件--常用的属性和方法
  9. m3u8格式直播地址
  10. 科技云报道原创:转型和赋能:企业数字化本质浮出水面