
本文技術(shù)軟文,閱讀需謹(jǐn)慎,長約 7000 字,通讀需 5 分鐘
大家好,我是 Scott,本文通過提供給大家學(xué)習(xí)的方法,以及我個(gè)人錄制的一系列視頻,幫助你更快更好的學(xué)習(xí) Nodejs,了解前后端的 HTTP 知識(shí),以及配置和使用阿里云 ECS 來部署你的 Nodejs 項(xiàng)目,成為那個(gè)具有爭議的全棧開發(fā)工程師。
沒有耐心閱讀的同學(xué),可以直接前往學(xué)習(xí) 全棧最后一公里。
先回答下被很多新入行同學(xué)經(jīng)常問的問題,我從業(yè) 7 年,前 4 年在阿里巴巴做前端開發(fā)工程師,開發(fā)全網(wǎng)的通用創(chuàng)意模板,最近 3 年在創(chuàng)業(yè)公司擔(dān)任技術(shù)負(fù)責(zé)人,也就是聽上去高大上的 CTO,我職業(yè)的前 6 年月工資不到 1 萬 5,最近一年才調(diào)薪過 2 萬,我選擇了一條荊棘的跨專業(yè)自學(xué)入行之路,之后又創(chuàng)業(yè),彎路多多踩坑無數(shù),希望從我的親身經(jīng)歷中,大家可以對(duì)自己有更準(zhǔn)確的定位和投資,掌握更好的技術(shù)/職業(yè)上升的方法,自此我走過的彎路不再是束縛你的套路。
要不要學(xué)習(xí) Nodejs
如果你是前端開發(fā)工程師,你本地電腦上不可避免的要安裝 Nodejs,作為工具也好,作為服務(wù)器也好,要幫助你做掉很多又臟又累的事情,比如 LESS/Scss 的編譯,ES6/7 到 ES5 的轉(zhuǎn)換,Javascript 代碼的壓縮合并,切頁面調(diào)試樣式的熱更新,無論是通過社區(qū)迅速更新?lián)Q代的 Grunt/Gulp/Webpack,還是通過自己集成或者定制到本地的其他模塊,Nodejs 的這個(gè)運(yùn)行環(huán)境都是你得力的助手。
如果你是后端開發(fā)工程師,比如之前是開發(fā) PHP,Java,最近轉(zhuǎn)行做 Nodejs 或者想要增加一個(gè)語言技能才來學(xué)習(xí) Nodejs,你也不可避免的要去了解 ES5/6/7 或者說 Javascipt 的整個(gè)語法概念,去翻閱 Nodejs 的各個(gè) API,最后借助 Nodejs 社區(qū)的一些流行框架,比如 Express/Koa,甚至是阿里開源的 Egg,用你既有的后端開發(fā)經(jīng)驗(yàn),對(duì)于 Web 服務(wù)層交互的知識(shí),再套上這些框架的 API,來玩票性質(zhì)的搭建一些子項(xiàng)目運(yùn)行一些產(chǎn)品業(yè)務(wù)。
如果你是運(yùn)營或者產(chǎn)品經(jīng)理,但是你已具備一些基本的開發(fā)技能,比如 HTML/CSS/Javascript,甚至是對(duì) Linux 主機(jī)的系統(tǒng)使用,域名解析也有一些經(jīng)驗(yàn),你可能也更愿意在不去學(xué)習(xí)另外一種全新的語言下,來借助 Nodejs 搭建你的 Web 服務(wù),幫你的小點(diǎn)子小創(chuàng)意快速上線測試,獲取一些用戶的反饋或者價(jià)值驗(yàn)證,事實(shí)上我認(rèn)識(shí)的不少產(chǎn)品經(jīng)理對(duì) Express/React/Vue 這些很喜歡,能高效的幫他們實(shí)現(xiàn)一些產(chǎn)品原型的測試。
以上舉例,其實(shí)是為了說明影響你漲薪,也影響你職業(yè)發(fā)展的其中一個(gè)因素,便是某項(xiàng)技能的深度,或者是某些技能的廣度,這些技能包含但不限于前端后端或者產(chǎn)品,不要給自己設(shè)限,從事某個(gè)工種不代表你只可以鉆研這個(gè)工種,就拿前端舉例,既然本地有了 Nodejs 的運(yùn)行環(huán)境,那么適度的往下擴(kuò)展技能樹是順?biāo)浦鄣氖虑?,而?duì) Nodejs 很感興趣的無論任何職業(yè)的人來說,什么時(shí)候?qū)W習(xí)它都不晚,因?yàn)檎麄€(gè)互聯(lián)網(wǎng)經(jīng)過幾十年的發(fā)展目前的現(xiàn)狀就是, Javascript 成為了 Web 層最容易入門使用且最被工業(yè)標(biāo)準(zhǔn)和廠商推廣的語言,掌握了這個(gè)語言,就掌握了 Nodejs 的 1/3,剩下的 2/3 分別是 HTTP 知識(shí)和 Nodejs 本身的運(yùn)行機(jī)制和系統(tǒng)能力。
我在 2016 年被杭州芋頭哥邀請(qǐng)去大搜車做了個(gè)小分享,當(dāng)時(shí)現(xiàn)場氛圍特別好,整個(gè)杭州甚至蘇州的許多做 Nodejs 的同學(xué),其中超過 2/3 都是前端工程師,都跑來一起嗨皮,我之后又模擬錄制了一遍,對(duì)于 Nodejs 不熟悉的同學(xué)依然有參考意義,大家可以聽一下:
Nodejs 與 Javascript 先學(xué)哪個(gè)
掌握 Javascript 和掌握 Nodejs 并不沖突也并沒有絕對(duì)的先后順序,因?yàn)橥覀冮_始使用 Nodejs,是從 Web 的層面,而這個(gè)層面,我們有很多簡易入手的框架使用,比如 Express,即便不了解它的原理,照著 API 和 Best Practice 來模仿,適當(dāng)翻翻文檔來都可以幫助你編寫一個(gè)簡單的網(wǎng)站程序,再基于這種迅速可見可得的體驗(yàn)進(jìn)一步激發(fā)我們學(xué)習(xí)的興趣,花更多的時(shí)間去從多維度反復(fù)敲打自己對(duì)于 Nodejs 的知識(shí)結(jié)構(gòu),這樣一天兩天慢慢就理解它的知識(shí)點(diǎn)了,通過實(shí)際的手寫代碼,運(yùn)行服務(wù)器,看預(yù)覽效果,再去查文檔,寫更復(fù)雜的代碼,有些關(guān)鍵字不懂再去查查,這樣其實(shí)就是一個(gè)不斷反復(fù)不斷倒帶學(xué)習(xí)的過程,說是學(xué)習(xí),其實(shí)并沒有刻意的去啃 Javascript 或者 Nodejs 的語法和 API,而是自然的從工具使用走向理論構(gòu)建的過程。
上面這段是面向非常初級(jí)的 Nodejs 學(xué)習(xí)者,如果已經(jīng)有了其他語言的編程能力,那么入門 Javascript 也不會(huì)有太大障礙,可以先去了解 Javascript 這門語言的特點(diǎn),再去嘗試使用 Nodejs,在我看來,只要你對(duì)于 Javascript 和 Nodejs 是陌生的,那么學(xué)習(xí)這兩個(gè)就是交替并行來回穿梭的過程,在去熟悉 Nodejs 的過程中,也就逐步的了解到了 Javascript 的語法規(guī)則,在研究 Javascript 的過程中,也就更容易領(lǐng)會(huì) Nodejs 暴露出來的框架封裝出來的方法函數(shù)變量他們的使用姿勢和運(yùn)行特點(diǎn)。
先看書看文檔還是先找項(xiàng)目練手
對(duì)于學(xué)習(xí)習(xí)慣不同記憶能力不同的人來說,看文檔和做項(xiàng)目哪個(gè)更優(yōu)先,應(yīng)該不會(huì)有標(biāo)準(zhǔn)答案,而且這兩個(gè)在中期以后往往是交叉的,我個(gè)人的學(xué)習(xí)習(xí)慣一般是,先做項(xiàng)目,如果項(xiàng)目太難,我就把項(xiàng)目中難的功能都去掉,梳理出一個(gè)最簡版本,以寫代碼為為主,以看文檔作為補(bǔ)充,比如白天或者核心時(shí)間寫代碼,午間或者公交車上這些零碎時(shí)間翻文檔,可以有目的的看,也可以隨便挑幾個(gè)感興趣的看,這樣做的缺點(diǎn)是,在項(xiàng)目一開始啟動(dòng)的時(shí)候,會(huì)因?yàn)椴皇煜の臋n,走一些彎路而且比較耗腦力,它的優(yōu)點(diǎn)是,一開始就寫代碼有作品雛形出來,容易激發(fā)我征服它的斗志,更有欲望把它做出來,所以這樣開始的方式,往往我都不會(huì)中途放棄,而看文檔的方式,我會(huì)覺得枯燥,或者不知所云,可能看看就困了放棄了,這種不太適合我,但是它的優(yōu)點(diǎn)也很明顯,如果充分的看了文檔,基于原作者或者原始團(tuán)隊(duì)的角度理解技術(shù)點(diǎn),更容易一開始就走在正確的道路上,無論是名詞還是原理或者 API,心中會(huì)很有方寸,做項(xiàng)目的時(shí)候也容易推測出來出問題的環(huán)節(jié)去哪里找答案。
對(duì)于新人來說,先把項(xiàng)目做起來會(huì)比較實(shí)用,走彎路和踩的坑必然會(huì)多一些,但是這樣更容易產(chǎn)生興趣把硬骨頭啃下來,也會(huì)提高解決問題的即時(shí)反應(yīng)能力,所謂臨陣不懼,運(yùn)籌有度。
哪里找練手項(xiàng)目
練手項(xiàng)目從觀看類型上分兩種,一種是純文字形式的,比如連載的博客,一種是視頻,或者是直播或者是錄播的視頻,連載的博客好處是都形成了文字,并且有代碼示例,看的時(shí)候可以用腦力集中消化某一個(gè)技術(shù)點(diǎn),容易看懂,這同時(shí)也是它的一個(gè)缺點(diǎn),因?yàn)椴┛椭胁煌募夹g(shù)點(diǎn)都用大腦消化后,就會(huì)產(chǎn)生一種已經(jīng)理解了它的直覺,這種直覺會(huì)促使你快速的通讀全完直到最后,所有的編程環(huán)節(jié)卻沒有動(dòng)手實(shí)施,導(dǎo)致過了三五天后再來回想這些文字和當(dāng)初所理解的概念,腦海中就會(huì)印象模糊甚至一片空白,用行話說就是沒有把消化后的知識(shí)持久化。
直播的視頻對(duì)個(gè)人的時(shí)間要求比較嚴(yán)格,同時(shí)直播中不能暫停甚至不能提問,會(huì)導(dǎo)致自己被動(dòng)的 Push 往前走,容易遺留下一些關(guān)鍵的問題點(diǎn)沒有及時(shí)消化,不過現(xiàn)在有的直播平臺(tái)會(huì)自動(dòng)存儲(chǔ)有備份,所以也可以重播。
我個(gè)人傾向于看錄播的視頻,可以暫停,可以快進(jìn),可以重播,跟著屏幕敲代碼大概是目前最好的一種跟隨實(shí)戰(zhàn)的方式了,錄播的視頻這方面有很多的學(xué)習(xí)平臺(tái),我自己平時(shí)是泡在慕課網(wǎng),雖然我也是講師,但是我也經(jīng)常聽別的講師講的課程,收獲還是挺大的。
如果你對(duì) Nodejs 已經(jīng)有一定的掌握了,那么其實(shí)可以跳開一些簡單的博客啊視頻啊,直接上 Github 上搜一些別人開源的 Github 項(xiàng)目,Clone 到本地,跑起來,再去讀他們的源碼,這是最直接也最有效的學(xué)習(xí)方式了,但是這個(gè)對(duì)于初學(xué)者往往比較難,因?yàn)殚喿x源代碼的前提是要有一定的編程量,上來就一通讀不僅會(huì)增加理解項(xiàng)目的難度,更會(huì)因此失去閱讀代碼的興趣。
我下面會(huì)羅列一些,我自己錄制過的一些項(xiàng)目,或者其他的我覺得可以按照這個(gè)路線繼續(xù)深入學(xué)習(xí)的項(xiàng)目資源。
Express 實(shí)現(xiàn)一個(gè)電影網(wǎng)站
在我入行的那個(gè)年代,一般編程的第一個(gè)練手項(xiàng)目,往往是一個(gè)增刪改查的博客系統(tǒng),或者是一個(gè)聊天室,這方面資源很多,但是我個(gè)人覺得起點(diǎn)略低而且提不起興趣,于是就錄制了一個(gè)開發(fā)電影網(wǎng)站的免費(fèi)視頻課程,課程地址如下:
這兩個(gè)課程,是采用 Nodejs+MongoDB 外加一些必要的中間件,比如 Mongoose 建模,body 解析,Jade 模板等等,有前端的頁面也有后端的頁面,有注冊(cè)登錄也有密碼的加鹽設(shè)計(jì),后端這里也有管理員的角色,請(qǐng)求豆瓣數(shù)據(jù)寫入數(shù)據(jù)庫包括評(píng)論的數(shù)據(jù)結(jié)構(gòu)和評(píng)論流程的實(shí)現(xiàn),算是一個(gè)五臟俱全的小小麻雀。
課程中用到的 Express 框架,需要理解 req 和 res 兩個(gè)跟業(yè)務(wù)密切相關(guān)的知識(shí)點(diǎn),一個(gè)是數(shù)據(jù)流進(jìn),一個(gè)是數(shù)據(jù)流出,然后就是 Express 的中間件機(jī)制基本是基于回調(diào)或者是基于事件的,這些都是在跟著把代碼全部實(shí)現(xiàn)后就能理解的東西,一開始不用太糾結(jié)細(xì)節(jié),先關(guān)注流程就行,同時(shí)因?yàn)閿?shù)據(jù)存儲(chǔ)用到了 MongoDB,項(xiàng)目中也使用了 Mongoose 來配置和鏈接數(shù)據(jù)庫,來設(shè)計(jì)每一個(gè)數(shù)據(jù)模型的 Schema,可以理解為表的概念,另外由于課程錄制的比較早,大家要特別留意版本,在 2 期課程中有一個(gè)補(bǔ)錄的升級(jí)課程,可以在一期的學(xué)習(xí)中,跳過去看升級(jí)再回過頭看。
或者如果不喜歡 Scott 早期課程的聲音或者講解的方式,也可以直接看下面的這個(gè)課程,里面有許多小例子,跟著敲代碼不累。
Nodejs 的基礎(chǔ)概念和 API 講解
這個(gè)是純面向新手的課程,地址如下:
在這兩個(gè)課程中,我嘗試了新的錄制風(fēng)格,但同時(shí)也導(dǎo)致了錄制的時(shí)候,描述過于逗比不夠嚴(yán)謹(jǐn),還好很多看過的童鞋們還都表示很有收獲,看來激起學(xué)習(xí)興趣的確是所有市面的博客也好,視頻也好都要去提升的一個(gè)點(diǎn)。
用 Nodejs 開發(fā)微信公眾號(hào)
在微信公眾號(hào)推出的那個(gè)風(fēng)口,滿大街都在找能開發(fā)微信公眾號(hào)的工程師,而且由于公眾號(hào)本身與微信打通的鏈路和易傳播性,H5 工程師成了各個(gè)類媒體公司和創(chuàng)業(yè)公司的標(biāo)配,但是微信公眾號(hào)由于它的特殊性,需要前后端協(xié)作完成,并且需要通過微信的官方服務(wù)器進(jìn)行消息的分發(fā)和中轉(zhuǎn)接收,給很多公司是前端后端同學(xué)帶去困擾,增加了協(xié)作的成本,于是具備 Nodejs 開發(fā)能力的前端工程師在市面上備受歡迎,因?yàn)?Java/PHP 這種傳統(tǒng)后端可以賦予公眾號(hào)純數(shù)據(jù)的接口調(diào)用權(quán)限,而多變的業(yè)務(wù)邏輯則可以由前端自己通過 Nodejs 來自由控制,同時(shí)微信公眾號(hào)里面的消息和跳轉(zhuǎn)的頁面自己都能完全控制,于是 Nodejs 微信開發(fā)工程師往往通過一兩個(gè)人的配合,就能極高效率的完成公司在微信端的的業(yè)務(wù)實(shí)現(xiàn),涉及到復(fù)雜數(shù)據(jù)或者大體積數(shù)據(jù)存儲(chǔ)的部分,仍然可以交還給 Java/PHP 工程師來負(fù)責(zé),從公司層面,產(chǎn)品做的更輕更快而且人員成本上也更省錢,從個(gè)人層面,對(duì)于產(chǎn)品研發(fā)的流程也更有控制權(quán),同時(shí)個(gè)人也更有競爭力更值錢。
在現(xiàn)在,公眾號(hào)依然是很多傳統(tǒng)公司走向互聯(lián)網(wǎng)化所優(yōu)先考慮的方向,加上小程序的推出和一系列附加能力的擴(kuò)展,這兩個(gè)可以很好的協(xié)作來拉新和轉(zhuǎn)化,現(xiàn)在具備 Nodejs 在微信的使用層面,依然是有很大的成本優(yōu)勢。
于是響應(yīng)慕課網(wǎng)的需求,推出了這個(gè)收費(fèi)的視頻課程:
在這個(gè)課程里面,把上面的電影網(wǎng)站,進(jìn)行了大刀闊斧的升級(jí)改造,基于原來的登錄注冊(cè)后臺(tái)上傳這些功能外
- 把原來的 Express 框架也切換到 Koa 框架
- 利用 yield 來做異步操作的執(zhí)行
- 從零開始封裝微信中間件
- 深入到最底層的請(qǐng)求邏輯
- 微信第三方接口調(diào)用過程
- ES2015 新特性使用(Promise, Generator)
- 充分理解 http 請(qǐng)求和實(shí)現(xiàn)二跳換 token 請(qǐng)求
- ...
讓這個(gè)微信公眾號(hào),本身可以響應(yīng)用戶的消息,比如上傳圖片/視頻,文字自動(dòng)回復(fù),電影的檢索和數(shù)組消息推送,還可以在公眾號(hào)里面跳到電影網(wǎng)站的手機(jī)版本,里面可以調(diào)用語音 SDK 進(jìn)行搜尋,可以基于微信的 openid 進(jìn)行用戶注冊(cè)和評(píng)論等等,這時(shí)候原來那個(gè)電影網(wǎng)站的小麻雀就變成了一只犀利的老鷹,能對(duì)微信用戶提供更豐富的功能和體驗(yàn),而這一切的背后,僅僅是 Nodejs+MongoDB 外加 Koa 框架的支撐。
React Native App 開發(fā)
React 問世以來,特別是 React Native 問世以來,整個(gè)前端世界再一次陷入了變革狂潮,用聲音或者行動(dòng)宣示要搞事要運(yùn)動(dòng),因循守舊的工程師被動(dòng)主動(dòng)的被淘汰,因時(shí)制宜的工程師和大量的前端新人,踩在老人的尸體上大步前行,無論承認(rèn)與否,互聯(lián)網(wǎng)世界一天天變得更豐富多彩,技術(shù)的圈子亦然,變革的速度快慢不重要,基于變革而能及時(shí)上車的勇氣很重要,無論是 Microsoft,F(xiàn)acebook,Google,Instagram,還是 Alibaba, 騰訊,地球上的一線大公司的一線牛人,在過往的幾年中,開源了巨量的框架,尤其在 Nodejs 和 React Native 方面,也都有了許多實(shí)踐和改造,給許多的中小公司帶去更多的信心,有了更多的選擇。
開發(fā) App 就是這樣,世界不再是過去的非 Object-C(Swift) 即 Java,也不再是犧牲性能追求效率的 Cordova 和 PhoneGap,而是有了介于二者直接的 React Native,更多的養(yǎng)不起兩個(gè)不同語種工程師的小公司和創(chuàng)業(yè)公司,開始眷顧能適應(yīng)兩個(gè)平臺(tái),且能滿足自己業(yè)務(wù)和展現(xiàn)需求的 React Native,而開發(fā)一個(gè) App 并不簡單,除了肉眼可見的前臺(tái),還有作為純 API 接口的后臺(tái),前后之間依然有種種的門檻,這時(shí)候 Nodejs 的輕便就又派上用場,具備 Nodejs 開發(fā)能力的 React Native 工程師,到今天為止依然是香餑餑。
還是順應(yīng)潮流,結(jié)合慕課網(wǎng)推出了這個(gè)課程,同時(shí)慕課網(wǎng)的官方設(shè)計(jì)師負(fù)責(zé)給 App 出插圖潤色,不過這個(gè)課程是收費(fèi)的:
在這個(gè)課程中,先撇開 React Native 這個(gè)純 App 端展現(xiàn)的部分,整個(gè)后端是用 Nodejs 開發(fā)的,框架依然是 Koa,涉及到了用戶 token 生成獲取,短信驗(yàn)證碼,無后臺(tái)的 Mock 數(shù)據(jù),以及基于 MongoDB 的 Restful API 服務(wù),對(duì)于音頻視頻資源的轉(zhuǎn)碼和合并都是在后端完成,里面涉及到大量的異步操作,對(duì)于一個(gè)初級(jí)和中級(jí)工程師,有非常好的實(shí)戰(zhàn)借鑒意義。
上面發(fā)了都是我的個(gè)人作品,下面提供下其他的我認(rèn)為學(xué)習(xí) Nodejs 需要投入時(shí)間研究的知識(shí)或者方向;
培養(yǎng)英文讀寫提問的能力
有句話怎么說,編程三分靠資歷,7 分靠 Google,大部分你在業(yè)務(wù)場景中遇到的技術(shù)問題,在網(wǎng)上都有現(xiàn)成的答案,問題是你不知道用什么關(guān)鍵詞去搜出來,這個(gè)還是比較考察英文的表述能力,這些最前沿的技術(shù),都是老外們實(shí)踐出來的,我們的腦回路也應(yīng)該在編程之外,多適應(yīng)一下英文的思考方式,多逼自己閱讀英文技術(shù)文檔,隨著時(shí)間慢慢就能習(xí)慣,只要解鎖了英文的這把枷鎖,就打開了新世界的大門,無論是從檢索和閱讀角度,還是從提問參與的角度。
關(guān)注 Github 倉庫 Wiki 和產(chǎn)品榜單
我們上 Github 的時(shí)候,往往會(huì)很關(guān)注熱門的框架庫,那么這些框架庫里往往蘊(yùn)含著更有參考價(jià)值的寶藏,那就是 Wiki,比如 Express,在它的 Wiki 里面,除了有 Express 的升級(jí)指南,中間件列表之外,還有一個(gè) Frameworks built with Express,什么意思呢,就是很多團(tuán)隊(duì)或者個(gè)人對(duì) Express 不夠滿意,或者自己的場景更特殊,Express 不能滿足,他們都基于 Express 這個(gè)框架基礎(chǔ)或者思想來構(gòu)建了一個(gè)新的框架,這些新的框架,都的基于他們的需求或者他們認(rèn)為合理的方向來實(shí)現(xiàn)的,這些框架的源代碼包括文檔,大家在學(xué)習(xí) Nodejs 的時(shí)候,可以好好研究一下,能學(xué)習(xí)到更多他人在設(shè)計(jì)框架時(shí)候考慮的方向,實(shí)現(xiàn)的方式,比如這些:
- Feathers -- 一個(gè)迷你的數(shù)據(jù)驅(qū)動(dòng)的框架
- Monorail.js -- 一個(gè)極輕量級(jí)的 MVC 框架
- Locomotive -- 受 Ruby on Rails 啟發(fā)而開發(fā)的強(qiáng)大的 MVC 框架
- CompoundJS -- 同樣是受 Ruby on Rails 啟發(fā)的高水平 MVC 框架
- Calipso -- 基于 Express/Mongoose 的內(nèi)容管理系統(tǒng)
- Derby -- 一個(gè)實(shí)時(shí)的協(xié)作應(yīng)用框架
- Bones -- 基于 Express/Backbone 實(shí)現(xiàn)的 CS 應(yīng)用框架
- Matador -- Twitter 工程師開發(fā)的 MVC 框架
- Lemmy -- 一個(gè)不可描述(爆粗口)的神秘框架
- Mojito -- Yahoo 開發(fā)的 MVC 框架
綜合比較一下,就能找出更適合自己用的框架,等到對(duì)框架足夠熟悉的時(shí)候,就可以去閱讀他們的 issues 甚至是源代碼,看的多了想的多了,就越來越上道了。
全棧的最后一公里
全棧這個(gè)詞很敏感,有人不認(rèn)同有人無所謂,對(duì)我而言,它就像是一個(gè) H5 工程師一樣,只是表述了一種印象或者概念,具體嚴(yán)謹(jǐn)與否不重要,因?yàn)楦藴贤?,心領(lǐng)神會(huì)即可不必強(qiáng)究細(xì)節(jié)。
那么在學(xué)習(xí) Nodejs 的過程中,有一道門檻是無論如何也逃不過去的,那就是 服務(wù)器的選購配置,域名的解析指向,Nodejs 項(xiàng)目的部署等這些偏運(yùn)維方向,這些讓很多新人甚至是已經(jīng)工作的工程師困擾,自己去琢磨太花費(fèi)時(shí)間,不去琢磨,始終沒有能力憑自己雙手,讓一個(gè)產(chǎn)品上線或者讓自己的一個(gè)想法實(shí)現(xiàn)到互聯(lián)網(wǎng)上,不論是成為獨(dú)立站長,還是只是讓朋友同學(xué)訪問,于是我把這些總結(jié)了一下,以以上幾個(gè)項(xiàng)目為例,大概分為如下幾個(gè)步驟:
- 部署方案規(guī)劃
- 待部署項(xiàng)目分析
- 選購及備案域名
- 廠商對(duì)比與選配阿里云服務(wù)器
- 初步 SSH 無密碼登錄連接和配置
- 搭建 Nodejs/MongoDB/Nginx 環(huán)境
- 配置 IPTables/Fail2Ban 防火墻及主動(dòng)防御
- 域名 DNS 轉(zhuǎn)移及 A 記錄/CNAME 解析配置
- MongoDB 角色配置與安全規(guī)則設(shè)置
- 線上 MongoDB 單表單庫導(dǎo)入導(dǎo)出與跨機(jī)遷移備份上傳
- PM2 發(fā)布環(huán)境配置
- 服務(wù)器與 Git 倉庫讀寫配置
- PM2 一鍵部署線上 Nodejs 項(xiàng)目
- 電影網(wǎng)站/ReactNative App 后臺(tái)/微信公眾號(hào)/微信小程序后臺(tái)等項(xiàng)目實(shí)戰(zhàn)部署
- SSL 證書申請(qǐng)及 Nginx 證書集成提供 HTTPS 協(xié)議
- 上線方案復(fù)盤總結(jié)
這個(gè)新課程 全棧最后一公里 - Node.js項(xiàng)目的線上服務(wù)器部署與發(fā)布 已經(jīng)在 4 月 10 日上線,感興趣的同學(xué)們可以關(guān)注一下。
編程路漫漫,與大家共勉!