网页开发 为何非 JavaScript 不可

2020-01-08 13:33:43 +08:00
 KunMinX

查了一上午,发现 多数搜索结果都只谈 “是什么、怎么用”,却对 “为什么” 绝口不提

我知道这门语言既然存活下来,其中必有商业或非商业的组织出于利益考虑在维护和支持。

但我仍然想从技术角度来搞清楚,为什么是它?它的设计目标是什么?它和其他语言相比,到底有什么不可替代的优势?

8524 次点击
所在节点    程序员
79 条回复
waltcow
2020-01-09 09:52:15 +08:00
编程语言在自我奋斗的同时当然也要考虑历史的进程的
xinghuan
2020-01-09 10:19:11 +08:00
遇到一个全网用 JavaScript 的商业网站,垃圾得要死,各种问题
djyde
2020-01-09 10:21:50 +08:00
历史的话,维基百科说得清清楚楚啊: https://www.wikiwand.com/zh/JavaScript
djyde
2020-01-09 10:22:45 +08:00
1993 年,伊利諾大學厄巴納-香檳分校的國家超級電腦應用中心( NCSA )發表了 NCSA Mosaic,這是最早流行的圖形介面網頁瀏覽器,它在全球資訊網的普及上發揮了重要作用。1994 年,一家名為 Mosaic Communications 的公司在加州山景城成立了,並雇用了許多原來的 NCSA Mosaic 開發者用來開發 Mosaic Netscape,該公司的目標是取代 NCSA Mosaic 成為世界第一的網頁瀏覽器。第一個版本的網頁瀏覽器 Mosaic Netscape 0.9 於 1994 年底發布。在四個月內,已經佔據了四分之三的瀏覽器市場,並成為 1990 年代網際網路的主要瀏覽器。為避免 NCSA 的商標所有權問題,該瀏覽器於同年更名為 Netscape Navigator,該公司命名為 Netscape Communications。網景預見到網路需要變得更動態。公司的創始人馬克·安德森認為 HTML 需要一種膠水語言,讓網頁設計師和兼職程式設計師可以很容易地使用它來組裝圖片和外掛程式之類的元件,且程式碼可以直接編寫在網頁標記中。

1995 年,網景招募了布兰登·艾克,目標是把 Scheme 語言嵌入到 Netscape Navigator 瀏覽器當中[8]。但更早之前,網景已經跟昇阳合作在 Netscape Navigator 中支援 Java,這時網景內部產生激烈的爭論[9]。後來網景決定發明一種與 Java 搭配使用的輔助腳本語言並且語法上有些類似[10],這個決策導致排除了採用現有的語言,例如 Perl、Python、Tcl 或 Scheme。為了在其他競爭提案中捍衛 JavaScript 這個想法,公司需要有一個可以運作的原型。艾克在 1995 年 5 月僅花了十天時間就把原型設計出來了。

最初命名為 Mocha,1995 年 9 月在 Netscape Navigator 2.0 的 Beta 版中改名為 LiveScript,同年 12 月,Netscape Navigator 2.0 Beta 3 中部署時被重新命名為 JavaScript[1][11],當時网景公司与昇阳电脑公司组成的开发联盟为了让这门语言搭上 Java 这个编程语言“热词”,因此将其临时改名为 JavaScript,日后这成为大众对这门语言有诸多误解的原因之一[12]。
huiyadanli
2020-01-09 10:31:38 +08:00
各位别忘记后来的 Flash,一直企图推翻 js。。没想到中途蹦出个 HTML5 标准。。。

记得 09 年的时候很多文章都在唱衰 js
supersonic13
2020-01-09 10:34:34 +08:00
因为 JS
supersonic13
2020-01-09 10:34:55 +08:00
因为 JS 就是为了网页开发设计出来的。。。
charlie21
2020-01-09 11:04:27 +08:00
有的人说不清哪里好,可就是因为出现得早。
TangMonk
2020-01-09 11:07:48 +08:00
这种问题毫无意义,就像求和符号为什么是 Σ,而不是其他,因为欧拉就想这么搞,你有啥办法。
LokiSharp
2020-01-09 11:16:10 +08:00
可以用 C# .net Core 啊
ikaros
2020-01-09 11:29:08 +08:00
现在可以用 wasm
libook
2020-01-09 11:35:34 +08:00
这是个特别宽泛的问题,不是由一个因素决定的,是由多个方面的因素决定的。

