1. 程式人生 > >node.js and express學習筆記與說明

node.js and express學習筆記與說明

node簡介

node不是一門程式語言 node.exe是js程式碼可以在瀏覽器外跨平臺的直接運行於計算機上的執行環境,類似於java的JVM虛擬機器。 核心運用的是谷歌一樣的V8引擎。
優勢,可以前後端都用js來寫,更方便程式的執行。

node架構與優勢

node是非同步架構所以沒有阻塞,他的一個執行緒可以來處理所有請求,當他的執行緒處理完一個請求時就會轉到另一個執行緒處理另一個,但是如果這個任務一直佔用他則不能轉到其他的,所以node不適合用來處理運算密集型任務,比如video 程式,需要一直佔用執行緒。而他更適合處理資料密集型的實時程式,每個請求不會一直佔用執行緒。

在node應用中每個檔案都是一個module,每個檔案中是彼此隔離的,一個檔案不能使用另一個檔案中的變數。
npm是一個安裝所有第三方工具和庫的軟體工具,NPM一個命令列管理軟體,用它來執行一些操作。

ES6 中直接在想要export的地方加關鍵字export,而用import來匯入modules
ES6中bable工具把ES6程式碼轉化成所有瀏覽器可以執行的es5 JS語言,相當於一個轉化器和編譯器
而Bundle是用來把所有的js檔案合併成一個Js檔案的工具,現在最流行的是webpack。運用webpack一個很大的功能就是,可以運用wepack的watch 來一直監聽程式碼如果修改程式碼,不用重新編譯程式,他會自動重新編譯然後執行程式。

NPM node package manager

用npm來進行一些配置來新增依賴,這些依賴包都被儲存在node_modules資料夾中

npm init --yes

來生成package.json檔案,這個檔案表明了用了哪些庫。

npm i是安裝package下配置的所有依賴包,這些安裝的包都會儲存在node_modules 資料夾裡,所以當你上傳程式碼到github或者把程式碼傳送給其他人的時候,node_modules資料夾可以刪掉,然後其他人直接npm i 就可以安裝所有依賴了。

上傳github忽略檔案

當上傳github上時可以忽略你不想上傳的東西。新增.gitignore檔案在裡面新增一行node_modules/ 斜槓代表資料夾,這樣這個資料夾就不會被上傳
.gitignore檔案例項:

.DS_Store
node_modules/
npm-debug.log
.idea/
dump.rdb
.vscode/
public/*
dist
coverage/
.nyc_output/
yarn.lock

npm outdated會列出當前依賴包版本和該包官網最新版本,如果包含的依賴是最新版本則不會列出
如果依賴已經過時,這時可以直接修改package.json檔案更改到相應的最新依賴版本,手動直接npm install進行安裝

npm update可以用來更新包,但是隻能更新小版本的包也就是4.x.x之後的包,小版本的更新是對專案沒有影響的都可以使用

npm i xxx 用來安裝或更新某個包,如果現在是^4.2.1 會更新到4.X.X的最新版本,~4.3.4會更新到4.3.X版本,如果想要更新到確切版本,則直接用數字不帶符號
npm un XXX 來解除安裝某個依賴包

專案依賴說明package.json

package.json 是一個專案說明檔案和新增依賴dependency檔案

{
  "name": "node_js_test",
  "version": "1.0.0",
  "description": "test",
  "main": "app.js",
  "dependencies": {			//專案依賴
    "express": "^4.16.4",
    "mongoose": "^5.3.4",
    "test": "^0.6.0",
    "underscore": "^1.9.1"
  },
  "devDependencies": {
  "jshint" :"2.4.3"
  },	//開發專案依賴,而不是專案本身的依賴,也就是說是便於開發者使用的一些工具比如JShint提示語法錯誤的工具。
  "scripts": {//npm run script中的關鍵字來實現script的內容
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "for",
    "test"
  ],
  "author": "charless",
  "license": "ISC"
}

express

express 是用來實現web 程式的一個輕量級框架,讓程式碼維護起來更方便,用它能更簡便的實現web server服務
express具體安裝和整體專案框架生成可以參考express官網有非常簡明清楚的教程。

http method : get 查 post 增 put 改 delete 刪
restful 是一個提供http服務的風格,也就是http 的增刪改查方法
CRUD operation增刪改查操作:create read update delete
GET /api/customers 得到資料
GET /api/customers/1 得到指定資料
PUT /api/customers/1 更新指定資料
DELETE /api/customer/1 刪除指定資料
POST /api/customers 增加資料

在express中,http的方法都被封裝到express中了,以便於更方便的使用。

nodemon

監聽node,用這個命令執行服務,則當你修改程式碼儲存的時候,他會自動重啟node服務並執行,就不需要停掉服務重新開啟來執行程式碼

app.get('/api/:year/:month',(req,res)=>{
  res.send(req.params);
});

請求http://localhost:3000/api/1/2
返回{“year”:“1”,“month”:“2”}