關於node.js的一些看法,吾以爲node.js沒有想象那麼重要。

有人的觀點是:“不懂就別說話。”我也不知道如何迴應,難道我說出來的東西只能是我精通的嗎?那我以後連html都不敢提了。

我並不認爲我比其他人更聰明,只是客觀冷靜的分析一波(我使用過node.js進行一些常規用得到操作)。

首先 :
1、Node.js是一個基於Chrome V8引擎的javascipt的運行環境。
2、Node.js使用了一個事件驅動、非阻塞I/O的模型,
3、Node.js輕量又高效,能夠使我們在本地運行javascript

NodeJS能做什麼?
1、提供數據給瀏覽器展示
2、保存用戶提交過來的數據
3、數據統計與分析

服務器Node.js和瀏覽器js的區別是什麼?
1.node.js是平臺,JavaScript是編程語言;
2.javascript是客戶端編程語言,需要瀏覽器的javascript解釋器進行解釋執行;
3.node.js是一個基於Chrome JavaScript運行時建立的平臺,它是對Google V8引擎進行了封裝的運行環境;
4.node.js就是把瀏覽器的解釋器封裝起來作爲服務器運行平臺,用類似javascript的結構語法進行編程,在node.js上運行。

先說說好的一方面 : 以前,Javascript只能在前端做做通訊和特效,現在後端也可以用Javascript來做了,好不好?對於前端開發人員來說,當然好,挖掘了JS的技術深度。

嗯,Node.js就能滿足前端開發者的這個願望。

Node.js優點:
1、採用事件驅動、異步編程,爲網絡服務而設計。其實Javascript的匿名函數和閉包特性非常適合事件驅動、異步編程。而且JavaScript也簡單易學,很多前端設計人員可以很快上手做後端設計。
2、Node.js非阻塞模式的IO處理給Node.js帶來在相對低系統資源耗用下的高性能與出衆的負載能力,非常適合用作依賴其它IO資源的中間層服務。
3、Node.js輕量高效,可以認爲是數據密集型分佈式部署環境下的實時應用系統的完美解決方案。Node非常適合如下情況:在響應客戶端之前,您預計可能有很高的流量,但所需的服務器端邏輯和處理不一定很多。

但是

Node.js缺點:
1、可靠性低
2、單進程,單線程,只支持單核CPU,不能充分的利用多核CPU服務器。一旦這個進程崩掉,那麼整個web服務就崩掉了。

整個前端開發的生態都是在node的基礎上搭建起來的,所以沒有node,前端開發會變得寸步難行,但是在後臺,node只是冰山一角,希望掌握node就能變成全棧工程師,學了JavaScript就能一統天下,這樣的想法我也有過,但是現在想想確實很幼稚

前端工程師用得到的與node.js有關的無非是:
1、 npm , 這個操作及其簡單,不需要學node.js,只是一些命令行操作
2、 項目打包操作,配置webpack,通常情況有腳手架搭建的項目已經有現成的命令行去幫助打包了,也不需要特地去學node/js,就算不是腳手架搭建的項目,網上也有大把的webpack打包教程.

當然,如果你非說學前端開發還要學會怎麼自己開發一個IDE,那我沒話說。
吹空調的人可不需要學會製造空調。如果真有多餘的精力,不如花在用得到的地方。
絕大部分的前端工程師開發的都是常規的商業項目(比如PC後臺,商城,官網,移動端頁面.混合app,小程序等),不需要涉及底層。退一步說,就算有這個需求,面向百度編程是可以解決的,再不行,一條路行不通,還不會繞着走嗎?換個方法試試?
如果你有想法往底層研發去發展,那麼請當我沒說。

老夫無時不發現大部分程序員的瓶頸和天花板。即使他們能熟練應用一些框架、工具來實現一些常見的功能,卻往往難以領會框架的思想,同時難以跳出這個領域解決其他問題。從他們身上常常看到的問題是,代碼邏輯混亂,難以閱讀理解複用、瞎用組件到非常極端的情況,不清楚所調用的組件背後的邏輯導致錯用。對於邊界條件沒有清晰的概念,難以有一個好的頂層設計的思維。等等其中相當多的程序員爲了提升自己,都會選擇補習算法數據結構,計算機組成原理等真正的理論知識。

nodejs只是js生態中的一環,完全沒有C/C++/Java來的重要。js也是借了Web的東風,才從一個殘廢的腳本語言逐漸完善到現在的狀態,而且由於發展過快,也導致了語言中很多設計要麼難看要麼難理解要麼難用。無論是上手難度,還是性能、擴展性、對於大型系統的適應性,nodejs及其框架都沒有顯著的優勢。像Java等OOP語言都有完整的面相對象的設計理念和方法論,nodejs又有什麼呢?靠無數的npm小包包嗎?nodejs只是一個工具,當然我們也要根據場景尋找趁手的工具。對於學校教育而言,nodejs是否是一個足夠好的工具能幫助你去學習到背後真正的知識?而當你學會了真正的理論知識、方法論,再去學習nodejs,會更容易上手,也能更好的使用這種工具。

nodejs引擎的實現需要掌握C++

異步機制需要掌握設計模式

網絡請求需要掌握網絡底層知識,更進一步需要了解網絡模型和操作系統提供的實現

Node.js並不是入門程序員必備技能,甚至不是前端必備技能(如果不開發服務端程序,基本就只用npm就夠了).JavaScript是可以做很多事情(服務端、桌面端、手機端),但除了開發Web APP,在其他領域並沒有明顯優勢,甚至有些方向劣勢還很明顯。

畢竟 nodejs 作者都說了,nodejs 有很多設計失誤

JavaScript本來是不夠穩定的,服務器端本來沒有它的一席之地,但是Google的V8把這個解釋器做到了極致,而且可以穩定地跨平臺,node.js纔有可能把它部署到服務器端。

喜歡的事物可以有缺點,不喜歡的事物也可以有優點,優缺點是客觀存在的,不以人的主觀意志爲轉移。

node.js雖然也有自己的優點,但是在老牌且成熟的後端語言面前,還是太嫩了。node支撐起現在的前端開發,但在後臺,node卻是可有可無的,如果閣下感覺在後臺某些地方node是不可替代的,可以指點一下我這個孤落寡聞的菜雞前端程序員。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章