zoukankan      html  css  js  c++  java
  • require函数

    require API 介绍 https://github.com/amdjs/amdjs-api/wiki/require

    require是一个基于AMD规范实现的函数,它区别于传统的CommonJS require规范。因为它能够异步地加载动态的依赖,所以,我们对基于require的回调方式有了更多的需求。

    局部require vs 全局require

    局部require可以被解析成一个合符AMD工厂函数规范的require函数。

    例如:

    1     define(['require'], function (require) {
    2         //the require in here is a local require.
    3     });
    4 
    5     define(function (require, exports, module) {
    6         //the require in here is a local require.
    7     });

    局部require也支持其他标准实现的API。

    全局require函数作用于全局,和define()类似。 全局require和局部require有着相同的行为,包含以下特征:

    • 模块ID应该认为是一个绝对的模块名称,而不是相对另一个模块的ID。
    • 只有在同步的时候,基于require的回调才可以立即的运行,因为它不可能在顶层通过require(String)的形式同步地加载模块

    实际中,我们经常会遇到一些阻塞模块加载的依赖,如果交互次数很多,需要大量的模块加载,应该采用全局依赖的形式去加载顶层模块。

    require(String)

    基于以下规范CommonJS Modules 1.1.1 require.根据参数,同步地返回模块ID所代表的模块。

    如果模块没有加载或者执行完成,就会抛出错误。特别需要指出的是,在同步加载的回调中,如果模块没有加载完成,禁止动态的获取模块,否则,就会抛出异常。

    使用define()定义模块时,依赖项中可以找到一个AMD模块:

    1     define(function (require) {
    2         var a = require('a');
    3     });

    工厂方法可以被解析成require('')的调用形式(例如,使用语法解析器或者使用Function.prototype.toString()或者正则表达式)去找到依赖,加载并且执行依赖,然后执行工厂方法内部代码,通过这样的方式,就可以获取到模块。

    require(Array, Function)

    参数Array是一个由模块ID组成的数组。当模块ID所以代表的模块加载完成且可用时,回调函数Function才开始执行,并且只被执行一次。各个模块按照依赖数组中的位置顺序以参数的形式传入到Function里。

    例如:

    1     define(function (require) {
    2         require(['a', 'b'], function (a, b) {
    3             //modules a and b are now available for use.
    4         });
    5     }); 



    require.toUrl(String)

    将形如[module ID] + '.extension'这种字符形式转化成URL路径。

    require.toUrl()方法采用通用的模块ID路径转化规则,将模块ID字符解析成URL路径.但它不支持以".js"这种扩展形式。所以,我们必须将'.extension'添加到了解析路径里。

    例如:

    1     //cart.js contents:
    2     define (function(require) {
    3         // 模块ID名 './templates/a'
    4         // 扩展名 '.html'
    5         // 模板路径大致以这样的形式结尾 'modules/cart/templates/a.html'
    6         var templatePath = require.toUrl('./templates/a.html');
    7     });
  • 相关阅读:
    阿里巴巴FastJSON使用实例
    JSON知识点
    java序列化和反序列化
    JAVA里的VO、BO、PO分别指什么?
    Oracle基础语句练习记录
    maven命令
    maven官方教程
    linux下开启、关闭、重启mysql服务
    linux常用命令记录
    动态网页项目无法启动
  • 原文地址:https://www.cnblogs.com/sere/p/4810597.html
Copyright © 2011-2022 走看看