Node.js入門-通俗易懂版

1、初始Node.js

1.Node.js是什麼?

通俗的解釋:

  Node.js = Javascript + 本地/服務器文件讀寫刪除等功能。html

  簡單的說 Node.js 就是運行在服務端的 JavaScript。執行在瀏覽器上的時候成爲JavaScript,執行在服務器上的時候叫作Node.js。固然寫法是有區別的。node

  JavaScript受限於瀏覽器沙盒模式,只能運行在瀏覽器中。而Node.js拓展了JavaScript的功能,使其能夠運行在本地/服務器。jquery

  它不是後端語言,可是能夠用來寫後端程序。git

特性: 

  Node.js 是一個基於Chrome JavaScript 運行時創建的一個平臺。express

  Node.js是一個事件驅動I/O服務端JavaScript環境,基於Google的V8引擎,V8引擎執行Javascript的速度很是快,性能很是好。npm

 

2.Node.js的安裝

在官方網站下載長效支持版本(LTS)便可。可使用 node -v 查看安裝的node版本。json

 

3.node.js須要藉助命令行界面來運行

  1)node的控制檯模式

  在終端中輸入 node能夠進入node的控制檯模式,進入以後命令行(終端)的符號會由$變爲>,表明已經進入node的控制檯模式。一個小例子:gulp

  2)引入外部代碼文件

  ① 若是要在控制檯執行某個外部代碼文件,好比執行index.js,咱們能夠用cd命令進入該目錄以後輸入 node index.js 後端

  ② 若是把其餘的js文件引入到當前的js文件中,代碼以下:瀏覽器

   var x = require ('./index2')  (引入當前目錄下的index2.js到當前文件)

  control + c 是退出當前程序的組合鍵,咱們可使用 control + c 來退出node控制檯模式。

 

4.Node.js REPL(交互式解釋器)

REPL 命令

  • ctrl + c - 退出當前終端。

  • ctrl + c 按下兩次 - 退出 Node REPL。

  • ctrl + d - 退出 Node REPL.

  • 向上/向下 鍵 - 查看輸入的歷史命令

  • tab 鍵 - 列出當前命令

  • .help - 列出使用命令

  • .break - 退出多行表達式

  • .clear - 退出多行表達式

  • .save filename - 保存當前的 Node REPL 會話到指定文件

  • .load filename - 載入當前 Node REPL 會話的文件內容。

 

2、NPM

1.什麼是NPM?  

NPM的全稱是Node Package Manager,是隨同NodeJS一塊兒安裝的包管理和分發工具。

它能夠很方便地讓JavaScript開發者下載、安裝、上傳以及管理已經安裝的包。

 

2.npm的使用

2.1 npm的安裝

安裝node.js以後,系統會自動安裝npm。使用 npm -v 命令能夠查看安裝的版本號。

 

2.2 初始化——新建工程項目

  命令: npm init 

  先用 cd 命令進入要操做的文件夾,而後使用 npm init 命令指定讓npm控制當前目錄。輸入並回車以後會出現以下提示:

  在這裏輸入項目的名稱、版本號、項目描述等信息,回車則填寫括號裏面的默認內容。

  初始化以後,文件夾中會有一個初始化配置文件package.json。

  Package.json 屬性說明

  • name - 包名。

  • version - 包的版本號。

  • description - 包的描述。

  • homepage - 包的官網 url 。

  • author - 包的做者姓名。

  • contributors - 包的其餘貢獻者姓名。

  • dependencies - 依賴包列表。若是依賴包沒有安裝,npm 會自動將依賴包安裝在 node_module 目錄下。

  • repository - 包代碼存放的地方的類型,能夠是 git 或 svn,git 可在 Github 上。

  • main - main 字段是一個模塊ID,它是一個指向你程序的主要項目。就是說,若是你包的名字叫 express,而後用戶安裝它,而後require("express")。

  • keywords - 關鍵字

 

2.3 全局安裝與本地安裝

  使用npm咱們能夠很方便的安裝各類包。

  好比安裝jQuery,能夠這樣寫

     npm install jquery --save 

  若是想制定要安裝的版本的jQuery,能夠寫:

     npm install jquery@2 --save npm 會自動安裝jQuery2的最高版本。

  --save是安裝到當前文件夾的意思,若是想安裝到全局(全局依賴),可使用 -g

    好比咱們要全局安裝gulp,可使用  npm install gulp -g ,這時的安裝路徑爲/usr/local/bin/(以MAC OS爲例)

  使用-dev能夠在配置文件中標註項目依賴了哪些包,寫法  --save-dev (開發階段通常使用這個)

    經過-Dev生成的配置文件裏面註明了須要安裝的包的清單,在多人共同開發時,經過這個配置文件,能夠經過命令行(終端)快速安裝本身電腦上面沒有的包。經過命令行(終端)進入根目錄,使用  npm install  命令能夠根據dependencies配置安裝全部的依賴包。

 

2.4 使用淘寶 NPM 鏡像  

  你們都知道國內直接使用 npm 的官方鏡像是很是慢的,這裏推薦使用淘寶 NPM 鏡像。

  淘寶 NPM 鏡像是一個完整 npmjs.org 鏡像,你能夠用此代替官方版本(只讀),同步頻率目前爲 10分鐘一次以保證儘可能與官方服務同步。

  在命令行(終端)輸入以下代碼:

npm install -g cnpm --registry=https://registry.npm.taobao.org

  而後就能夠經過 cnpm install *** -save 的命令來安裝各類包了。

 

2.5 npm經常使用命令

  http://www.cnblogs.com/PeunZhang/p/5553574.html#npm-update

 

