一、环境配置与前置条件
-
开发工具要求
- HBuilderX 4.64+(鸿蒙插件已预装)
- DevEco Studio 5.0.3.400+(真机调试必备)
- 鸿蒙离线SDK(通过HBuilderX导入,每个项目独立配置)
-
项目初始化
# 创建Vue3项目(鸿蒙仅支持Vue3)
npx degit dcloudio/uni-preset-vue#vite-ts my-project
在 manifest.json
中声明鸿蒙支持:
"harmonyos": {"appType": "ohos","packageName": "com.example.app","minPlatformVersion": 5 // 适配HarmonyOS 5
}
二、组件封装核心原则
-
API设计规范
- 通过
defineProps
定义明确参数类型 - 使用
@Prop
声明响应式属性(ArkTS语法)
- 通过
// components/DistributedButton.vue
<script setup>
defineProps({buttonText: { type: String, required: true },onClick: { type: Function, default: () => {} }
})
</script>
2.跨平台兼容策略
- 使用条件编译隔离鸿蒙专属逻辑:
<!-- #ifdef HARMONYOS -->
<harmony-card @touch="handleDistributedEvent">
<!-- #endif -->
3.性能优化
避免在组件内直接操作DOM(鸿蒙渲染引擎限制)
使用 Flex/Grid
布局代替绝对定位
三、实战组件封装示例
案例1:分布式交互按钮(跨设备控制)
<!-- components/HarmonyButton.vue -->
<template><button class="harmony-btn" @click="triggerAction"><!-- 鸿蒙专属图标 --><!-- #ifdef HARMONYOS --><span class="harmony-icon">📱</span><!-- #endif -->{{ buttonText }}</button>
</template><script setup>
import { ref } from 'vue'
const props = defineProps({ buttonText: String })const triggerAction = () => {// 鸿蒙分布式API调用// #ifdef HARMONYOSimport('@ohos.distributedHardware').then(module => {module.triggerDeviceAction('device_control')})// #endif
}
</script>
案例2:服务卡片组件
<!-- components/ServiceCard.vue -->
<template><harmony-card><template #header><text class="card-title">{{ title }}</text></template><slot name="content"></slot></harmony-card>
</template><style>
/* 适配鸿蒙的样式 */
.harmony-card {border-radius: 8vp;background-color: #FFF;padding: 12vp;
}
</style>
四、模块化开发最佳实践
-
工程结构规范
src/
├── components/ // 可复用组件
├── modules/ // 业务模块(购物车、用户等)
├── utils/ // 工具函数
└── hooks/ // 组合式API
2.状态管理方案
- 使用
Pinia
管理跨模块状态:
// modules/cartStore.ts
import { defineStore } from 'pinia'
export const useCartStore = defineStore('cart', {state: () => ({ items: [] }),actions: { addItem(item) { /* ... */ } }
})
五、调试与问题解决
-
常见报错处理
属性未初始化:为组件属性设置默认值
@Prop title: string = "" // 必须初始化
API调用异常:检查 module.json5
权限声明
"requestPermissions": ["ohos.distributedHardware.DISTRIBUTED_DATASYNC"
]
性能监控工具
使用 DevEco Studio 的 ArkCompiler 分析组件渲染性能