ECMAScript  对于不同的环境(运行平台),设计结构,理念,使用方式大相径庭。

1,浏览器 :DOM BOM

2,NodeJS :FS,HTTP 内置模块 ;  第三方模块 ; 内置模块

3,桌面级应用及其他平台 : Window Mac 系统 及 其他操作平台

一,CommonJS 规范的由来

JavaScript 语言一诞生就是之服务于浏览器。

JS 的表现能力取决与宿主环境提供的 API

1,web1.0时代 :W3C提供了对浏览器的支持

2,web2.0时代 :随着 HTML5 的发展 , 更多的标准 API 出现在浏览器中 。 但是,在后端 JS 的标准的制定纹丝未动

3,2009年1月的时候,Kevin Dangoor 写了这篇文章 https://www.blueskyonmars.com/2009/01/29/what-server-side-javascript-needs/,提名为 ServerJS规范。2009年8月,更名为 CommonJS 。

以显示 API 的更广泛实用性

  ————  =>文章开始  ————

服务器端JavaScript需要什么

2009年1月29日14:00·816字·4分钟阅读

服务器端JavaScript技术已经存在了长时间。Netscape早在1996年就在他们的服务器软件中提供了服务器端JavaScript,而Helma也存在了很多年。但是,服务器端开发在过去几年中发生了很大变化。

Aptana的Jaxer提供了一个创新的视图,说明如何利用在线路(客户端和服务器)两端运行的JavaScript环境。非常方便的通信和在客户端和服务器之间轻松共享代码的能力是在服务器上运行JavaScript的巨大好处。

Jaxer和Helma是有趣的项目,可以肯定(还有很多其他项目!)。但是我在服务器上看到的JavaScript缺失的并不是有趣的项目,而是一个有用的生态系统。在Python中工作的人喜欢谈论Web框架的碎片和诸如此类的东西,但与JavaScript的碎片相比,这没什么。

例如,JavaScript需要交叉解释器标准库。值得庆幸的是,存在一些标准库(从浏览器继承的部分)。所以,你得到正则表达式和日期。但是,文件和目录呢?为什么不能在Rhino,Spidermonkey,V8和JSCore中使用相同的API?

少数标准接口。连接到数据库并运行查询是一个很好理解和常见的问题。在Rhino中,您可以使用JDBC。但是,JavaScript确实应该有自己的交叉解释器标准,如Python的DBAPI。还应该可以采用最初部署在运行Spidermonkey的Apache模块后面的webapp,然后通过标准的Web服务器/ Web应用程序界面将其放在Jetty后面。

JavaScript需要一种标准方式来包含其他模块,并且这些模块可以存在于谨慎的命名空间中。有很简单的方法可以执行命名空间,但是没有标准的编程方式来加载模块(一次!)。这非常重要,因为服务器端应用程序可以包含大量代码,并且可能会混合和匹配符合这些标准接口的部分。

需要有一种方法来打包代码以进行部署和分发,并进一步安装软件包。Linux人员会正确地指出他们可以只输入“apt get”(或yum,或其他),他们的工作就完成了。但是有很多人使用Mac和Windows,需要一种方便的方法来设置他们的开发环境,并打包他们为部署和其他人使用而编写的代码。

部分分发和安装问题是包存储库。我不知道JSAN是否就是那里的答案,但我知道安装软件包及其依赖项的简单方法对于人们可能在他们的应用程序中汇总的库数量有很大的不同。

而且,除了所有这些优点之外,我们还会获得模板引擎,对象关系映射器,中间件,打包应用程序等。事实上,其中许多已经存在。但是,问题是他们没有共同的依据。这就是阻止生态系统发展的原因。

如果您搜索WSGI的Python包索引(用于将Web应用程序与Web服务器连接的Python标准),您今天将找到180个包...服务器,中间件,完整的应用程序。而这些只是其列表中包含“WSGI”的软件包。就是生态系统的样子。Java有一个,Ruby有一个,JavaScript需要一个。

值得注意的是,由于使用了通用的标准库,许多WSGI组件可以在CPython,Jython和IronPython上保持不变。JavaScript在C中有一系列实现,以及Java和.Net实现,只需要对某些接口等进行一些协议。在所有这些地方运行的库可以吸引更多用户,并且希望有更多的提交者来帮助图书馆发展。

我在这里描述的不是技术问题。这是一个人们聚在一起并决定前进并开始建立更大,更冷的东西的问题。

为此,我建立了一个新的ServerJS小组,希望让有兴趣的各方进行交流,甚至可以让我们面对面地共同制作一些代码并解决某些界面问题。已经有大量的JavaScript代码集合,让我们看看我们是否可以使所有代码更有价值。

