尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

01 从项目结构开始认识 Vue 3

01 从项目结构开始认识 Vue 3 从项目结构开始认识 Vue 3一、为什么先看项目结构很多初学者学习 Vue 时会直接从v-if、v-for或ref()开始背语法。这样可以写出简单示例却经常无法回答下面的问题Vue 项目从哪个文件启动URL 为什么能够打开一个.vue页面views、components、api和router分别放什么.vue文件是不是全部都要配置路由.ts文件是不是只保存工具函数阅读真实项目时第一步不是逐行理解代码而是先找到项目的入口和主要目录。二、Vue 在前端系统中的位置一个典型前后端分离系统可以简化为用户操作浏览器 ↓ Vue 负责页面结构、状态和交互 ↓ API 模块向后端发送请求 ↓ 后端返回 JSON 数据 ↓ Vue 根据新数据自动更新页面Vue 主要解决的是浏览器端的问题。它不会替代数据库也不会直接完成后端业务计算。在大型数字孪生页面中Vue 通常负责展示炉次、设备、风险和预测数据管理实时模式与历史回放模式响应按钮、滑块和开关操作调用后端接口将数据传递给 Three.js 等第三方模块在页面退出时停止定时器并释放资源。三、一个常见的 Vue 3 项目目录project ├─ index.html ├─ package.json ├─ vite.config.ts └─ src ├─ main.ts ├─ App.vue ├─ router │ └─ index.ts ├─ views │ └─ heat │ └─ twin.vue ├─ components ├─ api │ ├─ heat.ts │ └─ types.ts ├─ stores ├─ utils ├─ assets └─ styles1.main.ts应用启动入口main.ts通常完成三件事import{createApp}fromvue;importAppfrom./App.vue;importrouterfrom./router;constappcreateApp(App);app.use(router);app.mount(#app);这段代码可以理解为创建 Vue 应用 ↓ 安装路由系统 ↓ 把 App.vue 挂载到 index.html 中的 #app2.App.vue根组件App.vue是整个组件树的根。一个使用 Vue Router 的项目根组件中经常只有布局和router-viewtemplate router-view / /templaterouter-view可以理解为一个“页面插槽”。当前 URL 匹配到哪个路由就把对应页面组件显示在这里。3.router/index.tsURL 与页面的映射表constroutes[{path:/heat/twin,name:HeatTwin,component:()import(/views/heat/twin.vue)}];这表示访问/heat/twin时Router 会加载twin.vue。4.views路由页面views通常保存能够对应完整 URL 的页面例如views/heat/index.vue views/heat/detail.vue views/heat/twin.vue但这只是一种项目约定不是 Vue 的强制规则。5.components可复用子组件例如components/StatusCard.vue components/WarningList.vue components/PlaybackToolbar.vue这些组件一般不会单独对应 URL而是被页面组件导入和使用。6.api接口请求封装页面中不建议反复编写完整请求地址。通常先在 API 模块中封装exportfunctiongetHeatDetail(heatId:string){returnrequest({url:/heat/${heatId},method:get});}页面只需要调用const{data}awaitgetHeatDetail(heatId.value);7.types.ts接口数据类型exportinterfaceHeatHeaderVO{heat_id:string;converter_no:string;steel_grade:string;status:string;}这类文件帮助 TypeScript 判断接口字段是否正确。四、.vue和.ts文件分别负责什么.vue文件一个.vue文件可能是路由页面可复用业务组件布局组件图表或三维视口组件。所以不是所有.vue文件都必须注册到 Router。.ts文件.ts文件可能保存API 请求函数TypeScript 类型数据转换函数业务规则常量和配置状态管理Three.js 模型或渲染逻辑。所以不能简单地把.ts全部理解成“被 Vue 调用的功能文件”。它的职责取决于所在目录和导出内容。五、大型 Vue 页面应该怎样阅读面对一个数千行的页面不建议从第一行一直读到最后一行。可以按照下面的顺序第一步看template先回答页面分成哪些区域有哪些按钮、列表、面板和子组件哪些内容通过v-if切换哪些内容通过v-for生成第二步看import根据导入路径判断依赖/api/... 后端接口 ./twin/... 当前业务模块 three Three.js vue-router 路由 Element Plus UI 组件第三步看ref状态把状态分类页面状态loading、sectionError 业务数据heatMeta、playback、snapshot 交互状态playbackIndex、displayMode 资源引用twinCanvasRef、timer第四步看computed计算属性通常说明“原始数据如何变成页面需要的数据”。第五步找数据入口重点寻找loadData()loadTwinData()loadSnapshotData()理解页面从哪里获取数据。第六步找生命周期onMounted(...)onBeforeUnmount(...)它们分别说明页面如何启动和如何退出。第七步最后看watch和辅助函数这些代码通常负责状态同步、格式化、错误处理和第三方模块更新。六、把大型页面理解为“总协调器”真实项目中的大型页面通常不是亲自完成所有算法而是组合多个模块twin.vue ├─ 读取路由参数 ├─ 调用 API ├─ 保存响应式状态 ├─ 计算显示数据 ├─ 渲染模板 ├─ 调用三维模块 ├─ 管理实时轮询 └─ 退出时释放资源这类文件更接近“页面总控制器”或“页面协调器”。七、常见误区误区 1所有.vue都是页面错误。很多.vue是子组件不会配置独立路由。误区 2所有跳转都使用router.push()错误。还可以使用router.replace();router.back();模板中也可以使用router-link to/heat炉次中心/router-link误区 3应该先读所有工具函数大型页面中的辅助函数数量可能很多。先建立页面主链再按调用关系深入阅读更有效率。八、本章小结阅读 Vue 项目时先找到main.ts → App.vue → router → views 页面阅读大型页面时先建立模板结构 → 状态 → 计算属性 → 数据入口 → 生命周期下一章将进入.vue文件内部系统学习单文件组件和模板语法。
返回列表