关于CommonJS「建议收藏」

关于CommonJS「建议收藏」老实说,之前我对CommonJS也是一无所知,直到不久前Node.js火起来,我去研究它,才了解到Node.js其实是CommonJS的一个部分实现,我才关注起CommonJS来。  以前我们说起HTML,我们说起JavaScript,大家的印象似乎都停留在了“网页”上面,从2005年开始,因为Ajax的缘故,有一种叫做“前端程序员”的新型物种诞生了。可是现在,前端程序员不甘心…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

老实说,之前我对CommonJS也是一无所知,直到不久前Node.js火起来,我去研究它,才了解到Node.js其实是CommonJS的一个部分实现,我才关注起CommonJS来。

 

关于CommonJS「建议收藏」

 

以前我们说起HTML,我们说起JavaScript,大家的印象似乎都停留在了“网页”上面,从2005年开始,因为Ajax的缘故,有一种叫做“前端程序员”的新型物种诞生了。

可是现在,前端程序员不甘心自己的一亩三分地了,他们要越权,看看HTML 5的API吧,它是要吃了Flash啊,连Adobe都倒向HTML 5了,它的API可以做各种各样的事情,要绘图、操作文件、客户端数据库、摄像头、重力感应……这些特性,怎么看怎么都是一个Native App,或者是一个服务端的应用才具备的啊。

另一方面,在2009年8月,CommonJS诞生了(不妨读读这篇文章)。正是站在JavaScript的层面,它要做这样一件类似的事情(The CommonJS API will fill that gap by defining APIs that handle many common application needs, ultimately providing a standard library as rich as those of Python, Ruby and Java.),同时伴随着JavaScript的解释器愈来愈成熟,性能越来越强,JavaScript的威力不再仅仅被限制在浏览器端。

 

  • 服务端JavaScript应用
  • 命令行工具
  • 图形界面应用
  • 混合应用(Titanium、Adobe AIR等)

这就是CommonJS的着力点。从CommonJS的官网来看,它至始至终都避免使用“规范”这个词,似乎不想自认,但我的理解,CommonJS本质上就是一个规范,它并不提供默认实现,而是要求一些JavaScript库、框架、环境……去实现它的这些API定义。

 

那么,都有哪些API层面的定义呢?

  • binary: Binary Data Objects (byte arrays and/or strings) (proposals, discussion, early implementations)
  • encodings: Encodings and character sets (proposals, discussion, early implementations)
  • io: I/O Streams (proposals, discussion)
  • fs, fs-base: Filesystem (proposals, discussion, early implementations)
  • system: System Interface (stdin, stdout, stderr, &c) (1.0, amendments proposed)
  • assert, test: Unit Testing (1.0, amendment proposals pending)
  • sockets: Socket I/O TCP/IP sockets (early proposals)
  • event-queue: Reactor Reactor/Event Queue (early proposals)
  • worker: Worker Worker (concurrent shared nothing process/thread) (proposal)
  • console: console (proposal)

 

OK,涉及到二进制、编码、IO、文件、系统、断言测试、套接字、事件队列、Worker、控制台等等实现,恰恰弥补的传统JavaScript的空白。

 

就以Node.js为例,它实现了CommonJS的如下子规范:

  • Modules/1.0 (yes)
  • Promises/B (http://github.com/kriskowal/q)
  • Promises/D (https://github.com/kriskowal/q)
  • Unit Testing/1.0 (yes)

再如大名鼎鼎的SeaJS、CouchDB和RequireJS,都是CommonJS的部分实现

如果你有兴趣,在这里可以找到CommonJS所有的子规范。

 

未来CommonJS还需要加入的底层API定义包括(语言和运行时环境、日志、关系数据库接口、结果集、并发、字符串/字节序列/IO、目标平台的C语言标准统一的API和子进程):

  • Language and Runtime Services
  • Logging
  • Relational database interface
  • ResultSets (collections of data maybe from RDBMS, maybe from other sources)
  • Concurrency
  • String / ByteString I/O
  • C unified API to our Target Platforms
  • Subprocesses (popen)

高层API包括(HTTP客户端API、Email、Jabber、国际化、Promise管理器、命令行处理):

  • HTTP client APIs
  • Email
  • Jabber (XMPP)
  • Internationalization
  • Promise Manager
  • Command line processing

这些都可以在CommonJS自己的Wiki上找到。

 

按照CommonJS小组自己的话来说,在CommonJS 0.5版本的开发过程中,已经讨论了API需要包含的范围,建立了一个收集提议和优先级信息的Wiki页,讨论了现有的提议并排序,达成了基本一致的意见,提议都已在Wiki上定稿;现在当务之急包括给应用设计合理的API并文档化,给这些API完成更多的实现等等。

 

文章系本人原创,转载请注明出处和作者

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223054.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • murmurhash算法_shell dash使用数组

    murmurhash算法_shell dash使用数组MurmurHash 是一种非加密型哈希函数,适用于一般的哈希检索操作。[1][2][3] 由AustinAppleby在2008年发明,[4][5] 并出现了多个变种,[6] 都已经发布到了公有领域(publicdomain)。与其它流行的哈希函数相比,对于规律性较强的key,MurmurHash的随机分布特征表现更良好

    2022年10月19日
    4
  • stringutils.isnotempty可以判断null_string方法的使用

    stringutils.isnotempty可以判断null_string方法的使用StringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理,例如,如果输入为null则返回也是null等,具体可以查看源代码)。除了构造器,StringUtils中一共有130多个方法,并且都是stati…

    2022年10月7日
    5
  • 在线网站客服系统源码

    在线网站客服系统源码在线网站客服系统源码支持ios苹果/Android安卓软件/app开发包装编号:9738655242264144小心心

    2022年7月19日
    11
  • Activiti工作流框架学习笔记(一)「建议收藏」

    Activiti工作流框架学习笔记(一)「建议收藏」工作流的概念先看下面两张图:对以上两张图进行说明:假设这两张图就是华谊兄弟的请假流程图图的组成部分:人物:范冰冰、冯小刚、王中军事件(动作):请假、批准、不批准通过以上分析我们就可以抽象成:接下来给出工作流的书面化概念:工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、

    2022年10月6日
    3
  • leetcode第一刷_Permutations II

    leetcode第一刷_Permutations II

    2021年12月14日
    53
  • Ubuntu 18.04通过deb安装cuda 10.2

    Ubuntu 18.04通过deb安装cuda 10.2wgethttps://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pinsudomvcuda-ubuntu1804.pin/etc/apt/preferences.d/cuda-repository-pin-600wgethttps://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installer

    2022年5月9日
    69

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号