zoukankan      html  css  js  c++  java
  • CommonJS初识

    CommonJS是什么

    CommonJS是一个标准库,或者说是一组规范。因为官方并没有给出真正的代码实现,而是给出一些代码组织规范、常用模块的api、包(Package)的命名规范和具体格式。

    CommonJS的官方网站是http://www.commonjs.org/
    wiki地址http://wiki.commonjs.org/wiki/CommonJS

    Modules

    模块的规范,其实就是require方法,定义了如何在当前的代码中使用已有的api。具体的规范(Modules/1.1.1)见http://wiki.commonjs.org/wiki/Modules/1.1.1

    约定

    Require

    • require是一个函数,接受一个外部模块名称的参数

      • 该方法返回对应外部模块返回的api
      • 如果引入外部模块出错,需要抛出异常
      • require函数可能有一个main属性,只读
      • require函数可能有一个paths属性,一个字符串数组,定义了查找引入模块的优先级。
    • 模块上下文

      • 一个模块中,有一个变量require
      • 一个模块中,有一个对象exports,包含这个模块对外的api
      • 一个模块中,还必须有一个变量module,是一个对象,可能包含iduri属性。
    • 模块名

      • 模块名是由斜杠连接的1个或多个term组成的字符串
      • term必须驼峰命名,也可能是. ..
      • 模块名可以没有后缀名.js
      • 模块名可以是相对路径或默认"顶级"的,如果是相对路径必须在前面加上'.'或'..'

    使用示例

    math.js

    exports.add = function() {
        var sum = 0, i = 0, args = arguments, l = args.length;
        while (i < l) {
            sum += args[i++];
        }
        return sum;
    };

    increment.js

    var add = require('math').add;
    exports.increment = function(val) {
        return add(val, 1);
    };

    program.js

    var inc = require('increment').increment;
    var a = 1;
    inc(a); // 2
    module.id == "program";

    实现

    • 一般由底层框架实现require方法,当然js也可以实现,但对于模块中缺少var而生成的全局变量就不好处理了。
    • 使用exports而不用this来返回api,一方面this需要根据上下文才能知道具体指什么,而exports则更好理解些。

    已有的解决方案

  • 相关阅读:
    Mkdocs文档生成
    IntelliJ IDEA
    WPS中页眉设置
    ubuntu下的画图工具-dia
    接口测试详细过程
    ubuntu下安装jmeter
    互联网产品接入支付功能如何测试?
    Uiautomator自动化测试编写和调试
    Ubuntu下配置android环境
    UIAutomator环境配置与运行
  • 原文地址:https://www.cnblogs.com/JoannaQ/p/3358345.html
Copyright © 2011-2022 走看看