3、commonJS模塊

一、什麼是模塊:

    模塊是node.js應用程序的基本組成部分。

    每個js文件都是一個模塊。

    爲了讓Node.js文件相互調用而提供的系統稱爲模塊系統。

    全部默認自帶的模塊直接用模塊名就能夠引用。

二、建立一個應用(認識http模塊)

  2.1 Node.js 應用由哪幾部分組成?

    1.  引入 required 模塊:咱們可使用 require 指令來載入 Node.js 模塊。

    2.  建立服務器:服務器能夠監聽客戶端的請求,相似於 Apache 、Nginx 等 HTTP 服務器。

    3.  接收請求與響應請求 服務器很容易建立,客戶端可使用瀏覽器或終端發送 HTTP 請求,服務器接收請求後返回響應數據。

  2.2 建立Node.js應用的步驟

    步驟1、引入 required 模塊

      咱們使用 require 指令來載入 http 模塊,並將實例化的 HTTP 賦值給變量 http,實例以下:

       var http = require("http"); 

    步驟2、建立服務器

      接下來咱們使用 http.createServer() 方法建立服務器,並使用 listen 方法綁定 8888 端口。

      函數經過 request, response 參數來接收和響應數據。

      實例以下,在你項目的根目錄下建立一個叫 server.js 的文件,並寫入如下代碼:

var http = require('http');

var server = http.createServer(function (request, response) {
   //這裏的參數使用了回調函數,回調函數的執行是不按順序的,不須要等待文件讀取完,在讀取文件的同時執行接下來的代碼,大大提升了程序的性能
// 發送 HTTP 頭部 // HTTP 狀態值: 200 : OK // 內容類型: text/plain response.writeHead(200, {'Content-Type': 'text/plain'}); // 發送響應數據 "Hello World" response.end('Hello World\n'); })
server.listen(
8888); // 終端打印以下信息 console.log('Server running at http://127.0.0.1:8888/');

      (關於Node.js的回調函數更詳細的介紹能夠看這篇 http://www.runoob.com/nodejs/nodejs-callback.html )

      以上代碼咱們完成了一個能夠工做的 HTTP 服務器。

      使用 node 命令執行以上的代碼:

node server.js
Server running at http://127.0.0.1:8888/

      接下來,打開瀏覽器訪問 http://127.0.0.1:8888/,你會看到一個寫着 "Hello World"的網頁。

 

    小結:分析Node.js 的 HTTP 服務器:

    •  第一行請求(require)Node.js 自帶的 http 模塊,而且把它賦值給 http 變量。
    •  接下來咱們調用 http 模塊提供的函數: createServer 。這個函數會返回 一個對象,這個對象有一個叫作 listen 的方法,這個方法有一個數值參數, 指定這個 HTTP 服務器監聽的端口號。

3. require方法

原生模塊與文件模塊

  原生模塊在nodejs安裝時便存在,經過require(‘模塊名’)引用。

  文件模塊通常爲用戶創建—require(‘完整模塊路徑’)引用。引用了一個外部js文件,即引用了一個模塊,也就是建立了一個模塊。

4. exports對象

exports 是模塊公開的接口。

require 用於從外部獲取一個模塊的接口,即所獲取模塊的 exports 對象。

在一個 js 中經過 require('./xxx') 加載這個模塊,而後就能夠直接訪 問 xxx.js 中 exports 對象的成員函數了。

 

有時候咱們只是想把一個對象封裝到模塊中,格式以下:

module.exports = function() {
  // ...
}

例如:

//hello.js 
function Hello() { 
    var name; 
    this.setName = function(thyName) { 
        name = thyName; 
    }; 
    this.sayHello = function() { 
        console.log('Hello ' + name); 
    }; 
}; 
module.exports = Hello;

這樣就能夠直接得到這個對象了:

//main.js 
var Hello = require('./hello'); 
hello = new Hello(); 
hello.setName('BYVoid'); 
hello.sayHello();

 

模塊接口的惟一變化是使用 module.exports = Hello 代替了exports.world = function(){}。

在外部引用該模塊時,其接口對象就是要輸出的 Hello 對象自己,而不是原先的 exports。

 

module.exports與exports的不一樣

  •  module.exports可讓模塊成爲特別對象類型
  •  exports可讓模塊成爲傳統的模塊實例
  •  exports是module.exports的輔助方法
  •  module.exports.name 至關於 exports.name

 

5. Node.js中也有全局對象的概念

  JavaScript 中有一個特殊的對象,稱爲全局對象(Global Object),它及其全部屬性均可以在程序的任何地方訪問,即全局變量。

  在瀏覽器 JavaScript 中,一般 window 是全局對象,window在瀏覽器環境中可用(在瀏覽器的控制檯中可用),node.js中沒有window,因此dom對象在node.js中無效。

  而 Node.js 中的全局對象是 global,全部全局變量(除了 global 自己之外)都是 global 對象的屬性。在 Node.js 咱們能夠直接訪問到 global 的屬性,而不須要在應用中包含它。

  5.1 全局對象與全局變量

  global 最根本的做用是做爲全局變量的宿主。

  當你定義一個全局變量時,這個變量同時也會成爲全局對象的屬性。

  注意: 永遠使用 var 定義變量以免引入全局變量,由於全局變量會污染命名空間,提升代碼的耦合風險。

  5.2 process

  process 是一個全局變量,即 global 對象的屬性。

  process屬性

    Process 提供了不少有用的屬性,便於咱們更好的控制系統的交互。

    在node控制檯模式輸入process並回車,能夠看到process的全部屬性。

相關文章
相關標籤/搜索