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