热门关键字:

CommonJS

3774
作者:管理员
发布时间:2015/6/3 22:49:41
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=415
CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。它的终极目标是提供一个类似Python,Ruby和Java标 准库。这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。在兼容CommonJS的系统中,你可以使用 JavaScript程序开发:
服务器端JavaScript应用程序
命令行工具
图形界面应用程序

混合应用程序(如,Titanium或Adobe AIR)


API层面定义
二进制:二进制数据对象(字节数组和/或字符串)(建议、讨论、早期实现)
编码:编码和字符集(建议、讨论、早期实现)
io:I / O流(建议、讨论)
fs,fs基地:文件系统(建议、讨论、早期实现)
系统:系统接口(stdin、stdout,stderr,等等)(1.0,提出修正案)
断言,测试:单元测试(1.0,修正案提议未决)
套接字:套接字I / O TCP / IP套接字(早期的建议)
事件队列:反应堆反应堆/事件队列(早期的建议)
工人:工(并发无共享进程/线程)(建议)
控制台:控制台(建议)。
 

以前我们说起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完成更多的实现等等。




如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:CommonJS 前端框架
友荐云推荐