node實戰入門總結

2021-10-05 07:08:33 字數 3322 閱讀 2944

系統架構設計的四層抽象:

總體結構:

control(第四層:返回資料給到路由這邊,只關心資料及其處理,一般是和資料庫這邊互動)

model(資料模型:成功、失敗返回的資料格式等)

conf:配置

db

utils:工具

logs:日誌

session和redis

一、session不足:

解決:將session儲存在redis中

二、為何session適合用redis儲存

三、開啟redis服務:

開啟乙個 cmd 視窗 使用 cd 命令切換目錄到redis目錄下 執行

redis-server.exe redis.windows.conf
介面和前端聯調

nginx介紹

如何配置反向**:

要同時開啟對應的服務(占用不同埠):nodejs server服務8000埠(後端介面)、http-server服務8001埠(前端頁面)

監聽8080埠

反向**配置

nginx.conf配置檔案:

location / 

location /api/

通過訪問http://localhost:8080/index.html即可

ps:nginx命令

構建流程

npm install -g express -generator全域性安裝express命令安裝工具

express 專案名npm install安裝元件

npm start啟動專案(伺服器)

npm i nodemon cross-env

寫自己的業務邏輯:

新建路由檔案,針對不同路由進行業務邏輯處理

相對於原生nodejs:

構建流程

npm install koa-generator -g全域性安裝express命令安裝工具

koa2 專案名npm install安裝元件

npm i cross-envnpm run dev啟動專案(伺服器)

相對於express和原生nodejs:

一、express中介軟體

function logincheck(req, res, next)
可以註冊多個中介軟體,依次執行

通過next()的執行乙個乙個的往下串聯下乙個中介軟體

實現原理思路:

遇到http請求,根據pathmethod判斷觸發哪些中介軟體

// 實現類似 express 的中介軟體

}// 中介軟體註冊和收集

use()

get()

post()

// 通過當前 method 和 url 來匹配當前路由可執行的中介軟體

match(method, url)

// 獲取 routes

let curroutes =

curroutes = curroutes.concat(this.routes.all)

curroutes = curroutes.concat(this.routes[method])

curroutes.foreach(routeinfo =>

})return stack

}// 核心的 next 機制

handle(req, res, stack)

}next()

}callback()

const url = req.url

const method = req.method.tolowercase()

const resultlist = this.match(method, url)

this.handle(req, res, resultlist)}}

listen(...args)

}// 工廠函式

module.exports = () =>

二、koa2中介軟體

await next();

ctx.body = 'hello world';

});

實現思路:

不涉及methodpath的判斷

// 組合中介軟體

function compose(middlewarelist) catch (err)

}return dispatch(0)

}}class likekoa2

// 收集中介軟體列表

use(fn)

createcontext(req, res)

ctx.query = req.query

return ctx

}handlerequest(ctx, fn)

callback()

}listen(...args)

}module.exports = likekoa2

pm2

cnpm i pm2 -g
配置命令 啟動

npm run prd
常用命令

pm2配置檔案

包括程序數量、日誌檔案目錄等

修改pm2 啟動命令,重啟

訪問 server,檢查日誌檔案的內容(日誌記錄是否生效)

}

多程序

為何使用多程序

多程序和redis

Node實戰 1 入門

當web應用需要連線到資料庫 快取伺服器 檔案系統 應用伺服器或其他服務時,node.js便會大放異彩。但是另一方面,實際上它並不是那些需要做長時間精密計算的伺服器的最佳執行環境。因此,單程序 單執行緒的node模型在處理乙個給定的請求時,如果該請求需要花費大量的時間生成乙個複雜的密碼摘要或者處理影...

node實戰學習紀錄

1.url模組 2.querystring模組 序列化 querystring.stringify 第二個引數為可以替換 第三個引數為可以在後面增加東西 輸出結果為 name scott course jade course node from 此為沒增加引數的情況下 反序列化 querystrin...

node入門筆記

看了 node入門 有些疑難點記下來。在匯出模組的時候給出的 是這樣的 可以發現exports.start start 但是不知道哪乙個start是內部函式名哪乙個是外部引用的名字。做了如下修改 starrt 為內部函式名 star為外部呼叫的方法名 發現exports.外部呼叫名 內部函式名 關於...