Chats 开发指南
Chats 开发指南
欢迎使用 Chats!在我上一篇博客 https://www.cnblogs.com/sdcb/p/18597030/sdcb-chats-intro 中,我介绍了 Chats 的各种功能,但所有功能都是用代码一行一行写出来的。
在这个指南中,我将帮助您快速上手开发,了解如何在开发阶段使用和配置 Chats 项目。Chats 在开发阶段采用前后端分离的模式,但在生产环境中前后端会合并为一个发布包。
技术基础
- 后端: 使用 C#/ASP.NET Core 开发。
- 前端: 使用 Next.js/React/TypeScript 开发。
- CSS: 使用 Tailwind CSS。
环境需求
- Git
- .NET SDK 8.0
- Node.js >= 20
- Visual Studio Code
- Visual Studio 2022(可选但推荐)
获取代码
首先,克隆 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上可用。
- 按 F5 运行项目。默认配置会检查 SQLite 数据库文件
配置文件说明:
默认配置在
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"
}
}
配置选项解释:
Logging: 管理日志级别,默认记录信息级别的日志。AllowedHosts: 配置允许访问的主机名,*表示接受所有。FE_URL: 前端的URL,默认指向http://localhost:3001。前端可以通过 CORS 跨域访问后端。默认3000端口无需额外配置。DBType: 数据库类型,支持sqlite(默认)、mssql和postgresql。ConnectionStrings:ChatsDB: 数据库ADO.NET连接字符串,随DBType而变。ENCRYPTION_PASSWORD: 用于加密自增 ID。生产环境中应设置为随机字符串,避免直接暴露 ID。
为什么使用整数+加密而非 GUID?
在 Chats 项目初期,我们确实是使用的GUID,但是由于下列2个原因并经过慎重考虑,我换成了自增整数Id:
- GUID 字段较大,占用更多空间;
- GUID 作为聚集索引会导致索引碎片,影响性能;
管理敏感配置:
不建议在
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
这可以避免在提交代码时不小心将敏感信息上传。
不使用 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/FE
echo "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.git
cd ./chats/src/BE
下载并解压前端静态文件放置到
wwwroot:Linux 下执行:
curl -O https://github.com/sdcb/chats/releases/latest/download/chats-fe.zip
unzip chats-fe.zip
cp -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 文件服务器,地址为:http://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来获得支持。
Chats 开发指南的更多相关文章
- ASP.NET Aries 开源开发框架:开发指南(一)
前言: 上周开源了Aries开发框架后,好多朋友都Download了源码,在运行过程里,有一些共性的问题会问到. 所以本篇打算写一下简单的开发指南,照顾一下不是太看的懂源码的同学,同时也会讲解一下框架 ...
- FreeMarker模板开发指南知识点梳理
freemarker是什么? 有什么用? 怎么用? (问得好,这些都是我想知道的问题) freemarker是什么? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生 ...
- Jetty使用教程(四:21-22)—Jetty开发指南
二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...
- JVM 平台上的各种语言的开发指南
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...
- iOS原生地图开发指南续——大头针与自定义标注
iOS原生地图开发指南续——大头针与自定义标注 出自:http://www.sxt.cn/info-6042-u-7372.html 在上一篇博客中http://my.oschina.net/u/23 ...
- Angularjs中文版本开发指南发布
从本人开始在写关于Angularjs的文章开始,也算是见证了Angularjs在国内慢慢的火起来,如今的Angularjs正式如日中天.想知道为什么Angularjs会这么火,请移步angularjs ...
- nodejs开发指南读后感
nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...
- Libgdx 开发指南——目录
本系列文档选译自libgdx github项目 wiki : https://github.com/libgdx/libgdx/wiki 由于关于Libgdx的中文文档非常稀缺,因此在这里对官方Wik ...
- jQuery MiniUI 开发指南+API组件参考手册
jQuery MiniUI 开发指南 本文档将逐步的讲解jQuery MiniUI的方方面面,从此您将踏上jQuery MiniUI的深入探索之旅. 1.Hello M ...
- 《CSS3专业网页开发指南》笔记
书本:<CSS3专业网页开发指南>(the book of css3) Peter Gasston 著 李景媛 吴晓嘉 译 第1章: 1.box-sizing : IE8及以上版本 ...
随机推荐
- 如何基于Java解析国密数字证书
一.说明 随着信息安全的重要性日益凸显,数字证书在各种安全通信场景中扮演着至关重要的角色.国密算法,作为我国自主研发的加密算法标准,其应用也愈发广泛.然而,在Java环境中解析使用国密算法的数字证书时 ...
- DTO转VO工具
data工具,实现了对象拷贝 DTO -> VO 只需要实现一个类即可 data-utils data工具,实现了对象拷贝DTO -> VO 解决的问题 Mapstruct需要安插件!!! ...
- 大模型应用开发初探 : 快速直观感受RAG
大家好,我是Edison. 上一篇,我们了解了什么如何让一些开源小参数量模型具有函数调用的能力.这一篇,我们来快速了解下RAG(检索增强生成)并通过一个简单的DEMO来直观感受一下它的作用. RAG是 ...
- Brainstorm 了道题但是不会做
题 因为没想出来暂时没定数据范围,不过应该会在 \(n^{2}\) 到 \(n^{3}\) 级别 我的一个思路是先对合法的方案连并查集,然后并查集内判重,但是不会算方案数,因为假如找到重的了不能直接看 ...
- Maya 无法选中坐标轴 的 解决办法
事件起因: 有项目组某同事在使用maya时,无法选中坐标轴,导致在拖动东西的时候总是无法对准坐标轴线. 解决办法: maya软件中设置: Windows -> Settings/Preferen ...
- 《Vue.js 设计与实现》读书笔记 - 第8章、挂载与更新
第8章.挂载与更新 8.1 挂载子节点和元素的属性 扩展子元素的类型可以为数组,并判断如果是数组的话,就先依次挂载所有的子元素. 同时新增节点属性.属性可以通过 el.setAttribute 添加到 ...
- iOS程序内语言切换使用小结
随着时代的发展,应用程序相继出现了不同语言的版本方案,中文,英文,法文,韩文等等:想在应用程序中实现语言的自由切换,需要配置多个语言的文件,根据用户的动态选择获取不同语言文件下的语言文件,从而显示到界 ...
- query和params的区别
2者都是编程式路由跳转用来存放传递数据的位置,query使用path引入,数据显示在地址栏上,params使用name引入,传递的数据在页面看不见 :
- 012 Python约定俗称的常量
#!/usr/bin/env python # -*- coding:utf-8 -*- # Datatime:2022/7/18 21:13 # Filename:011 Python约定俗称的常量 ...
- 别人可以访问本项目的ip地址
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...