基于学习的开始,如下内容所有摘录RequireJS中文网,先熟悉一下api。javascript
1,加载Javascript文件html
RequiresJS的目标是鼓励代码的模块化,它使用了不一样于传统<script>标签的脚本加载步骤。java
能够用它来加速、优化代码,但其主要的目的仍是为了代码的模块化。它鼓励在使用脚本时以jquery
module ID替代URL地址。canvas
RequireJS以一个相对于baseURL的地址来加载全部的代码。页面顶层<script>标签含有一个api
特殊的属性data-main,require.js使用它来启动脚本加载过程,而baseUrl通常设置到于该属浏览器
性相一致的目录。下列示例中展现了baseUrl的设置:app
<!--This sets the baseUrl to the "scripts" directory, and loads a script that will have a module Id of "mian" --> <script data-main="scripts/main.js" src="scripts/requires.js"></script>
baseUrl亦能够经过RequireJS config手动设置。若是没有显式指定config及data-main,则异步
默认的baseUrl为包含RequireJS的那个HTML页面的所属目录。async
RequireJS默认假定全部的依赖资源都是js脚本,所以无需在module ID上再加".js"后缀,
RequireJS在进行module ID到path的解析时会自动补上后缀。你能够经过paths config设置
一组脚本,这些有助于咱们在使用脚本时码更少的字。
有时候你想避开"baseUrl + paths" 的解析过程,而是直接指定加载某一个目录下的脚本。
此时能够这样作:若是一个module ID 符号下述规则之一,其ID解析会避开常规的"baseUrl +
paths" 配置,而是直接将其加载为一个相对于当前的HTML文档的脚本:
1,以 ".js" 结束;
2,以 "/" 开始;
3,包含URL 协议,如"http:" or "https"。
通常来讲,最好仍是使用baseUrl及"paths" config去设置 module ID。它会给你带来额外的
灵活性,如便于脚本的重命名、重定位等。同时,为了不凌乱的配置,最好不要使用多级嵌套
的目录层次来组织代码,而是要么将全部的脚本都放置到baseUrl中,要么分置为项目库/第三方
库的一个扁平结构,以下:
. www/
.index.html
.js/
. app/
.sub.js
.lib/
.jquery.js
.canvas.js
.app.js
index.html:
<script data-main="js/app.js" src="js/require.js"></script>
app.js:
requirejs.config({ //By default load any module IDs from js/lib baseUrl: 'js/lib', /* except, if the module ID starts with "app", load it from the js/app directory, paths config is relative to the baseUrl, and never includes a '.js' extension since the paths config could be for a directory. */ patch: { app: '../app' } } //Start the main app logic. requirejs(['jquery','canvas','app/sub']); function( $, canvas, sub ){ });
理想情况下,每一个加载的脚本都是经过define()来定义的一个模块; 但有些“浏览器全局变量注入”型的传统/遗留库
并无使用define()来定义他们的依赖关系,你必须为此使用 shim config 来指明它们的关系。若是你没有指明依赖
关系,加载可能报错。这是由于基于速度的缘由,RequireJS会异步地以无序的形式加载这些库。
data-main 入口点
require.js 在加载的时候回检察data-main属性:
<!--when require.js loads it will inject another script tag (with async attribute) for script/main.js--> <script data-main="scripts/main" src="scripts/require.js"></script>
你能够在data-main指向的脚本中设置模板加载选项,而后加载第一个应用模块。注意:你在
main.js中所设置的脚本时异步加载的。因此若是你在页面中配置了其余JS加载,则不能保证它们
所依赖的JS已经加载成功。