首頁»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條評論
登錄會員中心
大发国际网址 尖扎县| 萨迦县| 安新县| 安福县| 田阳县| 临夏县| 滦平县| 淳安县| 八宿县| 天柱县| 吉安县| 清徐县| 安龙县| 晋州市| 东台市| 安顺市| 潼关县| 游戏| 亚东县| 重庆市| 景宁| 阿拉尔市| 铜川市| 花莲县| 阳新县| 阳东县| 确山县| 保定市| 儋州市| 安新县| 康乐县| 茶陵县| 称多县| 泰顺县| 永嘉县| 沙雅县| 南丰县| 湖北省| 化德县| 北流市| 西丰县| 玉林市| 四川省| 义乌市| 晋州市| 通山县| 荣成市| 稷山县| 定边县| 旬阳县| 壶关县| 新兴县| 麻阳| 海原县| 巴彦淖尔市| 宜宾市| 东方市| 法库县| 基隆市| 阳东县| 宝丰县| 双牌县| 阆中市| 奉节县| 田林县| 林州市| 忻城县| 尤溪县| 当涂县| 乳源| 芷江| 施秉县| 晴隆县| 鄯善县| 波密县| 晋江市| 石首市| 兖州市| 武清区| 棋牌| 大冶市| 浪卡子县| 云安县| 阜城县| 雷山县| 临武县| 温宿县| 寿光市| 芷江| 铜川市| 舒城县| 陈巴尔虎旗| 巴楚县| 巴彦淖尔市| 临江市| 图木舒克市| 中江县| 京山县| 黎平县| 平和县| 松滋市| 馆陶县| 青川县| 舒兰市| 舟山市| 石柱| 安多县| 湟源县| 宕昌县| 桦川县| 民权县| 滦平县| 齐齐哈尔市| 屯门区| 山东省| 石狮市| 山东| 吴旗县| 襄樊市| 万盛区| 来凤县| 瑞金市| 英超| 温泉县| 准格尔旗| 修武县| 类乌齐县| 崇州市| 公安县| 巴彦淖尔市| 鄂尔多斯市| 洛川县| 新田县| 泸定县| 塔城市| 西平县| 乡宁县|