沒用過Node.js,就別瞎逼逼

Node全棧發表於2017-12-14

本來不想回復的,匿名的那哥們寫的挺好的,雖然不懂他為什麼要匿名。但看到某些回覆,不得不說幾句。亂解讀,誤人子弟的事,還是有必要澄清的,以免Node有無端被黑,相信這也是所有佈道者都應該承擔這種除魔衛道的責任。



沒有領袖,Node 之父用 Go,TJ 也用 Go,都跑了。

1) 語言不是因素,是他想做的事兒變了,但他的心依然還是愛著Koa

TJ轉做Go有很多原因

  • 人家做的基於aws Lambda的基礎設施 https://github.com/apex/apex,選擇Go無可厚非,從架構角度,我還要給他點贊!

  • TJ對Node.js一直很關注,尤其對Koa框架,看他的Pinned repositories 就知道,另外給Koa提issue被他懟過,也可見他很在意Koa


別亂解讀,誤人子弟

2) Node.js之父在2012年就離開社群的,然而這5年發展的依然很好

狼叔寫過一篇文章 請別拿“死”人做文章Node.js之父Ryan Dahl在2012年就離開社群的,我們必須要承認他作為創始人的偉大創舉,但不能標籤化,ryan不代表node,從他離開社群後,對於社群而言,他就“死”在曾經的豐功偉績上,未來與他無關!

Node.js之父在2012年就離開社群的,然而這5年發展的依然很好,並無影響。這篇文章本來沒什麼問題,但有些人借位營銷就噁心了。

狼叔說:Node.js不是最好,也不是最差,是價效比比較高的,可惜node做後端一直不溫不火,java,php利益相關,只有新專案用,微服務架構下,會更好一些。很多人node是用錯的,不是用node就什麼都用,分清場景。不誤解,不傳謠,合適自己的才是最好的。但是總有些人想拿這事兒做文章過度解讀

抽象程度不夠高,對於做業務的人來說這很痛苦。使用者中小白太多,人員素質參差不齊,包的數量多,質量卻呵呵。

這完全是沒邏輯的屁話,看起來沒問題,卻經不起推敲。

抽象程度,所有語言都有這個問題,Go就沒有麼?Java、PHP這麼多年小白少麼?說人員素質參差不齊,哪個語言不一樣?所以說,這完全是狗屁邏輯。我比較喜歡Ruby社群,是高手和低手兩級分化最明顯。Node.js從2009年到現在才8年,再成熟能成熟到哪裡呢?不拿一個起點比較都是扯淡。

最後說npm,黑的完全不到點上,目前超過60萬個模組,絕對是社群第一。在眾多包管理器上,我沒見過質量都一樣好的,按照80/20原則,60萬里至少有12萬個模組是不錯的吧,你工作中能用到的會超過三位數麼?

所以說質量好不好要看人怎麼選,而不應該賴到npm上。長點心吧。

用來做指令碼倒是沒啥問題,做商業開發就處處踩坑了。我沒怎麼用 Node做 Web,因為怕 hold 不住。

沒用過,就別瞎逼逼。

國內國外的成功案例,眼瞎看不到麼?我親歷的去哪兒和阿里都在大量使用,我親耳聽到的騰訊大量使用Node,對於李成銀所在的360團隊也是大量使用。

如果說 Node hold 不住,其他語言就能 hold 住?呵呵

如果說 人 hold 不住,那我相信,那是水平問題。

目前 Node Web 框架依然是 koa 和 express 類似的架構,中介軟體沒什麼問題,但是如何組織它們,如何在 high level 層面把控他們卻沒有看到很好的最佳實踐。

沒用Node還嗶嗶框架,不是打臉麼?

我們可以根據框架的特性進行分類

框架名稱特性點評



各種框架都經過大廠小廠實踐,別的語言實現的我敢說Node都有了。還有什麼所謂的更好實踐,從2005年rails橫空出世之後,大部分框架都是借鑑ROR,Node就算沒有走到最前面,至少沒有落後於最佳實踐,否則,請給出,否則,請閉嘴,別瞎逼逼。

大公司也是相繼開發自己基於 koa 的框架。

悖論,去哪兒的基於Express用的槓槓的,無任何問題。Node不缺Web框架,Koa雖好,但遷移各種還需要時間,未來是變化的,Koa能否一統天下還猶未可知。可以肯定的是Koa在非同步流程控制做的改進,命名為Node下一個Web框架是不過分的。

比如micro,比如fastify,非常多好東西。

不過在我一個 Rails 使用者的眼裡,這些框架還是不夠 high level如果效能要求高,我的選擇肯定是 Go 而不是 Node。

