AMD规范文档:https://github.com/amdjs/amdjs-api/wiki/AMD
异步模块定义(Asynchronous Module Definition AMD)API 详述了一种能够保证模块及其依赖能异步加载的定义模块机制。这特别适用于浏览器环境,该环境下模块的同步加载会导致性能,可用性,调试以及跨域访问等问题。
这与科技公司AMD和它生产的处理器没有关系
API规范
define()方法
本规范只定义了一个函数‘define’,该函数对象是全局变量。函数描述为:
define(id?,dependencies,factory)
id
第一个参数,id,是一个字符串字面量。它指定了被定义模块的id。该参数是可选的,如果参数不存在,模块id应该默认为模块加载器请求的指定脚本的名字。如果存在,那么模块id必须是“顶级”或者绝对id(不允许相对id)
模块id格式
模块id可用于标识被定义模块,也可用于依赖数组参数。AMD中的模块id是 CommonJS Module Identifiers规范所允许的id的超集。引用该规范:
一个模块id是一串由正斜杠分隔的标识名
一个标志名必须(只能)是驼峰式标识符或“.”或“..”
模块id不应该包含文件扩展名比如“.js”
模块id可以是“相对的”或“顶级的”。如果一个模块id的第一个标志名是“.”或“..”,那它就是相对的
顶级id应该从概念模块跟命名空间开始解析(?)
相对id从“require”被书写调用的模块开始关联解析
以上引用的CommonJS模块id属性被经常用于JavaScript模块
相对模块id解析示例:
如果模块“a/b/c”请求“../d”,则会解析成“a/d”
如果模块“a/b/c”请求“./e”,则解析成“a/b/e”
依赖
第二个参数,依赖,是一个模块id数组,这些id就是当前被定义模块所需的依赖模块。这些依赖的解析必须优先于被定义模块factory方法的执行,依赖解析值应该作为参数传给factory方法,且参数位置应该跟依赖数组相对应。
依赖id可能是相对id,应该相对于当前被定义模块进行解析。换言之,相对id应该相对于模块id进行解析,而不是相对于寻找模块id的路径(?)
这个规范定义了三个拥有不同解析方式的特殊依赖名。如果“require”,“exports”或者“module”在依赖列表中出现,这个参数就应该解析成CommonJS模块规范中定义的相应的自由变量
依赖参数是可选的。如果被忽略,它应该默认为["require","exports","module"],然而,如果factory方法的arity(长度属性)小于3,那么模块加载器应该选择只以方法的arity或length属性值对应参数数量来调用这个方法
factory
第三个参数,factory,是一个实例化模块时应该被调用的方法或则是一个对象。如果它是一个方法,它应该只被调用一次。如果是一个对象,那它应该作为这个模块的输出值
如果factory方法返回一个值(一个对象,方法,或任意可强制类型转换为true的值),那这个值就应该作为这个模块的输出值
简化的CommonJS wrapping
如果依赖参数被忽略,模块加载器可以选择扫描factory方法来查找require声明形式的依赖(语法字面形式为require(“module-id”))。第一个参数必须字面上被命名为“require”来保证这个机制运行
在某些情况下,模块加载器可能因为代码大小限制或缺少方法中对toString的支持(Opera Mobile就是如此)选择不去扫描查找依赖
如果依赖参数存在,模块加载器就不应该在factory方法中查找依赖
define.amd属性
为了明确标识一个全局define方法(浏览器加载脚本必须的?)符合AMD规范,任何全区define方法应该有一个“amd”属性,属性值是一个对象。这有助于避免与定义了不符合AMD规范的define()方法的以及存在代码产生冲突。
这个define.amd对象的内部属性,此规范当前并无特殊规定。此规范的实现者,可以用它来实现超出本规范接口基本实现的额外能力
define.amd的存在表明遵从这个规范,如果有其他版本的API,将会类似的定义另一个属性,比如define.amd2,来标志实现遵从哪个版本的API
关于如何为了一个 允许在一个环节中加载多个版本模块的实现 所定义的define.amd的例子:
define.amd = {
multiversion:true
};
最简定义
define.adm = {};
一个传输对个模块
在一个脚本中多次调用define方法是允许的。define方法的调用顺序应该是不重要的。较早的模块定义可能指定了在同一脚本中较晚的定义作为依赖。模块加载器有责任延迟加载未解析依赖直到整个脚本加载完毕,来避免没必要的请求
例子
使用require和exports
创建一个名为“alpha”的模块,使用了require,exports,和名为“beta”的模块:
define("alpha", ["require", "exports", "beta"], function (require, exports, beta) { exports.verb = function() { return beta.verb(); //Or: return require("beta").verb(); } });
一个返回对象的匿名模块
define(["alpha"], function (alpha) { return { verb: function(){ return alpha.verb() + 2; } }; });
一个没有依赖性的模块可以直接定义对象
define({ add: function(x, y){ return x + y; } });
一个使用简化CommonJS转换的模块定义:
define(function (require, exports, module) { var a = require('a'), b = require('b'); exports.action = function () {}; });
全局变量
本规范保留全局变量define来实现本规范。包原信息异步定义API是为将来的CommonJS API保留的。模块加载器不应该在此函数添加额外的方法或属性
本规范保留全局变量require给模块加载器使用,模块加载器可以自由的使用这个全局变量。可以使用这个变量以及按照想要的添加任意属性或方法来实现特定功能。也可以选择不使用require变量
相关推荐
AMD处理器编程指导手册是AMD公司为开发者和系统工程师提供的一份关键参考资料,旨在帮助他们理解和优化基于AMD Family 17h Model 31h Revision B0处理器的系统。这份手册预览了处理器的编程接口、功能特性和推荐的...
AMD体质检测工具是一款专为AMD处理器设计的性能评估和诊断应用。这个压缩包"amd体质Tool1007.zip"包含了一系列与AMD处理器性能相关的组件和数据文件,可以帮助用户了解他们的AMD处理器在运行中的表现和可能的优化...
AMD显卡BIOS修改工具是针对AMD Radeon系列显卡的一款专用软件,主要用于调整和优化显卡的BIOS设置。在了解这个工具之前,我们首先需要理解什么是BIOS以及其在显卡中的作用。 BIOS(Basic Input/Output System)是...
### AMD APP SDK 安装指南知识点详述 #### 一、概述 AMD APP SDK 是一套由AMD提供的软件开发工具包,旨在支持基于OpenCL的应用程序开发。本篇文档重点介绍了如何在Windows和Linux系统上安装AMD APP SDK v2.7,并...
AMD SATA控制器是AMD公司为基于其芯片组的计算机系统提供的集成SATA(串行ATA)控制器驱动程序。这个驱动程序负责管理和优化系统中连接到SATA接口的存储设备,如硬盘驱动器(HDD)和光驱。在Windows 10系统中,如果...
AMD官方程序员手册是一份极其重要的资源,它涵盖了AMD公司处理器的各类技术细节,为开发者提供了深入理解AMD芯片架构、BIOS交互、操作系统优化以及高级多媒体指令集如3DNow!和MMX的全面指南。这份手册是软件工程师、...
AMD多核驱动及优化补丁是针对AMD(Advanced Micro Devices)处理器的重要软件更新,旨在提升处理器性能、降低功耗并确保系统稳定性。AMD CPU Cool 'n' Quiet技术是一种智能电源管理功能,它允许CPU在负载较低时自动...
AMD SATA驱动X64是专为AMD(Advanced Micro Devices)平台设计的一款重要的系统组件,用于优化和控制SATA(Serial Advanced Technology Attachment)接口的硬盘和其他存储设备。SATA是一种高速接口标准,它允许...
AMD CPU(Advanced Micro Devices)是全球知名的半导体制造商,以其高性能的处理器而闻名,与Intel竞争激烈。在虚拟机(VM,Virtual Machine)领域,AMD CPU同样可以提供支持,让用户在一台计算机上运行多个独立的...
标题“AMD_SATA_Controller”指的是AMD(Advanced Micro Devices)公司生产的SATA(Serial Advanced Technology Attachment)控制器驱动程序。AMD是一家全球知名的半导体制造商,其产品包括CPU(中央处理器)、GPU...
"黑苹果AMD内核,支持10.13.6"这一标题暗示了我们讨论的主题是关于在AMD处理器上安装并运行苹果操作系统macOS的非官方版本,也被称为"黑苹果"(Black Apple)。通常,苹果公司只支持在其自家设计的Intel处理器上运行...
在Linux操作系统中,AMDGPU驱动源码是用于支持AMD(Advanced Micro Devices)显卡的核心组件。这个驱动程序允许系统与AMD的图形处理器进行交互,从而实现图形加速、视频播放、3D渲染等功能。AMDGPU驱动源码的编译和...
AMD APP SDK(AMD Accelerated Parallel Processing Application Programming Interface)是一款由AMD公司提供的开发工具包,用于帮助程序员利用AMD的GPU(图形处理器)进行并行计算。这个SDK版本为2.9,专为Windows...
AMD PCNET Family PCI Ethernet Adapter是一款由AMD公司设计的网络接口控制器(NIC),它主要用于提供PCI总线上的局域网连接。这款驱动程序是为虚拟机环境设计的,确保在虚拟化平台如VMware, VirtualBox或Hyper-V上...
”这是AMD官方对这款软件的描述!AMD Radeon RAMDisk 和 Primo Ramdisk Ultimate 一样是一款可以把内存虚拟成硬盘使用的虚拟磁盘软件。而传统软件厂商RAMDisk这次被AMD包装后,相信会得到更多用户的信任!AMD Radeon...
标题中的“检测关闭ULPS AMD显卡自动降频工具”是指一个专用于AMD显卡的软件,其主要目的是帮助用户禁用显卡的ULPS(Ultra Low Power State,超低功耗状态)功能。ULPS是一种能降低显卡功率消耗的技术,通常在显卡不...
AMD_PCNET网卡是AMD公司生产的一款经典的网络接口控制器(NIC),在虚拟机技术中,VMware VM虚拟机广泛支持这种网卡模型。VMware Workstation、VMware Fusion等产品允许用户模拟各种硬件环境,包括AMD_PCNET网卡,...
标题中的“drvupdate-amd”指的是AMD驱动更新程序,它主要负责更新AMD(Advanced Micro Devices)公司的硬件设备驱动。在Windows操作系统中,驱动程序是连接硬件设备与操作系统之间的桥梁,确保系统能正确识别并有效...
AMD显卡刷BIOS工具包是专为AMD(Advanced Micro Devices)显卡设计的一个软件工具,主要用于更新或修改显卡的固件,即BIOS(Basic Input/Output System)。BIOS是计算机硬件与操作系统之间的一层关键软件,它包含了...
AMD(Advanced Micro Devices)是一家知名的半导体制造商,以其高性能的处理器和图形处理器而闻名。这份“AMD用户手册完整版”显然是一份详尽的资源,涵盖了AMD的各种产品和技术,旨在帮助用户更好地理解和使用AMD的...