歡迎使用 Chats!在我上一篇博客 https://www.cnblogs.com/sdcb/p/18597030/sdcb-chats-intro 中,我介紹了 Chats 的各種功能,但所有功能都是用代碼一行一行寫出來的。
在這個(gè)指南中,我將幫助您快速上手開發(fā),了解如何在開發(fā)階段使用和配置 Chats 項(xiàng)目。Chats 在開發(fā)階段采用前后端分離的模式,但在生產(chǎn)環(huán)境中前后端會(huì)合并為一個(gè)發(fā)布包。
技術(shù)基礎(chǔ)
環(huán)境需求
獲取代碼
首先,克隆 Chats 的代碼倉庫:
git clone https://github.com/sdcb/chats.git
前后端共同開發(fā)
后端開發(fā)指南
使用 Visual Studio 打開解決方案:
在根目錄下找到 chats/Chats.sln
解決方案文件并打開。在 Visual Studio 中,您將看到一個(gè)名為 Chats.BE
的網(wǎng)站項(xiàng)目。
運(yùn)行項(xiàng)目:
按 F5 運(yùn)行項(xiàng)目。默認(rèn)配置會(huì)檢查 SQLite 數(shù)據(jù)庫文件 chats.db
是否存在,如果不存在,會(huì)自動(dòng)創(chuàng)建在 ./AppData
目錄并初始化數(shù)據(jù)庫。
服務(wù)將在 http://localhost:5146
上運(yùn)行,并提供 API 服務(wù)。如果在開發(fā)模式下運(yùn)行 (ASPNETCORE_ENVIRONMENT=Development
),Swagger UI 將在 http://localhost:5146/swagger
上可用。
配置文件說明:
默認(rèn)配置在 appsettings.json
中,但強(qiáng)烈建議使用 userSecrets.json
管理敏感信息。這可以避免在代碼庫中泄露敏感的開發(fā)配置。
默認(rèn)配置結(jié)構(gòu)如下:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"FE_URL": "http://localhost:3001",
"ENCRYPTION_PASSWORD": "this is used for encrypt auto increment int id, please set as a random string.",
"DBType": "sqlite",
"ConnectionStrings": {
"ChatsDB": "Data Source=./AppData/chats.db"
}}
配置選項(xiàng)解釋:
為什么使用整數(shù)+加密而非 GUID?
在 Chats 項(xiàng)目初期,我們確實(shí)是使用的GUID,但是由于下列2個(gè)原因并經(jīng)過慎重考慮,我換成了自增整數(shù)Id:
管理敏感配置:
不建議在 appsettings.json
中直接修改配置項(xiàng)。可以通過 Visual Studio 使用 userSecrets.json
:
這可以避免在提交代碼時(shí)不小心將敏感信息上傳。
Visual Studio: 右鍵點(diǎn)擊 Chats.BE
項(xiàng)目 -> 管理用戶機(jī)密
。
CLI: 使用以下命令管理用戶機(jī)密。
dotnet user-secrets init
dotnet user-secrets set "key" "value"dotnet user-secrets list
GUID 字段較大,占用更多空間;
GUID 作為聚集索引會(huì)導(dǎo)致索引碎片,影響性能;
Logging
: 管理日志級(jí)別,默認(rèn)記錄信息級(jí)別的日志。
AllowedHosts
: 配置允許訪問的主機(jī)名,*
表示接受所有。
FE_URL
: 前端的URL,默認(rèn)指向 http://localhost:3001
。前端可以通過 CORS 跨域訪問后端。默認(rèn)3000端口無需額外配置。
DBType
: 數(shù)據(jù)庫類型,支持 sqlite
(默認(rèn))、mssql
和 postgresql
。
ConnectionStrings:ChatsDB
: 數(shù)據(jù)庫 ADO.NET
連接字符串,隨 DBType
而變。
ENCRYPTION_PASSWORD
: 用于加密自增 ID。生產(chǎn)環(huán)境中應(yīng)設(shè)置為隨機(jī)字符串,避免直接暴露 ID。
不使用 Visual Studio 的運(yùn)行方式:
進(jìn)入后端目錄:
cd ./chats/src/BE
dotnet run
前端開發(fā)指南
進(jìn)入前端目錄:
cd ./chats/src/FE
創(chuàng)建 .env.local
文件并指定后端 URL:
echo "API_URL=http://localhost:5146" > .env.local
安裝依賴并運(yùn)行開發(fā)服務(wù)器:
npm i
npm run dev
運(yùn)行后,前端服務(wù)將監(jiān)聽 http://localhost:3000
。后端已有 CORS 配置支持無需額外配置。
僅前端開發(fā)
對(duì)于專注于前端開發(fā)的場(chǎng)景,我們提供了一個(gè)已經(jīng)部署好的后端開發(fā)環(huán)境:
克隆倉庫:
git clone https://github.com/sdcb/chats.git
進(jìn)入前端目錄并指定遠(yuǎn)程后端:
cd ./chats/src/FEecho "API_URL=https://chats-dev.starworks.cc:88" > .env.local
這個(gè)環(huán)境已經(jīng)默認(rèn)允許了 http://localhost:3000 這個(gè)地址的跨域訪問行為。
安裝依賴并運(yùn)行:
npm i
npm run dev
注意事項(xiàng)
如果想模擬生產(chǎn)打包過程,請(qǐng)執(zhí)行:
npm run build
此命令會(huì)在當(dāng)前目錄生成 ./out
文件夾,其中包含所有必要的靜態(tài)文件。
僅后端開發(fā)
對(duì)于專注于后端開發(fā)的場(chǎng)景,可以使用打包好的前端文件:
克隆倉庫并進(jìn)入后端目錄:
git clone https://github.com/sdcb/chats.gitcd ./chats/src/BE
下載并解壓前端靜態(tài)文件放置到 wwwroot
:
Linux 下執(zhí)行:
curl -O https://github.com/sdcb/chats/releases/latest/download/chats-fe.zip
unzip chats-fe.zipcp -r chats-fe/* wwwroot/
Windows 下執(zhí)行:
Invoke-WebRequest -Uri "https://github.com/sdcb/chats/releases/latest/download/chats-fe.zip" -OutFile "chats-fe.zip"Expand-Archive -Path "chats-fe.zip" -DestinationPath "."Copy-Item -Path ".\chats-fe\*" -Destination ".\wwwroot" -Recurse -Force
注意
我同時(shí)還將上述的 https://github.com/sdcb/chats/releases/latest/download/chats-fe.zip 地址上傳到了我個(gè)人的 Minio 文件服務(wù)器,地址為:https://io.starworks.cc:88/chats/latest/chats-fe.zip
如果您直接從 Github 上下載速度太慢,可以換成這個(gè)地址。
這個(gè)地址對(duì)應(yīng)的 chats-fe.zip
附件是由 Github Actions 在代碼合入 main
分支時(shí)自動(dòng)生成來而,合入 dev
分支時(shí)并不會(huì)觸發(fā)更新這個(gè)文件。
運(yùn)行后端:
dotnet run
或者在 Visual Studio 中打開 Chats.sln
并運(yùn)行 Chats.BE
項(xiàng)目。
運(yùn)行后,訪問 http://localhost:5146/login
可以直接進(jìn)入 Chats 的登錄界面,實(shí)現(xiàn)前后端不分離的部署模式。
希望此指南可以幫助您順利開展 Chats 項(xiàng)目的開發(fā)工作。如有任何問題,請(qǐng)查看源碼中的文檔或在 https://github.com/sdcb/chats 中創(chuàng)建issue來獲得支持。
轉(zhuǎn)自https://www.cnblogs.com/sdcb/p/18604712/chats-development-instruction
該文章在 2024/12/16 9:55:20 編輯過