nodejs【偽】入門教程

来源:http://www.cnblogs.com/shouce/archive/2016/04/29/5445028.html
-Advertisement-
Play Games

聲明: 一、nodejs是什麼 前段時間,偶然得到了一次跟幾個大牛學長學習的機會,他們正在做一個startup的項目,構建網站所使用的就是nodejs;對這個最近牛哄哄的東西,自己也只是略有耳聞,從何下手呢,打開百度,google一下。 首先,nodejs不是一種什麼編程語言,而是一個可以讓java ...


聲明:
  1. 本文適合白的不能再白的小白
  2. 不要被標題誤導,本文不會講nodejs基礎,只是本人學習流程和資料的一個整合
  3. 如果想找一大堆教程自己看,沒有電梯,自己拉到文章最下方吧
  一、nodejs是什麼         前段時間,偶然得到了一次跟幾個大牛學長學習的機會,他們正在做一個startup的項目,構建網站所使用的就是nodejs;對這個最近牛哄哄的東西,自己也只是略有耳聞,從何下手呢,打開百度,google一下。       首先,nodejs不是一種什麼編程語言,而是一個可以讓javascript運行在伺服器端的平臺,至於什麼nodejs由c++編寫,基於google chrome的v8引擎,一概忽略;你需要知道的是,以前你用php/java寫伺服器端的代碼,現在可以使用nodejs完成,而且不需要太多的新知識。      if(足夠熟悉js){           go on……      }else{           window.location('http:www.baidu.com');           and search 'javascript 入門教程'+去吧-_-;      }        其次,使用nodejs開發你可以使用windows/linux/macos,任何一個環境,但是用windows感覺怪怪的,推薦linux(such as ubuntu).至於安裝什麼的,自己解決吧。     接下來你最想知道的可能就是,我現有的工具做開發,挺好的,你有啥麽理由讓我轉到nodejs這來呢? 所以看看nodejs能幹什麼吧。   二、nodejs能幹什麼        Node 公開宣稱的目標是 “旨在提供一種簡單的構建可伸縮網路程式的方法”。(摘)當前的伺服器程式有什麼問題?我們來做個數學題。在 Java™ 和 PHP 這類語言中,每個連接都會生成一個新線程,每個新線程可能需要 2 MB 的配套記憶體。在一個擁有 8 GB RAM 的系統上,理論上最大的併發連接數量是 4,000 個用戶。隨著您的客戶群的增長,如果希望您的 Web 應用程式支持更多用戶,那麼,您必須添加更多伺服器。除這些成本上升外,還有一個潛在技術問題,即用戶可能針對每個請求使用不同的伺服器,因此,任何共用資源都必須在所有伺服器之間共用。鑒於上述所有原因,整個 Web 應用程式架構(包括流量、處理器速度和記憶體速度)中的瓶頸是:伺服器能夠處理的併發連接的最大數量。           Node 非常適合以下情況:在響應客戶端之前,您預計可能有很高的流量,但所需的伺服器端邏輯和處理不一定很多。       總結起來就是:其它伺服器端語言能幹的它幾乎都能勝任,而且這貨能處理高併發,節省伺服器成本。而它又不是諸如apache這種伺服器軟體的一個替代品,它的理想目標是:提供高度可伸縮伺服器。        看到這又暈了是麽?別管了,看看自己創建一個伺服器,處理request、response是什麼感覺吧。    三、怎麼學nodejs   1. 需要哪些基礎       js的基礎是必須的,而且並不是簡單的瞭解就可以,前端的東西也必須掌握把,不然你怎麼構建一個完整的網站應用呢。   2.從哪裡下手          當時學的時候,苦於國內沒有一個很好的教程,也不能說教程不好,可能他們都是站在一個相對較高的視角去講述這個東西,一下就來了一大堆東西在那講,想看視頻學的同學暫時還是不要有這個想法了,基本上沒有適合入門的教程,如果你非要找,英語水平可以的話,51cto上有一個我感覺還不錯:   1>nodejs基礎 2>基礎過關了,進階使用框架        你可能想去嘗試創建一個自己的應用,那就要介紹express了,這也是在開發一個大型項目中必須要用到的,但如果你足夠任性我也沒辦法。express是nodejs的一個框架,就像你用基本java web知識可以構建網站,但使用SSH可以更快、更清晰。就像你學PHP,直接建站沒問題,但是有像YII,tp等等的框架,很多輪子就不需要你重覆造了。         express也是同樣的道理,作者參考了Ruby的Sinatra.rb,完成了一個基於nodejs的實現(此句可忽略),有了基礎就要實踐了,上面的教程可能也或多或少講到express,但是上面就把重點放在nodejs基礎上,下麵才是express:
  • 如果你暫時還不想看官方文檔,可以先看看阮一峰阮大大的《Express框架》    http://javascript.ruanyifeng.com/nodejs/express.html
  • 然後呢,你就可以創建一個博客應用試試了,來吧跟著做(發現這個教程的時候,有種相見恨晚,要的就是你的感腳)url:https://github.com/nswbmw/N-blog/wiki
  • 但是官方文檔是不能不放在這裡地,有問題先看看手冊吧:http://expressjs.com/
