nodejs工程師一般工作內容是什麼?
各位nodejs的大神好,本人想從事node開發,目前會node的一些基本操作,會用koa2操作資料庫crud,可以用ejs搭建一個網站,可以實現登錄,註冊,留言板等基礎功能,我想問下大家我下一步該學習什麼知識?因為我之前是做的前端,真心求教!希望大家知道的能為我解答下,感謝!
首先要把js語言這個基礎打好,es規範搞熟了以後,我們再說後面的。
Stream這個類可以了解一下,看著文檔,它貫穿了文件操作,http,子進程,標準輸入輸出等各個模塊。這些模塊都搞熟了以後,Stream各個子類也就都熟悉了,也就都熟悉了。而且有可能連它的父類EventEmitter也熟悉了,自此你就可以跳出web領域了。這時你可以接入一個新的平台,electron,在這裡,套接字,ipc通訊等傳統C/S程序員的知識領域開始走進你的視野。
中間還有另外一條並行的支線任務。typescript,誇張點說,他會給你打開一個新的世界。很多前端起點的程序員有一個通病,就是只學過動態類型語言。我常說,一個人手裡如果有把鎚子,他會看什麼都像釘子。只會用動態類型語言的程序員,就像是一個拿著鎚子的孩子。詳細的差異我就不展開講了。
第三條支線任務就是工程化,node這邊的工程化生態比前端要好很多。自動化的lint、構建、測試、編譯、部署這些環節都有完美的生態閉環。易用性和可實施性也比前端那邊強很多。另外node社區這邊的持續集成服務,完爆前端社區。
既然說起 Node.js 工程師,應該不是狹義的前端開發用的 Node.js 做成的工具,如果單純的 Node.js 寫線上可運行的程序的話,那以我的理解,你可以有以下兩方面的選擇:
- 應用流
做一個傳統的後端,做 HTTP 應用層,ORM 層,操作 DB,搞 CRUD,這種工作類似與其他的後端編程程序員,比如:Java 工程師。只是用的語言不一樣,生態不一樣。這種應用基本上能讓你實現從前端程序員平滑過度到後端程序員,或者全棧。這裡最機器的基礎知識有:
- 資料庫如何操作
- ORM 的使用
- HTTP Server 的應用層
- 微服務的設計與實現
2.運維流
目前來看,一般的中小型公司,對於前端的運維基本為零。那麼如何搭建一個前端的線上環境,就成了一種方向。如果深入了解,就會有如下問題:
- 如何處理線上多台機器的負載均衡;
- 如何處理突破單台機器 Node.js 單線程的限制;
- 如何收集線上日誌,報錯的時候通知你;
- 如何了解線上程序的運行情況;
最後,還是要看清自己,是更擅長前端複雜的交互,還是後端純正的程序,且行且珍惜。
1. 做前端工程化
2. 做大前端中間層工作
3. 純後端開發
4.創業公司中苦逼的全棧工程師
5. node c++ addons開發
6. 轉坑,從node跳入c++。
7. 搞c++機器學習,機器視覺。
8. 學習v8, libuv。
9. 熟悉v8,c++搞瀏覽器內核開發
10. 裝 逼
一般工作內容就是:CURD
自己想學的話,就看你想往那方面發展。
選擇深度發展,就去研究nodejs的實現,研究V8。
選擇廣度發展,就去擴寬自己服務端的知識面,面向全棧學習。
目前深度發展看起來難,實質上反倒是面試和裝逼的捷徑,但難說後面新的js運行時和新的引擎出來把你好不容易學的知識淘汰掉。
廣度發展反倒是一種腳踏實地的做法,循序漸深,但這個需要論年的時間來積累。
高票說的很好, 大方向上說:
- 看http協議(哪些問題是協議內已經提供解決方案的, 緩存策略啊, 認證啊, restapi啊)
- 看你用過的東西的文檔(任何庫都有一定中心思想, 帶來的提升不光是庫本身的熟練度, 編碼技巧(設計模式)可以參考一些庫的源碼, 其實不光是koa這種, node本身, 你用的資料庫都更值得一看)
我本身還是處在看文檔的階段...所以到此就為止了...當然要有選擇的看哈
不知道,我把一個網站加後台,從IIS裝載HTML,轉換到Nginx裝載一個Vue的單頁,後來,變成了Koa2的pug模板,後來把pug模板改成了內嵌型的Vue,改了一波Egg.js,中途折回來,把網站改成了nuxt.js加koa2的ssr合併的類型,最後打算改到,egg.js加nuxt.js的ssr,哦,這部分是用node來做網頁開發的,微信公眾號小程序也做了幾個了,都是基於node,在遊戲開發方面我也做過一些嘗試,但不深,用node也做過很多其他的事,對我來說,node,準確說是js只是我會的語言中的一種,但慢慢變成我最常用的一種,是好是壞,也懶得想,反正我也會c++,都不影響。
結論忘了說了,nodejs一般工作是解決問題,解決工作中的問題和自己想出來的問題。
推薦閱讀:
※別人家的node都是100萬級別的,我的怎麼5000+伺服器就開始主動斷開連接了?
※Vue.js中ajax請求代碼應該寫在組件的methods中還是vuex的actions中?
※js中什麼技術能合併多個前端請求,並生成一個json文件發送?
※為什麼nodejs不給每一個.js文件以獨立的上下文來避免作用域被污染?
※Mozilla Rhino 和 Node.js 兼容嗎?
TAG:Nodejs |