Nodejs基本概念及Nodejs、npm安裝測試

前景提要javascript

  JavaScript是解釋性語言前端

  JavaScript 源代碼放在Html頭裏 java

目前使用建議<script></script>node

  從前→<script language=」javascript」></script>linux

       →<script type=」text/javascript」></script>express

  目前→<script></script>npm

再來理解兩個概念

Window 對象

  Window 對象表示瀏覽器中打開的窗口。編程

    若是文檔包含框架(frame 或 iframe 標籤),瀏覽器會爲 HTML 文檔建立一個 window 對象,併爲每一個框架建立一個額外的 window 對象。windows

Document 對象

  每一個載入瀏覽器的 HTML 文檔都會成爲 Document 對象。後端

  Document 對象使咱們能夠從腳本中對 HTML 頁面中的全部元素進行訪問。

  提示:Document 對象是 Window 對象的一部分,可經過 window.document 屬性對其進行訪問。

  其餘更多請訪問w3c:http://www.w3school.com.cn/js/index.asp

 

1、概念引用(均摘自其餘學習資料,雜交,歡迎轉載)

1.1 Node.js不是JS應用、而是JS運行平臺

  Node.js 是一個基於Chrome JavaScript 運行時創建的一個平臺, 用來方便地搭建快速的, 易於擴展的網絡應用· Node.js 藉助事件驅動, 非阻塞 I/O 模型變得輕量和高效, 很是適合 運行在分佈式設備 的 數據密集型 的實時應用

  Node.js採用C++語言編寫而成,是一個Javascript的運行環境。爲何採用C++語言呢?據Node.js創始人Ryan Dahl回憶,他最初但願採用Ruby來寫Node.js,可是後來發現Ruby虛擬機的性能不能知足他的要求,後來他嘗試採用V8引擎,因此選擇了C++語言。

   Node.js採用了Google Chrome瀏覽器的V8引擎,性能很好,同時還提供了不少系統級的API,如文件操做、網絡編程等。瀏覽器端的Javascript代碼在運行時會受到各類安全性的限制,對客戶系統的操做有限。相比之下,Node.js則是一個全面的後臺運行時,爲Javascript提供了其餘語言可以實現的許多功能。

   V8引擎執行Javascript的速度很是快,性能很是好。Node對一些特殊用例進行了優化,提供了替代的API,使得V8在非瀏覽器環境下運行得更好

  更多簡介請自行:google

1.2 Node.js採用事件驅動、異步編程,爲網絡服務而設計

  Node.js的設計思想中以事件驅動爲核心,它提供的絕大多數API都是基於事件的、異步的風格。以Net模塊爲例,其中的net.Socket對象就有如下事件:connect、data、end、timeout、drain、error、close等,使用Node.js的開發人員須要根據本身的業務邏輯註冊相應的回調函數。這些回調函數都是異步執行的,這意味着雖然在代碼結構中,這些函數看似是依次註冊的,可是它們並不依賴於自身出現的順序,而是等待相應的事件觸發。事件驅動、異步編程的設計,重要的優點在於,充分利用了系統資源,執行代碼無須阻塞等待某種操做完成,有限的資源能夠用於其餘的任務。此類設計很是適合於後端的網絡服務編程,Node.js的目標也在於此。在服務器開發中,併發的請求處理是個大問題,阻塞式的函數會致使資源浪費和時間延遲。經過事件註冊、異步函數,開發人員能夠提升資源的利用率,性能也會改善。

  從Node.js提供的支持模塊中,咱們能夠看到包括文件操做在內的許多函數都是異步執行的,這和傳統語言存在區別,並且爲了方便服務器開發,Node.js的網絡模塊特別多,包括HTTP、DNS、NET、UDP、HTTPS、TLS等,開發人員能夠在此基礎上快速構建Web服務器。以簡單的helloworld.js爲例:

var http = require('http');

http.createServer(function (req, res) {

    res.writeHead(200, {'Content-Type': 'text/plain'});

    res.end('Hello World\n');

}).listen(80, "127.0.0.1");

 

上面的代碼搭建了一個簡單的http服務器,在本地監聽80端口,對於任意的http請求,服務器都返回一個頭部狀態碼爲200、Content-Type'值爲text/plain'的」Hello World「文字響應。從這個小例子中,咱們能夠看出幾點:

  • Node.js的網絡編程比較便利,提供的模塊(在這裏是http)開放了容易上手的API接口,短短几行代碼就能夠構建服務器。
  • 體現了事件驅動、異步編程,在createServer函數的參數中指定了一個回調函數(採用Javascript的匿名函數實現),當有http請求發送過來時,Node.js就會調用該回調函數來處理請求並響應。

1.3 Node.js的特色

事件驅動、異步編程.(1.2 已說明)

RESTful API

單線程

  Node.js能夠在不新增額外線程的狀況下,依然能夠對任務進行並行處理 —— Node.js是單線程的。它經過事件輪詢(event loop)來實現並行操做,對此,咱們應該要充分利用這一點 —— 儘量的避免阻塞操做,取而代之,多使用非阻塞操做。

