從2016年在yelp hackathon裏第一次接觸node.js以及其相關的stack(MEAN),我就被深深吸引了。當初的印象是,這開發web app好快啊,一分鐘配置端口,搭好服務器,跑起來hello world node.js。個人第一個nodejs app是聊天室+地圖,用到socket.io,這也刷新了個人三觀,同時也讓我對async印象深入。前端
後來又參加了shop.com的hackathon,不用說,就用nodejs。此次啊,造了個輪子,不都說造輪子比較高大上麼。給shop.com原有的api作了個nodejs版本的。此次照着node-yelp的葫蘆,畫了個本身瓢,還接觸到了Promise。不光是造輪子,還得測試啊,因此又接觸了assert。雖然沒太多人用,不過也是挺有成就感,畢竟爲community作了貢獻。node
過了幾個月快畢業了,這一次是給XXX安全公司作項目(在試用python stack失敗後,我強烈建議轉到node stack),是給一個mobile app作server。由於項目特定的需求,除了接觸到node中restful api的設計與實現,還搞了很多安全相關的東西。畢竟是畢業項目,並且是真的會有XXX公司的人用,再加上上一次node項目屎同樣文件結構的經驗,此次我作了些研究,關於文件結構,ngnix的配置還有一些best practice。此次項目的印象是,這開發web app好方便啊,一分鐘(通常要試用幾個相似的package,看看哪一個比較適合)在npm找到你想用的package,安裝讀文檔,而後就用!python
自此我從沒讀過任何nodejs書籍,全靠online tutorial,documents以及照葫蘆畫瓢作東西(stackoverflow就用不用說了)。東西仍是照樣作,感受讀個啥書。git
畢業了找到工做以後,又想開始浪(用閒置時間作項目)。毫無疑問的選擇了node,不考慮應用場景, 就是單純的爲了經過作東西學更多nodejs的東西。此次主要作了爬蟲,接觸到了cheerio,request以及另外刷新三觀的auth0。這東西好啊,媽媽不再用擔憂登錄註冊、用戶管理了。因爲這段時間作了和找工做相關的項目,而後發現glassdoor只有一個package,爲了蹭熱點,我也搞了一個,就是要比那一個好!而後還作了一個獲取公司h1b信息的package,方便我再項目裏調用。github
這期間搞到了《深刻淺出nodejs》還有《nodejs高級編程》,準備開始讀,大概翻了翻,以爲這我都『差很少』知道啊,因而就拖拖拉拉大概看了看。web
浪了沒幾個星期,去了tufts的一個hackathon,此次更是收穫滿滿,由於是24小時hackathon,以後還要presentation,因此爲了加快開發速度,把更多時間放到真正功能的開發上。我發現了另外一個神器,hackathon-starter。在這個樣板的幫助下,完成了hackathon,但他的做用不止於此。我發現他的文件結構能夠和我以前搜到的best practice結合,這樣我就有了一套本身順手的文件結構,感受棒棒的。以後的項目就能夠輕輕鬆鬆開始。除了hackathon-starter,還結識了『加油女孩』微光基金項目的成員。他們到hackathon裏面去找中國人,而後看有沒有興趣幫他們開發。我心想,反正也沒事兒,並且這是個公益活動(頭一次以爲本身寫的代碼這麼有社會意義),最主要我仍是能夠用nodejs,就這樣決定了。以後的四五個月時間(主要是頭兩個月集中開發,後面屬於針對某些需求的改動再作的一些邊邊角角的開發),就基本下班回家搞這個。這一次項目更大了(史無前例的大),從設計到實現,從客戶端到管理員端,從model分析設計到怎麼保證數據的安全,從項目開發到不一樣環境(dev, qa, production)的部署。印象比較深的幾個package是helmet,lusca(安全相關),i18n(國際化),async(收穫最大的一個,功能複雜以後,callback一層套一層,真的是callhack hell了),在一個就是發現handlebar這個前端引擎既有的功能不多,因而接觸了怎麼自定義一些操做,讓引擎更增強大,服務器放方面接觸了forever和pm2,感受pm2相對好一點,以後還要部署https,搞了成千上萬次,後來在certbot的幫助下完成了(後來想起來貌似cloudflare能夠幫助自動變成https)。npm
忙完這個公益項目以後,就如今了,雖然仍是在作東西,仍是用nodejs。有一個想法愈來愈頻繁的出如今我腦海裏,對於nodejs我究竟是在學什麼,是學習具體的package怎麼用嗎?!都說看源碼,理解怎麼工做的,這個真的有用嗎?是在什麼方面有用呢?編程
帶着這些疑問,我決定認認真真的看一下課程,讀一下書,從原理讀起。以前個人學習方法是learning by doing,如今開始從原理學起。也用親身經從來驗證下(極端的)實踐派學習方法以及(符合學習方法的)理論派學習方法,到底會給我帶來什麼不一樣的收穫!(接下來會持續更新...)api
上面提到的package/repo/project:安全