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