VUE3 script 标准写法顺序

遵循了从元信息 → 输入 → 输出 → 内部逻辑 → 副作用 的思维流程,代码可读性最好

java 复制代码
<script setup>
// 1. 组件元信息
defineOptions({
  name: 'ComponentName',
  inheritAttrs: false,
  // ...
})

// 2. Props 定义
const props = defineProps({
  modelValue: String,
  // ...
})

// 3. Emits 定义
const emit = defineEmits(['update:modelValue', 'change'])

// 4. Expose 定义(暴露给父组件的方法/数据)
defineExpose({
  refresh,
  validate
})

// 5. 导入语句(虽然可以在顶部,但放这里更符合逻辑流)
import { ref, computed, watch, onMounted } from 'vue'

// 6. Store 相关
const appStore = useAppStore()

// 7. 路由相关
const route = useRoute()
const router = useRouter()

// 8. 响应式数据(按重要性排序)
const loading = ref(false)
const list = ref([])
const form = reactive({ name: '', age: 0 })

// 9. 计算属性
const computedData = computed(() => { /* ... */ })
const filteredList = computed(() => list.value.filter(/* ... */))

// 10. 侦听器
watch(() => props.modelValue, (newVal) => { /* ... */ })
watchEffect(() => { /* ... */ })

// 11. 生命周期钩子(按执行顺序)
onBeforeMount(() => { /* ... */ })
onMounted(() => { /* ... */ })
onBeforeUnmount(() => { /* ... */ })

// 12. 方法(按逻辑分组)
// 12.1 初始化方法
async function initData() { /* ... */ }

// 12.2 事件处理
function handleClick() { /* ... */ }
function onSubmit() { /* ... */ }

// 12.3 API 调用
async function fetchData() { /* ... */ }

// 12.4 工具方法
function validate() { /* ... */ }
function reset() { /* ... */ }
</script>
相关推荐
Curvatureflight17 小时前
前端国际化 i18n 落地实践:语言包、动态文案和格式化问题怎么处理?
前端·c++·vue
优雅格子衫1 天前
uniapp 拍照相册选取后超级好用的裁剪组件,增加水印完全自定义
开发语言·前端·javascript·uni-app·vue
路光.1 天前
uniapp中解决webview在app中调用,有过渡空白问题,增加过渡动效
uni-app·vue·app·uniapp
暗冰ཏོ2 天前
《2026 Vue2 + Vue3 完整学习指南:基础语法、路由缓存、登录拦截、项目实战与面试题》
前端·vue.js·vue·vue3·vue2
七仔啊2 天前
cad文件在线查看
vue
相忘于江湖4265433 天前
vs code 代码保存自动格式化
前端·vue
study-Java4 天前
校园失物招领平台
java·spring boot·vue·intellij-idea·visual studio code
MaCa .BaKa4 天前
53-智慧工地人员考勤与工时管理系统
java·spring boot·mysql·tomcat·vue·maven
华玥作者5 天前
从“碎片化”到“资产化”:Vue3 + UniApp 组件库的进化论
ui·uni-app·vue·组件库
薛定谔的猫喵喵5 天前
从零到一:Spring Boot + Vue 项目前后端运行完整指南
vue.js·spring boot·后端·pycharm·vue