用rails的人還考慮效能麼?我不是黑ror的朋友們。rails這樣的神器足夠好,即使ruby以前效能那麼不好,但不影響人家開發很多世界級應用啊。儘管後面有的被替換了,但又怎樣呢?做ror的高手技能都非常全面,ruby和前端和運維都是極其的熟練。當然Node和go也有這樣的人,但普遍偏弱,這不是人的問題,而是產生的時間較短,沒背景的人就不能出現全棧牛逼的能力。

如果真追求效能,我建議用rust寫,如果還想牛逼,用c寫,最好順便把作業系統也寫了。

人還是要有自知之明,做應用軟體和系統軟體是不一樣的思維。傻逼才只看效能呢。

Node 除了親 JS 好像對我沒啥吸引力。但是如果公司非要用我也不反對,大不了自己摸爬滾打找出最佳實踐即可。

沒用過,請繞過。我特別尊重蘇千和樸靈,推動Node在阿里落地,比如蘇千做的cnpm真是功德無量,比如Egg,能夠統一全公司的資源去推動框架落地,可預見大公司阻力。樸靈的alinode解決了效能調優的問題,內部使用的經驗沉澱,對外提供付費服務。

這是人物。做的比說的多,低調如此,也不去惹是非。用德藝雙馨形容不為過。

Node 還有一個好處是 UI 做的好,比如 pm2,比如偵錯程式,畢竟是前端,但這些都不是殺手級的賣點呀。我不是挑語言的開發者。

Node 和 UI有關係麼?呵呵呵

Node 對我屬於一個可用可不用位置。不過相信牛逼的你肯定可以玩轉 Node。加油吧少年。我對Node新人的建議是玩一玩可以,

沒用過,就別瞎逼逼。

js已經橫跨3端,pc/h5,移動端(hybrid和元件化),pc client(nw.js和electron,atom和vscode體驗還不錯)

Node補足了js服務端的補足,比如io,比如過於依賴瀏覽器。

  • 1)初衷,server端,不想成了前端開發的基礎設施

  • 2)命令列輔助工具,甚至可以是運維

  • 3)移動端:cordova,pc端:nw.js和electron

  • 4)元件化,構建,代理

  • 5)架構,前後端分離、api proxy

  • 6)效能優化、反爬蟲與爬蟲

  • 7) 全棧最便捷之路

不過要早點轉 Go,因為 Node 並沒有什麼突出的優勢。

Go在伺服器端,併發模型上確實很好。做後端是極好的選型。但在前後端分離或者單體應用裡,真的合適麼?

前面說了,效能並不是繼續選型的唯一因素,不然ror那些牛人早轉了。我一直的看法是前端離不開node,api層node有優勢,io密集和指令碼動態,做api組裝聚合類的非常合適。對於後端服務,Node也是可以的,不過這時的node和go是一樣的,尤其是上了微服務架構,服務是獨立的,和語言無關,按照其特性選就好了,何必扯一些沒用的。

最後說一下Node全棧

每次演講我會都問大家是不是前端,回答“是”的人非常多,我會開玩笑的恭喜大家:“現在的前端就是錢端”,確實,現在前端發展異常的快,而且沒有趨向於類比java裡ssh框架的那種穩定,所以未來很長一段時間,還會增長,持續混亂,這對前端來說是把雙刃劍,一方面有很強的壓迫感,不學習就跟不上時代,另一方它也是機遇,能夠帶給更多機會,包括money。

大家都疑惑的一個問題是如何在這樣鉅變的時代能夠通過學習來應變,我可以很負責的告訴大家,沒有捷徑,但通過掌握 Node.js 能夠讓你降低這個學習曲線而已,畢竟Node.js是大前端的基礎設施。大家可以看一下,前端的開發過程,模組化,構建,輔助工具,調優,架構調整,可以說Node.js是無處不在的。

其實,輔助大前端開發只是Node.js的一個非常無心插柳的衍生功能,通過掌握Node.js能夠讓你能做的更多、獲得的更多,甚至可以說有更多自我實現的快樂,在後面的章節會詳細講解Node.js的具體應用場景好處,這也是本書名字裡“更了不起的”要去闡述的內容。

綜上種種,就是我一直提倡以 JavaScript 語言為中心的 Node全棧 概念的緣由,JavaScript 覆蓋所有前端,Node.js 擅長做 I/O 密集型的後端,外加輔助開發的各種基礎設施,無疑是工作、學習和成為快速掌握全棧技術最好的途徑。你會的越多,你能做的就更多,你的人生也將會有不一樣的精彩篇章。


少抱怨,多思考,未來更美好


全文完

歡迎關注Cnode官方公眾號【node全棧】

如果想參與評論,請點選閱讀原文連結,進入國內最專業的cnode論壇

你身邊如果有朋友對Node.js或全棧感興趣,可以轉發給他們看看哦,O(∩_∩)O先謝過

相關文章