首頁»NodeJS»為什么要把 JavaScript 放到服務器端上運行?

為什么要把 JavaScript 放到服務器端上運行?

來源:codebay 發布時間:2018-04-21 閱讀次數:

  因為在當年,Node.js的作者Ryan Dahl是一名資深的C/C++程序員,在創造出Node之前,他的主要工作都是圍繞高性能Web服務器進行的。經歷過一些嘗試和失敗之后,他找到了設計高性能,Web服務器的幾個要點:事件驅動、非阻塞I/O

  所以Ryan Dahl最初的目標是寫一個基于事件驅動、非阻塞I/O的Web服務器,以達到更高的性能,提供Apache等服務器之外的選擇。他提到,大多數人不設計一種更簡單和更有效率的程序的主要原因是他們用到了阻塞I/O的庫。寫作Node的時候,Ryan Dahl曾經評估過C、Lua、Haskell、Ruby等語言作為備選實現,結論為:

  C的開發門檻高,可以預見不會有太多的開發者能將它用于日常的業務開發,所以舍棄它;

  Ryan Dahl覺得自己還不足夠玩轉Haskell,所以舍棄它;

  Lua自身已經含有很多阻塞I/O庫,為其構建非阻塞I/O庫也不能改變人們繼續使用阻塞I/O庫的習慣,所以也舍棄它;

  而Ruby的虛擬機由于性能不好而落選。

  相比之下,JavaScript比C的開發門檻要低,比Lua的歷史包袱要少。盡管服務器端JavaScript存在已經很多年了,但是后端部分一直沒有市場,可以說歷史包袱為零,為其導入非阻塞I/O庫沒有額外阻力。另外,JavaScript在瀏覽器中有廣泛的事件驅動方面的應用,暗合Ryan Dahl喜好基于事件驅動的需求。當時,第二次瀏覽器大戰也漸漸分出高下,Chrome瀏覽器的JavaScript引擎V8摘得性能第一的桂冠,而且其基于新BSD許可證發布,自然受到Ryan Dahl的歡迎。考慮到高性能、符合事件驅動、沒有歷史包袱這3個主要原因,JavaScript成為了Node的實現語言。

QQ群:WEB開發者官方群(515171538),驗證消息:10000
微信群:加小編微信 849023636 邀請您加入,驗證消息:10000
提示:更多精彩內容關注微信公眾號:全棧開發者中心(fsder-com)
網友評論(共0條評論) 正在載入評論......
理智評論文明上網,拒絕惡意謾罵 發表評論 / 共0條評論
登錄會員中心
大发国际网址 新田县| 临朐县| 原平市| 革吉县| 伊川县| 兴和县| 论坛| 阿拉善左旗| 中超| 德清县| 德钦县| 台江县| 迭部县| 邵阳市| 贵定县| 宾川县| 阜城县| 丹江口市| 浮山县| 炎陵县| 梓潼县| 望奎县| 华宁县| 全州县| 乡城县| 息烽县| 石屏县| 北京市| 灵武市| 错那县| 汝阳县| 锡林浩特市| 五指山市| 贞丰县| 历史| 嘉祥县| 汨罗市| 云安县| 炉霍县| 尼木县| 吴桥县| 尼木县| 四川省| 万州区| 桓台县| 衢州市| 永清县| 沂南县| 民县| 曲靖市| 渝中区| 北宁市| 双鸭山市| 长武县| 湛江市| 宝山区| 滨州市| 华阴市| 清水河县| 宜丰县| 久治县| 凭祥市| 武安市| 天镇县| 无棣县| 衢州市| 五指山市| 厦门市| 教育| 竹山县| 来宾市| 峨边| 宁夏| 仲巴县| 河源市| 千阳县| 历史| 东辽县| 成安县| 大邑县| 沙坪坝区| 蒙自县| 新巴尔虎右旗| 蓝田县| 彭阳县| 沭阳县| 惠水县| 潮安县| 青海省| 出国| 德惠市| 洪江市| 翁牛特旗| 沙田区| 客服| 辽中县| 富民县| 紫金县| 固阳县| 丰城市| 册亨县| 工布江达县| 京山县| 抚顺县| 密云县| 松滋市| 饶阳县| 板桥市| 台南市| 夏河县| 交口县| 得荣县| 岗巴县| 鄢陵县| 沙洋县| 阜平县| 高青县| 寿光市| 石嘴山市| 刚察县| 林西县| 额敏县| 友谊县| 平江县| 阳山县| 建平县| 新郑市| 沙河市| 武乡县| 沾益县| 通许县| 日土县| 钦州市| 读书| 杭锦后旗| 东阿县| 清流县|