SEARCH
網站(zhàn)建設|網站(zhàn)制(zhì)作(zuò)|網站(zhàn)設計(jì)—蘇州阿洛克網絡科技有限公司

Internet Develppment互聯網開(kāi)發&推廣服務提供商

Search

與我們合作(zuò)

我們專注:網站(zhàn)策劃設計(jì)、網絡多(duō)媒體(tǐ)傳播、網站(zhàn)優化及網站(zhàn)營銷、品牌策略與設計(jì)
主營業務:網站(zhàn)建設、移動端微信小(xiǎo)程序開(kāi)發、VI設計(jì)、網絡運營、雲産品·運維解決方案

有(yǒu)一個(gè)品牌項目想和(hé)我們談談嗎?

您可(kě)以填寫右邊的表格,讓我們了解您的項目需求,這是一個(gè)良好的開(kāi)始,我們将會(huì)盡快與您取得(de)聯系。當然也歡迎您給我們寫信或是打電(diàn)話(huà),讓我們聽(tīng)到您的聲音(yīn)

您也可(kě)通(tōng)過下列途徑與我們取得(de)聯系:

地 址:蘇州吳中區(qū)東環路999号正基大(dà)廈A座

電(diàn) 話(huà):0512-65982570

手 機:189-1350-2096

網 址:http://www.szqiqiao.com

郵 箱:hsw@szqiqiao.com

快速提交您的需求 ↓

點擊更新驗證碼

做(zuò)網站(zhàn)技(jì)術(shù)之Node.js 究竟是什麽?

發布日期:2018/7/17 15:14:34

    如果您聽(tīng)說過 Node,或者閱讀過一些(xiē)文章,宣稱 Node 是多(duō)麽多(duō)麽的棒,那(nà)麽您可(kě)能會(huì)想:“Node 究竟是什麽東西?” 即便是在參閱 Node 的主頁之後,您甚至可(kě)能還(hái)是 不明(míng)白 Node 為(wèi)何物?Node 肯定不适合每個(gè)程序員,但(dàn)它可(kě)能是某些(xiē)程序員一直苦苦追尋的東西。


    為(wèi)試圖解釋什麽是 Node.js,本文将簡要介紹一些(xiē)背景信息:它要解決的問題,它如何工作(zuò),如何運行(xíng)一個(gè)簡單應用程序,最後,Node 在什麽情況下是一個(gè)好的解決方案。本文不涉及如何編寫一個(gè)複雜的 Node 應用程序,也不是一份全面的 Node 教程。閱讀本文應該有(yǒu)助于您決定是否應該繼續學習 Node,以便将其用于您的業務。


    Node 公開(kāi)宣稱的目标是 “旨在提供一種簡單的構建可(kě)伸縮網絡程序的方法”。當前的服務器(qì)程序有(yǒu)什麽問題?我們來(lái)做(zuò)個(gè)數(shù)學題。在 Java™ 和(hé) PHP 這類語言中,每個(gè)連接都會(huì)生(shēng)成一個(gè)新線程,每個(gè)新線程可(kě)能需要 2 MB 的配套內(nèi)存。在一個(gè)擁有(yǒu) 8 GB RAM 的系統上(shàng),理(lǐ)論上(shàng)最大(dà)的并發連接數(shù)量是 4,000 個(gè)用戶。随着您的客戶群的增長,如果希望您的 Web 應用程序支持更多(duō)用戶,那(nà)麽,您必須添加更多(duō)服務器(qì)。當然,這會(huì)增加服務器(qì)成本、流量成本和(hé)人(rén)工成本等成本。除這些(xiē)成本上(shàng)升外,還(hái)有(yǒu)一個(gè)潛在技(jì)術(shù)問題,即用戶可(kě)能針對每個(gè)請(qǐng)求使用不同的服務器(qì),因此,任何共享資源都必須在所有(yǒu)服務器(qì)之間(jiān)共享。鑒于上(shàng)述所有(yǒu)原因,整個(gè) Web 應用程序架構(包括流量、處理(lǐ)器(qì)速度和(hé)內(nèi)存速度)中的瓶頸是:服務器(qì)能夠處理(lǐ)的并發連接的最大(dà)數(shù)量。


    Node 解決這個(gè)問題的方法是:更改連接到服務器(qì)的方式。每個(gè)連接發射一個(gè)在 Node 引擎的進程中運行(xíng)的事件,而不是為(wèi)每個(gè)連接生(shēng)成一個(gè)新的 OS 線程(并為(wèi)其分配一些(xiē)配套內(nèi)存)。Node 聲稱它絕不會(huì)死鎖,因為(wèi)它根本不允許使用鎖,它不會(huì)直接阻塞 I/O 調用。Node 還(hái)宣稱,運行(xíng)它的服務器(qì)能支持數(shù)萬個(gè)并發連接。


    現在您有(yǒu)了一個(gè)能處理(lǐ)數(shù)萬個(gè)并發連接的程序,那(nà)麽您能通(tōng)過 Node 實際構建什麽呢?如果您有(yǒu)一個(gè) Web 應用程序需要處理(lǐ)這麽多(duō)連接,那(nà)将是一件很(hěn) “恐怖” 的事!那(nà)是一種 “如果您有(yǒu)這個(gè)問題,那(nà)麽它根本不是問題” 的問題。在回答(dá)上(shàng)面的問題之前,我們先看看 Node 的工作(zuò)原理(lǐ)以及它的設計(jì)運行(xíng)方式。


網站(zhàn)最主要的功能是發布消息,但(dàn)這個(gè)消息不是永久保存了,而且保存的時(shí)間(jiān)不會(huì)太長,預計(jì)消息的長度也不會(huì)太長,因此使用 redis 來(lái)存儲是比較合适。


由于對後端數(shù)據庫這一塊還(hái)不太熟悉,目前也就對 PostgreSQL 用得(de)多(duō)點,因此在存儲用戶的注冊信息這一塊就選擇了 PostgreSQL。


登錄這一塊打算(suàn)使用 JWT 來(lái)做(zuò),因此無需保存用戶狀态到 PostgreSQL 數(shù)據庫中,這樣可(kě)以減少(shǎo)對數(shù)據庫的操作(zuò)。


後端選用 Node.js + koa + koa-router,另外由于現在 async/await 已經正式進入 ES2017 了,就打算(suàn)使用 async/await 優化異步代碼的結構。


前端準備做(zuò)成單頁應用,于是選用 preact + redux + redux-thunk。


前端的代碼通(tōng)過 webpack 打包,而後端的代碼通(tōng)過 rollup 打包(選用 rollup 打包是由于 Node.js 6+ 已經基本支持 ES2015 了,這裏隻需要将各個(gè)模塊打包在一起,順便把 async/await 轉換成 Node.js 可(kě)以運行(xíng)的代碼就可(kě)以了,而這個(gè)工作(zuò)非常合适 rollup 來(lái)做(zuò))。


GO 欣賞案例
查看經典案例

TOP

QQ客服

QQ客服 免費電(diàn)話(huà)
獲取報價
您的稱呼:

*

您的電(diàn)話(huà):

*

您的郵箱:

*

提交 重置