2025年7月最新动态:Vue 3.4 "Nebula" 稳定版近期发布,新增了编译时性能优化和更细粒度的响应式控制,这对大型工程的管理效率提升明显,如果你还在用老版本,现在是时候考虑升级了!
一个标准的Vue工程通常长这样(以Vue CLI为例):
my-project/
├── public/ # 静态资源(直接拷贝到dist)
├── src/
│ ├── assets/ # 需要打包的静态资源
│ ├── components/ # 公共组件
│ ├── views/ # 路由页面级组件
│ ├── store/ # Vuex/Pinia状态管理
│ ├── router/ # 路由配置
│ ├── utils/ # 工具函数库
│ ├── styles/ # 全局样式
│ └── main.js # 应用入口
避坑指南:
public/
里的文件不会被webpack处理,适合放favicon.ico
这类固定文件 PascalCase
(如UserCard.vue
),和HTML标签区分开 src/
├── features/ # 按业务功能划分
│ ├── auth/ # 认证相关
│ │ ├── components/ # 业务专属组件
│ │ └── store.js # 功能模块状态
│ └── dashboard/ # 另一个功能模块
├── core/ # 核心基础设施
│ ├── api/ # 所有接口请求
│ └── constants/ # 常量定义
└── App.vue # 根组件
为什么这样设计?
auth/
下,改需求时不用满项目找文件 features/
之间通过API或状态管理通信,避免直接依赖 原子化设计:
示例:智能组件vs木偶组件
<!-- SmartComponent.vue --> <script setup> import { fetchData } from '@/api' const list = ref([]) onMounted(async () => { list.value = await fetchData() }) </script> <template> <DumbComponent :items="list" /> </template> <!-- DumbComponent.vue --> <template> <ul> <li v-for="item in items" :key="item.id">{{ item.name }}</li> </ul> </template>
Pinia最佳实践:
// store/user.js export const useUserStore = defineStore('user', { state: () => ({ profile: null, permissions: [] }), actions: { async login(credentials) { const res = await api.login(credentials) this.profile = res.data } }, getters: { isAdmin: (state) => state.permissions.includes('admin') } }) // 组件中使用 const store = useUserStore() store.login({ username, password })
性能技巧:
shallowRef
避免不必要的响应式开销 computed
缓存 // router.js { path: '/settings', component: () => import( /* webpackChunkName: "settings" */ '@/views/SettingsPage.vue' ) }
打包结果:
app.js
体积减小 settings.chunk.js
,首屏提速30%+ git commit -m "feat(user): 新增个人中心头像上传功能"
类型可选:
feat
:新功能 fix
:bug修复 docs
:文档变更 style
:代码样式调整 .eslintrc.js
推荐规则:
module.exports = { rules: { 'vue/multi-word-component-names': 'off', // 允许单文件组件名 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off' } }
VSCode配置:保存时自动格式化+修复错误
vite.config.js
配置:
export default defineConfig({ build: { chunkSizeWarningLimit: 1500, // 调整分包大小警告阈值 rollupOptions: { output: { manualChunks: { vendor: ['vue', 'pinia', 'axios'] // 第三方库单独分包 } } } } })
v-once
标记静态内容 vue-virtual-scroller
虚拟滚动 <img v-lazy="url">
依赖管理:
npm outdated
定期检查过时依赖 beta
分支测试 错误监控:
try/catch
和用户反馈 :好的工程化管理就像整理房间——东西放对位置,找起来快,用起来顺,现在就去检查你的src/
目录,把那些散落的组件归到该去的功能模块吧!
(注:本文代码示例基于Vue 3.4+版本,部分配置可能需要根据实际项目调整)
本文由 彤举 于2025-07-31发表在【云服务器提供商】,文中图片由(彤举)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/499441.html
发表评论