cst-exam 项目复盘

cst-exam 项目复盘
寻觅~流光cst-exam
项目基本架构:
1 | src/ |
配置@/路径:
配置快捷导入的@/路径: 在 SvelteKit 中配置快捷路径(如 @/
指向 src/
),可以通过修改 vite.config.js
来实现。SvelteKit 基于 Vite,所以路径别名配置是一样的。
步骤如下:
- 安装路径别名辅助插件
1 | pnpm add -D @rollup/plugin-alias |
- 修改
vite.config.js
,添加resolve.alias
配置:
1 | // vite.config.js |
需要注意的是,上面的配置不生效!!!
需要在svelte.config.js
中进行配置:
1 | import adapter from "@sveltejs/adapter-node"; |
原因:
配置代码统一格式化:
- 安装 Prettier 及相关插件
1 | npm install -D prettier prettier-plugin-svelte |
- 添加
.prettierrc
配置文件
1 | { |
- 添加
.prettierignore
忽略文件(可选)
1 | node_modules.build; |
- VS Code 配置自动保存时格式化(推荐)
打开 VS Code 的设置(快捷键:Ctrl + ,
),搜索并启用:
- ✅
Format On Save
- ✅
Editor: Default Formatter
选择 Prettier
或者编辑 .vscode/settings.json
(推荐放进项目中):
1 | { |
更详细的写法:
1 | .vscode/settings.json |
遇到的详细问题
1.重定向到登录页面(在项目首次打开的时候):
1 | src / routes / +page.server.js; |
🔄 效果:
- 当用户访问根路径
/
时,会被立即重定向到/login
。 307
状态码表示临时重定向,是推荐的跳转方式。
统一组件化开发
1 | Button.svelte |
配置 axios
1 | pnpm add axios |
现阶段标注的问题
创建班级需要添加课程名称,缺失了
课程名称
课程分类应该是被砍掉了,不用加
班级管理中需要添加
删除班级
的`功能,这里缺少了
配置 mock 进行接口模拟测试
1 | pnpm add mockjs -D |
临时放置代码块
1 | { |
下载文件
1 | /** |
压缩包文件下载:
1 | const blob = new Blob([Response], { |
上传文件
❗ 为啥「点击上传」必须要 input?
浏览器不会允许 JavaScript 随意访问本地文件系统 ——
点击上传只能靠 <input type="file">
元素打开文件选择框,不管你隐藏得多深,底层都是它。
✅ 但你可以让 input 完全“隐身”!
已完成模块记录
页面部分—整个页面模拟接口
- 查看班级管理中的学生列表中的学生详细信息
- 教师新增学生账号页面
- 班级信息页面
- 班级列表管理页面
- 班级管理页面
- 当个新增学生账号页面
页面部分—页面样式
- 管理员端的教师列表页面
- 学生列表中的学生详细信息页面
- 教师新增学生账号页面
- 班级列表管理页面
- 班级管理页面
- 当个新增学生账号页面
接口部分—对接情况
- 查看详细班级信息—班级信息与学生列表
- 举报学生—学生列表中的举报学生
- 查看学生列表中的某一个详细的学生信息
- 导出全部学生列表—pdf or excel
- 教师新增学生账号接口
- 班级信息列表
- 创建班级接口
- 编辑班级接口
- 获取后端自动生成的账户密码
-
根据班级id获取班级信息这个接口不能用
有问题,冲突了,而且信息不全,没有教师姓名,只有教师 id
统一状态管理设置
存储状态的文件
1 | import { writable } from "svelte/store"; |
在 Svelte 项目中获取 adminInforStore
数据有以下几种方式:
- 在 Svelte 组件中直接订阅 :
1 | <script> |
注意事项:
- 使用 $ 前缀可以自动订阅和取消订阅(推荐方式)
- 手动订阅时务必记得取消订阅防止内存泄漏
- 数据已经是解密后的状态,无需额外处理
解决跨域的问题
1 | server: { |
组件之间传递函数方法的三种方式
方法一:
使用 bind:this
获取组件实例 子组件暴露方法,父组件调用方法。
子组件:
1 | <script> |
父组件:
1 | <script> |
方法二:
用事件派发 希望子组件触发动作但由父组件来处理逻辑,可以用 createEventDispatcher
:
子组件:
1 | <script> |
父组件:
1 | <Child on:reset={handleReset} /> |
方法三:
使用全局状态管理store
来解决
评论
匿名评论隐私政策
TwikooWaline
✅ 你无需删除空行,直接评论以获取最佳展示效果