以下是一个基于UniApp开发的​​智能待办事项应用​​完整项目示例,结合官方最佳实践与开发规范,涵盖核心功能实现与跨平台适配要点:


​项目结构​

todo-app/
├── pages/                # 页面目录
│   ├── index/           # 首页
│   │   ├── index.vue    # 主页面
│   │   └── index.json   # 页面配置
│   └── detail/          # 详情页
├── components/          # 可复用组件
│   └── TodoItem.vue    # 待办项组件
├── static/              # 静态资源
│   └── icons/          # 图标目录
├── store/               # 状态管理
│   └── todoStore.js    # Vuex状态管理
├── App.vue              # 应用入口
├── main.js              # 初始化文件
└── pages.json           # 路由配置

​核心功能实现​

1. 待办事项列表(pages/index/index.vue)
<template>
  <view class="container">
    <!-- 输入框 -->
    <input 
      v-model="newTodo" 
      placeholder="添加新任务" 
      @confirm="addTodo"
      class="input-box"
    />
    
    <!-- 待办列表 -->
    <scroll-view scroll-y class="list-container">
      <TodoItem 
        v-for="(item, index) in todos" 
        :key="index"
        :item="item"
        @toggle="toggleStatus(index)"
        @delete="deleteTodo(index)"
      />
    </scroll-view>
  </view>
</template>

<script>
import TodoItem from '@/components/TodoItem.vue'
import { mapState, mapMutations } from 'vuex'

export default {
  components: { TodoItem },
  data() {
    return { newTodo: '' }
  },
  computed: { ...mapState(['todos']) },
  methods: {
    ...mapMutations(['ADD_TODO', 'TOGGLE_STATUS', 'DELETE_TODO']),
    addTodo() {
      if(this.newTodo.trim()) {
        this.ADD_TODO({ text: this.newTodo })
        this.newTodo = ''
      }
    },
    toggleStatus(index) { this.TOGGLE_STATUS(index) },
    deleteTodo(index) { this.DELETE_TODO(index) }
  }
}
</script>

2. 可复用组件(components/TodoItem.vue)
<template>
  <view class="todo-item">
    <checkbox :checked="item.completed" @tap="$emit('toggle')" />
    <text :class="{ 'completed': item.completed }">{{ item.text }}</text>
    <button @tap="$emit('delete')" class="delete-btn">×</button>
  </view>
</template>

<script>
export default {
  props: { item: Object }
}
</script>

<style scoped>
.todo-item {
  display: flex;
  align-items: center;
  padding: 15rpx;
  border-bottom: 1rpx solid #eee;
}
.completed { 
  text-decoration: line-through;
  color: #888;
}
.delete-btn {
  margin-left: auto;
  color: #ff4444;
}
</style>


​状态管理(store/todoStore.js)​

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    todos: JSON.parse(uni.getStorageSync('todos') || '[]')
  },
  mutations: {
    ADD_TODO(state, payload) {
      state.todos.push({ ...payload, completed: false })
      uni.setStorageSync('todos', JSON.stringify(state.todos))
    },
    TOGGLE_STATUS(state, index) {
      state.todos[index].completed = !state.todos[index].completed
      uni.setStorageSync('todos', JSON.stringify(state.todos)) 
    },
    DELETE_TODO(state, index) {
      state.todos.splice(index, 1)
      uni.setStorageSync('todos', JSON.stringify(state.todos))
    }
  }
})


​路由配置(pages.json)​

{
  "pages": [
    {
      "path": "pages/index/index",
      "style": {
        "navigationBarTitleText": "待办事项",
        "enablePullDownRefresh": true
      }
    }
  ],
  "globalStyle": {
    "navigationBarTextStyle": "white",
    "navigationBarTitleText": "UniApp Todo",
    "navigationBarBackgroundColor": "#007AFF",
    "backgroundColor": "#F8F8F8"
  }
}


​核心特性实现​

  1. ​跨平台兼容​
    通过uni-app编译器自动适配各平台差异,同一套代码可同时发布到微信小程序、H5和App(网页1、网页4)

  2. ​数据持久化​
    使用uni.setStorageSync实现本地存储,结合Vuex管理全局状态(网页5、网页7)

  3. ​交互优化​

    • scroll-view组件实现流畅滚动(网页4)
    • 复选框与删除按钮的点击反馈优化

​扩展建议​

  1. ​云开发集成​

    // 接入uniCloud实现云端同步
    const db = uniCloud.database()
    db.collection('todos').add(state.todos)

  2. ​多端样式适配​

    /* 条件编译 */
    #ifdef MP-WEIXIN
    .container { padding: 20rpx; }
    #endif

  3. ​插件扩展​
    通过uni-app插件市场添加:

    • 时间选择器设置任务期限
    • 语音输入添加待办事项
      (生态扩展参考网页1、网页4)

​开发环境配置​

  1. 安装HBuilderX(网页1、网页8)
  2. 创建uni-app项目选择"默认模板"
  3. 真机调试:
    # 微信开发者工具需开启服务端口
    npm run dev:mp-weixin
  4. 打包发布:
    npm run build:mp-weixin  # 生成小程序包
    npm run build:h5         # 生成H5页面

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