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
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”}