维护者是谁?
JavaScript 语言本身实际上是以引擎的形态存在的,而引擎是由各个厂商依照自己的具体商业或非商业的需求来研发的,统一参照的 ECMA-262 标准来设计的,ECMA-262 是 ECMA 组织的 TC39 委员会主导制定的,这个委员会的成员中一部分是引擎厂商的技术人员,由于 JavaScript 主要用于 Web 技术领域,所以其中还有一些参与制定 Web 标准的人;此外 ES-262 接受非 TC39 成员为制定规范提出草案,这些人也算是 JavaScript 的维护者。
所有维护者中,有些是直接利益关系者,有些是间接利益关系者,有些是公益人士,也有些是独立爱好者。整体社区算是非常开放和活跃的。

为什么是它?
最一开始 Web 技术出现的时候,JavaScript 就是为了 Web 而设计的,并在当时因为种种原因在多种语言中脱颖而出,成为最广泛使用的 Web 开放语言,感兴趣可以了解一下这段历史。
为什么现在依然是它,这是由市场决定的。绝大多数用户使用的浏览器都以 JavaScript 作为页面的主要开发语言,绝大多数的 Web 开发者也都用 JavaScript (或最终编译成 JavaScript 的其他语言)作为页面开发的主要语言,浏览器、Web 相关技术沉淀和标准都是围绕 JavaScript 的;那么现在有一个新的厂商想做一款新的浏览器,如果不用 JavaScript 作为主要语言的话,就会难以拉拢现有的 Web 开发者加入,也会因为没有专门的技术沉淀以及标准的支持而难以发展。

它的设计目标是什么?
最初是为 Web 设计的,所以它的设计目标要以当时的 Web 技术的行业状况来看。

> 网景预见到网络需要变得更动态。公司的创始人马克·安德森认为 HTML 需要一种胶水语言,让网页设计师和兼职程序员可以很容易地使用它来组装图片和插件之类的组件,且代码可以直接编写在网页标记中。
> 1995 年,网景招募了布兰登·艾克,目标是把 Scheme 语言嵌入到 Netscape Navigator 浏览器当中。但更早之前,网景已经跟昇阳合作在 Netscape Navigator 中支持 Java,这时网景内部产生激烈的争论。后来网景决定发明一种与 Java 搭配使用的辅助脚本语言并且语法上有些类似,这个决策导致排除了采用现有的语言,例如 Perl、Python、Tcl 或 Scheme。

——维基百科《 JavaScript 》

提炼一下就是:
1. 要能实现较复杂的逻辑来拼接 HTML。
2. 能在浏览器上和 HTML 配合使用。
3. 需要被快速设计和实现出来(迫于网景内部争论,当时仅仅花了 10 天就被设计出来了)。
4. 蹭 Java 的热度,有必要也可以借鉴 Java 的一些好的设计。
5. 尽量贴近当时人们对编程语言的认知和习惯,同时不要像当时很多语言那么复杂,易学易用便于推广。

它和其他语言相比,到底有什么不可替代的优势?
没有什么语言是不可替代的,就看在应用场景上最看看重什么。我举个例子,现在有一些非网页技术也想使用 JavaScript,原因可能是因为 JavaScript 开发者数量众多,自己的技术便于推广,比如 Electron 技术可以用 JavaScript 来开发桌面软件,招 C\C++工程师肯定不如招 JavaScript 工程师容易,那么对于一些并不需要系统底层功能支持的桌面软件来说,用 JavaScript 性价比很高,特别是对于那些原本就有网站产品的公司(本来就有 JavaScript 开发资源)。
ihciah
2020-01-09 12:10:58 +08:00
dart 可以翻译成 js,rust 和 go 可以 wasm 一把。(看起来最香的还是 rust ?
duanxianze
2020-01-09 12:56:48 +08:00
这问题没有任何意义 不是 js 还会有 as bs 历史的偶然决定了现在的必然
momocraft
2020-01-09 13:47:55 +08:00
路径依赖
jss
2020-01-09 13:51:21 +08:00
谁说非 JavaScript 不可,TypeScript ?(:手动滑稽
magicluna01
2020-01-09 13:59:18 +08:00
因为替换的成本太高了
Phariel
2020-01-09 14:01:43 +08:00
JavaScript 成为标准 有偶然也有必然 故事要从网景时代开始讲起。。。
fqzz
2020-01-10 11:17:29 +08:00
为什么安卓用 java/kotlin,为什么 iOS 用 oc/swift,为什么 unity 用 c#

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/636120

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX