require笔札

基于学习的开始,如下内容所有摘录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已经加载成功。

相关文章
相关标签/搜索