在Mozilla的Web开发人员工具组中,我们有一个广泛的开放式章程,可帮助软件开发人员充分利用开放式Web。尽一切努力帮助服务器端JavaScript社区成长和蓬勃发展当然可以成为其中的一部分。

(在有人说“为什么不只是使用Ruby / Python / Java / C#?”之前,我只想说这是一个完全不同的问题,我不会在这篇文章中解决这个问题。)

更新:该组现在称为CommonJS

  ————  =>文章结束 ————

19 — node 模块化 及 CommonJS规范 — CommonJS 的由来及各组织与 JS 的关系的更多相关文章

  1. JS JavaScript模块化(ES Module/CommonJS/AMD/CMD)

    前言 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了, jQuery,Ajax,Node.Js,MVC,MVVM等的助力也使得 ...

  2. 七、CommonJS规范和Note.js模块概念的介绍

    在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护.为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多 ...

  3. 学习笔记:CommonJS规范、AMD规范

    CommonJS规范 http://wiki.jikexueyuan.com/project/webpack-handbook/commonjs.html CommonJS 规范 http://www ...

  4. AMD、CMD和CommonJS规范(转)

    CommonJS规范  CommonJS是在浏览器环境之外构建JavaScript生态系统为目标产生的项目,比如服务器和桌面环境中.CommonJS规范是为了解决JavaScript的作用域问题而定义 ...

  5. 该如何理解AMD ,CMD,CommonJS规范--javascript模块化加载学习总结

    是一篇关于javascript模块化AMD,CMD,CommonJS的学习总结,作为记录也给同样对三种方式有疑问的童鞋们,有不对或者偏差之处,望各位大神指出,不胜感激. 本篇默认读者大概知道requi ...

  6. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  7. JS模块化规范CommonJS,AMD,CMD

    模块化是软件系统的属性,这个系统被分解为一组高内聚,低耦合的模块.理想状态下我们只需要完成自己部分的核心业务逻辑代码,其他方面的依赖可以通过直接加载被人已经写好模块进行使用即可.一个模块化系统所必须的 ...

  8. [JavaScript] 后端js的模块化规范CommonJs

    CommonJs概述 主要是单个文件定义的变量,函数,类都是私有的,其他文件不可见,单位的作用域 通过 exports(modules.exports)对外暴露接口,通过 require 加载模块 n ...

  9. Node.js相关——CommonJS规范

    1. CommonJS规范产生背景 在后端,JavaScript的规范远远落后并且有很多缺陷,这使得难以使用JavaScript开发大型应用.比如: 没有模块系统 标准库较少 没有标准接口 缺乏包管理 ...

随机推荐

  1. 基于PIL模块创建验证码图片

    def get_valid_img(request): # 方式2:基于PIL模块创建验证码图片 from PIL import Image, ImageDraw, ImageFont from io ...

  2. 树莓派开启VNC远程桌面

    分类: Raspberry Pi Linux2013-03-12 10:18 4288人阅读 评论(1) 收藏 举报   目录(?)[+]   1.安装VNC sudo apt-get install ...

  3. linux下FTP的工具和使用以及rpmReadSignature failed错误

      安装rpm文件时提示rpmReadSignature failed 错误 2011-09-23 11:04 现象: [root@localhost share]# rpm -ivh syslog- ...

  4. Redis的下载与安装

    1). 从官网上下载Redis的压缩包   2). 将压缩包解压到 某个指定的文件目录中         tar -xzvf redis-4.0.9.tar.gz  /xx/xx/xx_dir   3 ...

  5. SQLI_LAB------level 1

    SQLI_LAB 刷题刷题刷题!!! 知识扩展: SQL 1)SQL注入介绍 SQLI,sql injection,我们称之为 sql 注入.何为 sql,英文:Structured Query La ...

  6. Docker + Maven + Docker-compose

    前言: docker:容器化管理 maven:支持docker-maven的插件,通过 mvn clean -Dmaven.test.skip package dockerfile:build 打包命 ...

  7. 关于Orcale 11g 安装过程

    1.前往Oracle官网下载相应安装包 https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.h ...

  8. CentOS下安装Orcale

    以前没有安装过,最近安装了.感觉在Liunx安装真的超麻烦.这是技术文档,分享给大家. LINUX安装oracle数据库步骤: 1.安装依赖包    yum -y install  gcc gcc-c ...

  9. 2.8 学习总结 之 JQ初识

    一.说在前面 昨天 学习了kotlin的相关知识 今天 学习JQ Jquery它是javascript的一个轻量级框架,对javascript进行封装,它提供了很多方便的选择器.供你快速定位到需要操作 ...

  10. 【pwnable.kr】 unlink

    pwnable.kr 第一阶段的最后一题! 这道题目就是堆溢出的经典利用题目,不过是把堆块的分配与释放操作用C++重新写了一遍,可参考<C和C++安全编码一书>//不是广告 #includ ...