理论可见上文模块加载方案
,这次探讨下如何设计 api 使用 js 模拟其他语言常见的模块
与包
的概念:
模块化实践@google doc
1.添加模块:
通过 S.add 向运行环境添加模块,模块可以添加一个简单对象,或者一个加载函数。
简单对象:
S.add("module1",{
name:"value"
});
加载函数:
S.add("module2",function(S){
return something;
});
如果添加的是加载函数,模块真正的值则是该函数的执行结果。
依赖注入:
添加模块时可以通过声明该模块的依赖模块名字,运行环境会将依赖的模块值通过参数注入到加载函数中:
S.add("module3",function(S,DOM,module2){
// DOM 为 dom 模块的值
//module2 为 模块2 的值
可以使用 dom ,module2 构建复杂的 module3
return module3;
},{
requires:["dom","module2"]
});
引用子模块:
声明依赖模块后,可以通过 require 来使用依赖模块的子模块:
S.add("module_event",function(S,Event){
//引入子模块
var EventTarget=S.require("event/target");
},{
requires:["event"]
});
2.包与模块命名空间
添加模块时可以通过 “/” 引入模块命名空间 :
S.add("js/lang/integer",function(){
function Interger(){}
return Integer;
},{requires:["js/lang/core"]});
将定义文件放入 : http://modules/js/lang/interger.js 中,使用时,通过
S.packages({
name:"js"
path:"http://modules"
});
来声明 js package 对应的路径(url,not file path),而 js 包下可类似定义多个同类模块。
最终通过 use 来使用某个模块:
S.use("js/lang/interge",function(S,Integer){
//use Integer now !
});
3.执行流程
S.use("A",function(S,A){});
下载模块A,下载模块A的依赖 a,执行 a 的加载函数并初始化 a 模块值,注入 a 到 A 的加载函数并执行,初始化 A 的模块值,最终注入A到用户回调函数并执行。
demo using S
小结:
约定优先配置,模块名隐含路径
去除冗余信息,模块名代表了命名空间,不需重新挂载
内置模块例如 dom ,event 并无包,属于 unnamed package ,应用模块推荐使用包机制并且顶层包名不要和内置模块冲突。
4.后期优化
主要就是自动化合并,自动管理依赖项,可见:定制模块编译工具
分享到:
相关推荐
标签的存在可以让我们快速识别模块,并在设计过程中找到与之相关的技术规格与应用指导。 【部分内容】中包含了参考电路设计的细节,具体到每个电阻、电容、晶振等元件的标记和值。对于电路设计而言,这部分内容提供...
描述了模块与主机之间的USB接口协议,包括USB配置、接口描述符的定义和处理,对于需要通过USB接口连接ME909S-82的开发者来说,是必不可少的参考资料。 6. **ME909S-821 LTE LGA模块验收检验指南**: 详细列出了...
"华为模块UART串口设计指导-(V100R001_03, Chinese).pdf" 详细介绍了如何与mu709s模块进行UART通信。UART(通用异步接收/发送器)是一种常见的串行通信接口,该文档提供了配置参数、通信协议以及常见问题的解决方案...
文档《i2s_input模块设计说明.doc》可能详细介绍了该模块的功能、工作流程、配置选项以及与硬件的接口定义。它可能会涵盖以下几点: 1. **模块功能**:接收来自外部I2S设备的音频流,转换为数字信号,并提供给系统...
华为的LTE模块,如ME909s和ME906s系列,是专为高速移动数据通信设计的设备,广泛应用于嵌入式系统、工业路由器、车载通信以及物联网解决方案中。这些模块基于LTE技术,提供了高效、稳定的数据传输能力,能够支持4G...
AP6275S是一款高性能的Wi-Fi模块,支持Wi-Fi 6标准,也称为802.11ax。这个模块由领先的无线通信技术公司生产,为物联网(IoT)、智能家居、工业自动化等领域提供了高速、低延迟的无线连接解决方案。 Wi-Fi 6是最新...
AP6398S固件资料包含了该模块的最新版本,提供了原厂的技术支持和设计指导,对于开发人员和工程师来说,是进行产品开发、优化和故障排查的重要资源。 首先,我们需要了解AP6398S模块的基本特点。AP6398S是一款802....
总的来说,这个驱动套件是为了解决笔记本电脑与华为4G模块ME909s-821之间的通信问题,确保用户能顺畅地通过4G网络进行上网、数据传输等活动。通过使用Mobile Partner,用户可以更好地管理和优化网络连接,同时享受到...
手册中通常会包含模块的电气特性、引脚定义、电源要求、功耗信息等关键内容,以便开发者进行硬件设计和系统集成。 此外,压缩包中的“XF-S4240.pdf”可能是模块的详细技术文档,包含更深入的技术规格和使用示例。...
宿舍管理系统的功能模块设计基于C/S架构,主要包括以下几个大模块: 1. **系统管理模块** - 超级用户登录 - 普通用户登录 - 用户密码修改 - 用户管理 - 退出系统 2. **公寓管理模块** - 楼房管理 - 宿舍...
**Quectel EC600S-CN 硬件设计手册**是针对LTE标准模块系列的一个详细技术指南,主要用于指导用户进行硬件设计。这个模块由上海移远通信技术股份有限公司提供,该公司致力于为客户提供及时全面的服务。手册包含了...
《Quectel EC200S-CN 硬件设计手册》是针对Quectel公司的一款高性能LTE模块——EC200S-CN的详细设计指南。该手册旨在为电子工程师和产品研发人员提供必要的硬件设计信息,确保他们能够正确地集成这款模块到各种M2M...
在描述中提到的“包含原理图及pcb文件”,意味着资料包中包含了该电源模块的设计细节。原理图是电路设计的基础,展示了各个元器件之间的连接方式和工作原理,对于理解和分析电路至关重要。而PCB(Printed Circuit ...
"LC-Motor-9110"可能是L9110S驱动模块的实际电路设计文件,可能包含PCB布局、电路原理图、元器件清单等,这些资料对于理解和使用L9110S驱动模块非常有价值。在实践中,根据这些图纸进行焊接和组装,可以构建出一个...
其中,模块的硬件设计可以帮助你理解其工作原理,引脚定义指导你如何连接到你的电路中,功能介绍让你知道模块能做什么,指令集则提供编程接口,告诉你如何通过代码控制模块。 3. **测试音频**: 测试音频是评估...
Github已开源:...详细内容也可看我的文章:https://mp.csdn.net/mp_blog/creation/editor/124478948《Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】》
KV-H40S定位模块是一款专为CPU单元设计的定位单元,可以与步进电机或伺服电机一起工作,实现精密的定位控制功能。 在使用KV-H40S定位模块之前,用户需要仔细阅读本手册,并参考KV-H20S/H40S定位单元相关手册,这些...
4. **模块化设计**:DI-P6.4F03M-89S-1.0模块化设计意味着它可以与其他相同或不同规格的模块拼接,形成更大面积的显示屏。这种设计方便了安装、维护和升级。 5. **硬件接口**:模块之间通常有连接器,用于电源和...
在Verilog HDL(硬件描述语言)中设计DES加密模块,主要是将DES的算法逻辑转化为可综合的数字电路描述。Verilog是一种广泛用于数字电路设计的语言,可以用来描述从低级门电路到高级系统级别的设计。在Verilog中,DES...