非阻塞IO

Node.js的性能不錯

  按照創始人Ryan Dahl的說法,性能是Node.js考慮的重要因素,選擇C++和V8而不是Ruby或者其餘的虛擬機也是基於性能的目的。Node.js在設計上也是比較大膽,它以單進程、單線程模式運行(這和Javascript的運行方式一致),事件驅動機制是Node.js經過內部單線程高效率地維護事件循環隊列來實現的,沒有多線程的資源佔用和上下文切換,這意味着面對大規模的http請求,Node.js憑藉事件驅動搞定一切,習慣了傳統語言的網絡服務開發人員可能對多線程併發和協做很是熟悉,可是面對Node.js,咱們須要接受和理解它的特色。

  還有很多實踐者對Node.js作了性能分析,總的來講,它的性能讓人信服,也是受歡迎的重要緣由。既然Node.js採用單進程、單線程模式,那麼在現在多核硬件流行的環境中,單核性能出色的Node.js如何利用多核CPU呢?創始人Ryan Dahl建議,運行多個Node.js進程,利用某些通訊機制來協調各項任務。目前,已經有很多第三方的Node.js多進程支持模塊發佈,

編程語言是Javascript

  Node.js的另外一個特色是它支持的編程語言是Javascript關於動態語言和靜態語言的優缺點比較(本身google去),說幾個我的發現說辭比較好的:

  1. Javascript做爲前端工程師的主力語言,後臺人員也基本有所瞭解。我的認爲就是太通用,看看如今的移動開發,wp八、蘋果、安卓等均有使用js開發。Wp8建立的項目裏面就有,剛剛在VS2013中發現,其餘平臺可使用,sencha touch、JQuery mobile等。Unity 3D腳本語言就有JS。雖然有所差別,可是根本是JS。
  2. Javascript的匿名函數和閉包特性很是適合事件驅動、異步編程,從helloworld例子中咱們能夠看到回調函數採用了匿名函數的形式來實現,很方便。閉包的做用則更大,看下面的代碼示例:
     1 var hostRequest = http.request(requestOptions,function(response) {
     2     var responseHTML ='';
     3     response.on('data', function (chunk) {
     4         responseHTML = responseHTML + chunk;
     5     });
     6 
     7     response.on('end',function(){
     8         console.log(responseHTML);
     9         // do something useful
    10    });
    11 });
    View Code

      在上面的代碼中,咱們須要在end事件中處理responseHTML變量,因爲Javascript的閉包特性,咱們能夠在兩個回調函數以外定義responseHTML變量,而後在data事件對應的回調函數中不斷修改其值,並最終在end事件中訪問處理。

  3.  Javascript在動態語言中性能較好。

 

2、Node.js&NPM的安裝與配置

  Node.js 是一個基於Chrome JavaScript 運行時創建的一個平臺, 用來方便地搭建快速的, 易於擴展的網絡應用· Node.js 藉助事件驅動, 非阻塞 I/O 模型變得輕量和高效, 很是適合 運行在分佈式設備 的 數據密集型 的實時應用

  NPM,全稱Node Package Manager。NPM的全稱是,是一個NodeJS包管理和分發工具,現已成爲了官方的發佈Node模塊(包)的標準內置。

2.1 Windows平臺下的Node.js安裝

Windows下的NodeJS安裝是比較方便的(v0.6.0版本以後,支持windows native)

  1. 登錄官網(http://nodejs.org/),點擊「INSTALL」按鈕,而後「NEXT」就能夠了。

    (Windows的安裝msi文件在過程當中會直接添加path的用戶變量,變量值是C:\Users\Administrator\AppData\Roaming\npm)

    固然也能夠選擇:download:https://nodejs.org/en/;選擇本身系統及版本

  2.  Windows下查看校驗安裝是否成功,cmd(命令行)下:

    node –v

    接下來你會看到版本號:v0.10.28

2.2 *unx下安裝(主要linux)

  待更新

2.2 npm 安裝

  npm是nodejs插件的管理工具。

  因爲新版的NodeJS已經集成了npm,因此以前npm也一併安裝好了,不再用像之前那麼苦逼了。

  Cmd下:

    npm –v

    接下來你會看到版本號:1.4.9

 

  Npm基本命令說明(更多:https://www.npmjs.org/doc/) 
    npm help:查詢可用的命令
    npm help command :如:npm help list ,查詢具體指令的用法。
    npm list: 列出已經安裝的插件
    npm show express:列出express插件信息
    npm install(npm install -d):安裝插件
    npm update:升級插件
    npm update express:升級指定插件
    npm uninstall express:卸載插件

  這樣,NodeJS搭建已經完成了,能夠直接在cmd命令行下:

    →node (進入node開發模式下【輸入以後有一個>】),

    →console.log('hello world')         //能夠看到有Hello world輸出。

相關文章
相關標籤/搜索