本文目錄一覽:
node.js和php哪個簡單
單論做網站,應該是php簡單。。但node.js也不算太難,而且能做到的事情,比php多很多。
php是個過時的技術,和ASP是同代的產物(asp.net的前身)那時候名叫C- -,後來改名才叫PHP的。就和windowsXP一樣。技術上沒有任何優勢。但市場還在,儘管早晚是要被淘汰的,但由於學習門檻低,又確實有市場需求。所以淘汰速度並不快
JAVASCRIPT是個90後,按說也算是比較老了,但NODE卻是門新興技術。。由於非阻塞非同步io實現,導致node的io效率非常高。。。實際測試,node的效率,大約比php高出70-100倍左右。。而且node除了做網站之外,還可以搞嵌入式,樹莓派,甚至網遊伺服器。。
簡單概括,如果只是做網站,php簡單些。。。但個人還是推薦node。。一個是夕陽技術,一個是朝陽技術。。。其實很容易判斷
不過把範圍再擴大一些的話,我覺得兩個的學習價值都不高。因為都是動態語言,在編寫中型以上項目時,都會不可避免的受限於動態語言天生的劣根性,導致各種問題。學習性價比最高的應該是.NET CORE。學習比node難不了太多,而性能卻是頂級的。或者Java,崗位多需求大,屬於最四平八穩的選擇。如果要長期做程序,轉向靜態語言是遲早的事兒。無論Node,還是php,都只是過渡之下的產物,而不是最終選擇。
為什麼不直接使用js與後台交互,而使用jsp等技術?
前端與後台是兩個不同的運行環境,所要面對和處理的問題是完全不同的,比如前端腳本主要是用來處理頁面與瀏覽者之間的交互的,而後台腳本則是根據前端的要求讀取資料庫並返回數據給前端,如果一種程序語言既要兼顧前端又要兼顧後台,那麼它必然會很臃腫,會影響運行效率。nodejs雖然使用的語法是JavaScript,但它本質上與前端的JavaScript還是不同的,它其實跟asp、jsp、php一樣是運行在伺服器的(瀏覽器查看源代碼是看不到nodejs代碼的),只不過語法是js而已。
退一萬步講,即使JavaScript能實現前後端統一,在實際應用中它仍然要分為涇渭分明的前端和後台兩部分,伺服器會首先執行後台部分的代碼,然後把前端代碼(包含html+css+前端js)發送給客戶端瀏覽器,瀏覽器在渲染頁面效果的同時解析執行前端js。這樣的話,前後端都用js與前後端用不同的語言或系統又有什麼本質區別呢?更何況實際開發中前端和後台是由不同的人(或團隊)來進行的,這種情況下又怎麼能強求兩者的一致呢?
再一個就是安全問題,如果前端js可以直接操作後台,那麼很多後台的秘密(不單單是密碼)就會直接暴露在全世界所有人的眼皮下,這是一件很恐怖的事,堪比世界末日!
Nodejs是什麼,有什麼用
Nodejs 是一門語言 運行在伺服器端 作用 類似於 jsp asp php 等 用於響應客戶端(前台)的網路請求.
特點是 ,1 語言風格類似於 JavaScript , 使專精於前台的開發人員能夠很快上手開發後台;
2 : 完全非同步的I/O模型 , 就是說所有的請求就是非同步執行 完全沒有阻塞 ,極大提高web服務的並發性.對於I/O密集型應用來說,會有明顯的性能提升.
node.js是什麼
Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。 Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型。
Node 是一個讓 JavaScript 運行在服務端的開發平台,它讓 JavaScript 成為與PHP、Python、Perl、Ruby 等服務端語言平起平坐的腳本語言。發佈於2009年5月,由Ryan Dahl開發,實質是對Chrome V8引擎進行了封裝。
Node對一些特殊用例進行優化,提供替代的API,使得V8在非瀏覽器環境下運行得更好。V8引擎執行Javascript的速度非常快,性能非常好。Node是一個基於Chrome JavaScript運行時建立的平台, 用於方便地搭建響應速度快、易於擴展的網路應用。Node 使用事件驅動, 非阻塞I/O 模型而得以輕量和高效,非常適合在分散式設備上運行數據密集型的實時應用。
擴展資料:
Node採用一系列「非阻塞」庫來支持事件循環的方式。本質上就是為文件系統、資料庫之類的資源提供介面。向文件系統發送一個請求時,無需等待硬碟(定址並檢索文件),硬碟準備好的時候非阻塞介面會通知Node。
該模型以可擴展的方式簡化了對慢資源的訪問, 直觀,易懂。尤其是對於熟悉onmouseover、onclick等DOM事件的用戶,更有一種似曾相識的感覺。
nodejs的優勢
NodeJs的優勢:
現在的很多的伺服器端的語言(PHP,JAVA,ASP.net),有什麼問題呢,現在的伺服器端的語言在用戶訪問伺服器時,為每個用戶鏈接創建了一個線程,但每個線程大約要耗費2M的內存,如果一個8G內存的伺服器,也就能鏈接4000個左右的用戶,如果用戶的鏈接數較大,就必須增加伺服器的數量,而且現在用戶的鏈接方式有很多(如app,網頁同時訪問),這就又涉及到伺服器共享的問題,所以伺服器怎麼支持最大的同時鏈接用戶量就成了一個問題;
NodeJS修改了客戶端到伺服器端的鏈接方法,解決了這個問題,他不在為每個客戶端創建一個新的線程,而是為每個客戶端鏈接出發一個NodeJs內部進行處理的事件,所以NodeJS具備同時處理多達幾萬個用戶的客戶端鏈接的能力;
NodeJS適合開發的應用程序:
當應用程序需要處理大量並發的輸入/輸出,而在向客戶端發出響應之前,應用程序內部並不需要進行非常複雜的處理的時候,我們應該考慮使用NodeJs來進行應用程序的開發,例如:
1、聊天伺服器:如果聊天的人很多,用戶的與伺服器之間的並發鏈接量很大,但是伺服器端的數據處理並不複雜;
2、綜合類服務網站和電子商務網站的伺服器:在這類網站中的伺服器端,往往可能每秒存內可以接受多達上千條的數據並且需要將這些數據寫入資料庫中,NodeJs可以通過其隊列機制將這些數據迅速寫入緩存區中,然後再通過每一個單獨的處理從緩存區中取出這些數據並將其寫入資料庫中,如果是其他的伺服器(如Apache伺服器或Tomcat伺服器)的話,由於這些伺服器採用的是阻塞型I/O機制,因此每條數據寫入到資料庫中都要等待一段時間(等上一條寫完,才能寫下一條),但是NodeJs使用的是非阻塞的I/O機制,因此可以實現這些數據到資料庫中的寫入,而不必再為每條數據的寫入而等待一段時間;
總結:
一個規模稍微大點的系統都不是一種開發語言可以搞定的,往往是幾種混雜一起,比如c、c++做伺服器端開發,java做業務邏輯,php等做前端展示,此外還需要消息中間件等等。
nodejs可以很快地在伺服器端做原型(原來只有c系和java等能做的事情,性能還很高),而且代碼量相對會少很多;另一點是它的語法優勢,js閉包等。但它不太適合做cpu密集型處理的工作,只能繞著彎去解決,據說這次QCon會有人分享這方面的研究成果,可以關注下。
每種語言都有它適合的領域,沒必要強求一門語言可以解決所有事情,擁有其它語言的特性,只有不斷的tradeoff把系統做出來才是目標。這些都是叢書上看到總結的,還望指正
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241373.html