amd规范转commonjs规范

目的是在项目框架中安装外部组件时,组件的规范能够统一。

由于早期开发未整体文档,细节已记不太清,先把代码地址贴上来:https://github.com/tianmiyingzi/feather2-command-install

需要了解的知识点:AMD规范,CMD规范,Comonjs规范,UMD规范等。


以下是调研知识点笔记:

Javascript模块化编程

问:为什么要模块化?

答:提高代码重复利用率。

问:怎么样模块化?

答:模块化的经历过程:函数简单的放在一起→对象写法→立即执行函数写法→放大模式→宽放大模式(Loose augmentation)→输入全局变量

1."污染"了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系

2. 暴露所有模块成员,内部状态可以被外部改写

3. "宽放大模式"就是"立即执行函数"的参数可以是空对象

关键字:

"立即执行函数"Immediately-InvokedFunction ExpressionIIFE


CommonJS规范

CommonJS主要是服务器端模块的规范,Node.js采用了这个规范。

每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为global对象的属性。

 概念(起源)

官方JavaScript标准定义的API是为了构建基于浏览器的应用程序。然而,并没有定于一个用于更广泛的应用程序的标准库。

CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。它的终极目标是提供一个类似Python,Ruby和Java标准库。这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。

在兼容CommonJS的系统中,你可以实用JavaScript程序开发:
服务器端JavaScript应用程序
命令行工具
图形界面应用程序
混合应用程序(如,Titanium或Adobe AIR)

内容:

1.在一个模块中,存在一个自由的变量”require”,它是一个函数。

这个”require”函数接收一个模块标识符。

“require”返回外部模块所输出的API。

如果出现依赖闭环(dependency cycle),那么外部模块在被它的传递依赖(transitive dependencies)所require的时候可能并没有执行完成;在这种情况下,”require”返回的对象必须至少包含此外部模块在调用require函数(会进入当前模块执行环境)之前就已经准备完毕的输出。(译者:如果难理解,看下面的例子。)

如果请求的模块不能返回,那么”require”必须抛出一个错误。

2. 在一个模块中,会存在一个名为”exports”的自由变量,它是一个对象,模块可以在执行的时候把自身的API加入到其中。

3. 模块必须使用”exports”对象来做为输出的唯一表示。

 

AMD规范

框架是RequireJS

//    filename: foo.js

define(['jquery', 'underscore'], function($, _) {

    //   methods

    function a(){};   //    private because it's not returned (seebelow)

    function b(){};   //    public because it's returned

    function c(){};   //    public because it's returned

    //   exposed public methods

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值