zoukankan      html  css  js  c++  java
  • require笔札

    基于学习的开始,以下内容全部摘录RequireJS中文网,先熟悉一下api。

    1,加载Javascript文件

    RequiresJS的目标是鼓励代码的模块化,它使用了不同于传统<script>标签的脚本加载步骤。

    可以用它来加速、优化代码,但其主要的目的还是为了代码的模块化。它鼓励在使用脚本时以

    module ID替代URL地址。

    RequireJS以一个相对于baseURL的地址来加载所有的代码。页面顶层<script>标签含有一个

    特殊的属性data-main,require.js使用它来启动脚本加载过程,而baseUrl一般设置到于该属

    性相一致的目录。下列示例中展示了baseUrl的设置:

    <!--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页面的所属目录。

      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已经加载成功。

  • 相关阅读:
    我的.emacs配置文件
    C语言夜未眠5——变量前缀代表的含义
    c语言夜未眠4——对某一位或几位进行反转
    指针也可这么玩:返回局部指针变量,局部噢
    lua学习之table类型
    10个最“优秀”的代码注释
    为什么我希望用C而不是C++来实现ZeroMQ
    c语言夜未眠2——实现撤销和重做
    emacs学习笔记(基本概念)
    flutter json_serializable
  • 原文地址:https://www.cnblogs.com/branches/p/5134484.html
Copyright © 2011-2022 走看看