1. 程式人生 > >nodejs學習筆記一——nodejs安裝

nodejs學習筆記一——nodejs安裝

a.nodejs安裝

  nodejs的安裝沒有什麼說的預設安裝即可。安裝包官網下載即可:

  本人用的是window的安裝包node-v4.2.6-x64.msi

  安裝完成後開啟命令列檢視使用node -v命令檢視安裝node版本,有版本號展示說明安裝成功啦

  

  需要建立一個資料夾作為nodejs伺服器資料夾,比如本人在D:\chua下建立了一個chuaNodejs。這個資料夾將作為node服務端的根路徑,也就是一個獨立的工程。

  

  nodejs的基礎使用可以參考菜鳥教程的基礎教程,這裡不分析了。本文是記錄本人的例項學習nodejs。

  需要特別說明的是require使用相對路徑時相對的是當前檔案。

b.npm

  NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS程式碼部署上的很多問題,常見的使用場景有以下幾種:

  1.從NPM伺服器下載第三方包到本地使用。

  2.從NPM伺服器下載並安裝第三方命令列程式到本地使用。

  3.將自己編寫的包或命令列程式上傳到NPM伺服器供別人使用。

  由於新版的nodejs已經集成了npm,所以之前npm也一併安裝好了。同樣可以通過輸入 "npm -v" 來測試是否成功安裝。命令如下,出現版本提示表示安裝成功:

  

  npm安裝命令為:"npm install " + 模組名稱

比如有一個很好用的基於nodejs的框架express框架。

Express 是一個簡潔而靈活的 node.js Web應用框架, 提供了一系列強大特性幫助你建立各種 Web 應用,和豐富的 HTTP 工具。使用 Express 可以快速地搭建一個完整功能的網站。我要構建的網站會基於這個框架,所以安裝先。

  首先使用命令定位到我的伺服器目錄chuaNodejs,然後使用安裝命令

  

  以上命令會將 Express 框架安裝在當前目錄的 node_modules 目錄中, node_modules 目錄下會自動建立 express 目錄, 並將其儲存到依賴列表中(--save命令可以參考)。以下幾個重要的模組是需要與 express 框架一起安裝的:

  • body-parser - node.js 中介軟體,用於處理 JSON, Raw, Text 和 URL 編碼的資料。

  • cookie-parser - 這就是一個解析Cookie的工具。通過req.cookies可以取到傳過來的cookie,並把它們轉成物件。

  • multer - node.js 中介軟體,用於處理 enctype="multipart/form-data"(設定表單的MIME編碼)的表單資料。

    npm install body-parser --save
    npm install cookie-parser --save
    npm install multer --save

  需要注意的是安裝分為npm 的包安裝分為本地安裝(local)、全域性安裝(global)兩種,從命令列來看,差別只是有沒有-g而已,比如

npm install express      //本地安裝
npm install express -g   //全域性安裝

  本地安裝

  1. 將安裝包放在 ./node_modules 下(執行 npm 命令時所在的目錄),如果沒有 node_modules 目錄,會在當前執行 npm 命令的目錄下生成 node_modules 目錄。

  2. 可以通過 require() 來引入本地安裝的包。

專案中的庫都不會全域性安裝,npm install 時安裝在 ./node_modules 裡,這些庫你只需要 require() 就能用了。

  全域性安裝

  1. 將安裝包放在 /usr/local 下。

  2. 可以直接在命令列裡使用。

  3. 不能通過 require() 來引入本地安裝的包。

  一般安裝在全域性的都是有命令列需求的包,比如 bower,你需要在命令列中使用 bower 這個命令。

  測試:能否只安裝一次第三方包多個專案使用。本人當前的專案是chuaNodejs,在該專案下安裝了express。在此目錄下建立一個執行檔案server.js,程式碼如下(其中index.html是放在當前目錄下的,你可以自己隨便寫一個)

var express = require("express");

var app = express();

//指定靜態檔案路勁static,可以直接訪問static下的檔案test.png:http://localhost:8080/test.png
app.use(express.static('static'));

app.get("/",function(req,res){
    console.log(__dirname);
    res.sendFile(__dirname + "/index.html")
})

var server = app.listen(8080,function(){
    var host = server.address().address;
    var port = server.address().port;

    console.log("應用例項,訪問地址為 http://%s:%s", host, port)
})

  執行server

  

  瀏覽器訪問

  

  這個時候我又寫了一個執行檔案test.js放在當前目錄,原始碼如下

var express = require('express');
var app = express();

app.get('/', function (req, res) {
   res.send('Hello World');
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("應用例項,訪問地址為 http://%s:%s", host, port)

})

  然後也執行他,在瀏覽器中訪問效果為

  

  說明同一個工程下可以監聽多個埠。如果同時執行的是一個埠(比如server.js和test.js同為8080埠)則會報錯,所以要避免

  

  所以本人在chuaNodejs下建立了一個當獨的一個檔案來作為一個獨立的專案,如下

  

  其中server.js更改為(其中app.use(express.static('chuayyqing/static'))中的路徑是相對於express包的安裝根目錄的。當前express是安裝在chuaNodejs下的,所以路徑是相對於chuaNodejs目錄)。

  但是需要注意的是前端程式碼中寫相對路徑的時候需要特別注意相對路徑指的具體是什麼

  比如主頁index.html對應的url是http://localhost:8080/,這個是有前端有請求圖片標籤<img src='imgs/title.png'/>對應的請求路徑是http://localhost:8080/imgs/title.png。

  點選使用app.get("/view/list")跳轉到另一個頁面,這個時候再去請求標籤<img src='imgs/title.png'/>對應的請求路徑是http://localhost:8080/view/imgs/title.png。所以相對路徑要掌握好

var express = require("express");
var app = express();

app.use(express.static('chuayyqing/static'));

app.get("/",function(req,res){
    console.log(__dirname);
    res.sendFile(__dirname + "/index.html")
})

var server = app.listen(8080,function(){
    var host = server.address().address;
    var port = server.address().port;

    console.log("應用例項,訪問地址為 http://%s:%s", host, port)
})

  執行程式碼

  

  去瀏覽器執行即可。  

  如果下次來了一個新專案,就可以在chuaNodejs目錄下再建一個檔案來處理即可,照樣可以使用已經安裝好的express包。

  在程式碼中引用模組(使用require引用模組)分為以下幾類

  1)http、fs、path等,原生模組,這個是安裝nodejs的時候就已經安裝好的,程式碼中直接使用,如require("http")。

  2)./mod或../mod,相對路徑的檔案模組,這裡面每一個模組就是一個js檔案,比如server.js中引用同目錄下的test.js:require("./test.js")。

  3)/pathtomodule/mod,絕對路徑的檔案模組。

  4)mod,非原生模組的檔案模組,比如第三方的包express,安裝成功以後直接使用,如require("express")。

  今天的筆記就先到這裡,至少首頁可以跑起來了。

  如果覺得本文不錯,請點選右下方【推薦】!