3>前端怎麼辦       上面的內容都搞定了,前端難道還是用html麽,呵呵,被你猜對了,還是html,只不過是換種方式寫html,前端的模板引擎目前有EJS、Jade、React等。          ejs就不用學了,就是換了個寬展名,語法完全沒變,伺服器端渲染時候可能傳遞一些數據,你所要學的只是簡單的幾個小語法來處理這些數據和邏輯,參考官方文檔即可:http://www.embeddedjs.com/       jade我個人不喜歡,那種靠縮進、空格、換行來組織代碼的小shit,不習慣,不多講,想學的,自行google吧。       react並不算是一個完整的MVC框架,也就算是V,對C算是有錦上添花的作用吧,組件化的開發思路,這也應該是一個趨勢,“在js中寫html,你感受感受”。       " 在Web開發中,我們總需要將變化的數據實時反應到UI上,這時就需要對DOM進行操作。而複雜或頻繁的DOM操作通常是性能瓶頸產生的原因(如何進行高性能的複雜DOM操作通常是衡量一個前端開發人員技能的重要指標)。React為此引入了虛擬DOM(Virtual DOM)的機制:在瀏覽器端用Javascript實現了一套DOM API。基於React進行開發時所有的DOM構造都是通過虛擬DOM進行,每當數據變化時,React都會重新構建整個DOM樹,然後React將當前整個DOM樹和上一次的DOM樹進行對比,得到DOM結構的區別,然後僅僅將需要變化的部分進行實際的瀏覽器DOM更新。"想想不就應該這樣麽。       學長跟我說,React水很深,如果能成為專家,前途無量。聽得心潮澎湃呢 :) ,不管怎麼說react入門確實有一定的難度,     小結:      看完這些基本上對nodejs的知識有一個完整的體系了,如果基礎不好,也沒瞭解過python這樣的語言,對於nodejs這種所謂基於事件的非同步式編程可能讓你很是痛苦,看人家的代碼,可能發現好多東西不知道,沒關係那些依賴庫都是nodejs社區大家貢獻的,每個拿來用就可以了,並不需要專門研究,也不用感覺好像東西很雜,便心生煩躁,想放棄,這也只是一個過程,糾結過後就撥開雲霧見青天了。   附錄:
  1. 資料一:知乎,怎樣有效地學習 Node.js:http://www.zhihu.com/question/19793473
  2. 資料二:quora: http://www.quora.com/What-are-the-best-resources-to-learn-Node-js

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space. 代碼 ...
  • Echarts(3.x版)官網實例的數據都是靜態的,實際使用中往往會要求從伺服器端取數據進行動態顯示,官網教程里給出的非同步數據載入很粗略,下麵就以官網最簡單的實例為例子,詳細演示如下過程:1.客戶端通過ajax發送請求;2.伺服器端Servlet接收請求;3.生成json數據並返回給客戶端;4.客戶 ...
  • 之前寫過關於微信支付那些坑的文章(《微信JSApi支付~集成到MVC環境後的最後一個坑(網上沒有這種解決方案)》,《微信JSApi支付~坑和如何填坑》),下麵說一下微信官方提供的"掃碼支付",一配置,一運行,生成了一個二維碼,手機一掃,出現了"獲取商戶訂單信息超時或商戶返回httpcode非200" ...
  • 裝飾者模式(Decorator):動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾者模式比生成子類更為靈活。 1.定義介面,可以動態的給對象添加職責。 2.實現這個介面 3.裝飾類 4.具體實現的裝飾類 5.測試用例: 6.運行結果: ...
  • 依賴倒轉原則: A.高層模塊不應該依賴底層模塊,兩個都應該依賴抽象。 B.抽象不應該依賴細節,細節應該依賴抽象。 里氏代換原則: 子類型必須能夠替換掉他們的父類型。只有當子類可以替換掉父類,軟體單位的功能不受到影響時,父類才能真正被覆用,而子類也能過在父類的基礎上增加新的行為。只有子類型的可替換性才 ...
  • 開放-封閉原則,是說軟體實體(類,模塊,函數等)應該可以擴展,但是不可以修改的。換句話說就是,這個原則有兩大特征,對於擴展是開放的(Open for extension),另一個就是對於更改是封閉的(close for modification)。 但是,無論模塊多麼封閉都會存在一些無法對之封閉得到 ...
  • 在前面一篇博客中介紹了“命令模式”(Command Pattern),今天博客的主題是“適配器模式”(Adapter Pattern)。適配器模式用處還是比較多的,如果你對“適配器模式”理解呢,那麼自然而然的就會知道其使用場景。今天這篇博客我們就舉一個生活中的使用適配器模式的示例,然後將該示例使用代 ...
  • 單一職責原則(SRP):就一個類而言,應該僅有一個引起它變化的原因。 如果一個類承擔的職責過多,就等於把這些職責耦合在一起,一個職責的變化可能會小若或則抑制這個類完成其他職責的能力。這種耦合會當值脆弱的設計,當發生變化時,設計會發生意想不到的破壞。 軟體設計真正要做到許多內容,就是發現職責,並把那些 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...