Skip to content

Jonas0119/hiarts

Repository files navigation

#港艺移动端构建历程

##移动端H5构建

这是一个基于uni-app开发的移动端电商网站,支持中文繁体和英文双语切换。

主要功能

1. 用户认证

  • 手机号登录
  • 短信验证码
  • 用户协议与隐私政策

2. 商品相关

  • 商品列表展示
  • 商品详情
  • 商品分类浏览
  • 商品搜索
  • 商品购买

3. 订单管理

  • 订单创建
  • 订单支付
  • 订单详情
  • 订单状态跟踪

4. 个人中心

  • 地址管理(增删改查)
  • 我的订单
  • 邀请好友
  • 设置

5. 其他功能

  • 实时汇率展示(港币兑人民币)
  • 数据可视化图表
  • 多语言支持(中文繁体/英文)
  • 用户数据统计

技术栈

前端框架

  • uni-app
  • Vue 3
  • vue-i18n (国际化)

UI组件

  • uni-ui
  • echarts (数据可视化)

样式

  • CSS3
  • Flex布局

数据交互

  • RESTful API
  • uni.request

本地存储

  • uni Storage

工具库

  • echarts-config (图表配置)
  • uQRCode (二维码生成)

开发环境

  • HBuilderX
  • npm

移动端H5迁移微信小程序

1. 技术调整

  • 将uni-app编译平台从H5切换为微信小程序
  • 调整为微信小程序的开发工具和环境
  • 使用微信开发者工具进行调试和预览

2. 功能适配

2.1 登录认证

  • 替换手机号登录为微信授权登录
  • 使用微信开放能力<button open-type="getUserInfo">
  • 对接微信登录API,获取用户openid和session_key
  • 保留手机号验证作为补充认证方式

2.2 支付功能

  • 替换原支付系统为微信支付
  • 接入微信支付API
  • 实现微信支付回调处理
  • 订单状态同步更新

2.3 图片处理

  • 调整图片资源到CDN
  • 使用微信小程序的图片组件
  • 优化图片加载和缓存策略

2.4 页面重构

  • 遵循微信小程序的页面结构要求
  • 调整页面路由配置到app.json
  • 适配微信小程序的生命周期
  • 优化页面渲染性能

2.5 数据存储

  • 替换uni Storage为wx.setStorage系列API
  • 合理利用小程序的缓存机制
  • 控制存储数据大小在10MB以内

3. 性能优化

3.1 首页加载优化

  • 实现分包加载
  • 预加载分包
  • 优化首页关键数据加载

3.2 体积优化

  • 控制主包大小在2MB以内
  • 合理分包,单个分包不超过2MB
  • 压缩图片和静态资源

3.3 渲染优化

  • 采用虚拟列表
  • 避免不必要的setData
  • 优化频繁更新的数据

4. 小程序特色功能扩展

4.1 微信能力整合

  • 添加转发分享功能
  • 集成微信订阅消息
  • 添加客服消息能力
  • 集成小程序码功能

4.2 营销功能

  • 实现分享裂变
  • 添加微信卡券功能
  • 支持微信直播
  • 集成微信广告组件

5. 开发规范

5.1 目录结构

5.2 开发流程

  1. 评估现有H5代码,确定可复用部分
  2. 规划小程序架构和功能模块
  3. 分批次进行功能迁移
  4. 进行充分测试
  5. 灰度发布

6. 注意事项

  • 遵循微信小程序的设计规范
  • 注意微信小程序的各种限制
  • 做好版本兼容
  • 保证数据安全
  • 做好用户体验优化
  • 注意小程序审核规范

7. 进度规划

  • 第一阶段:基础框架搭建(1周)
  • 第二阶段:核心功能迁移(2周)
  • 第三阶段:性能优化(1周)
  • 第四阶段:测试修复(1周)
  • 第五阶段:发布上线(1周)

总计开发周期:预计6周

除了使用传统的小程序页面进行跳转,我们还可以尝试将 H5 页面整合到小程序中。具体操作流程如下:

① 在小程序中使用 webview 组件,将 H5 页面引入到小程序中。

② 在 H5 页面中设置 return_url 参数,将需要返回的页面地址写入参数中。

③ 在 H5 页面中引入 JS 脚本,并使用 window.parent.postMessage 方法将 return_url 参数传递到跳转页面中。

通过整合 H5 页面,我们可以实现更为灵活和自由的跳转方式,同时也可以充分发挥 H5 页面特性,获得更好的用户体验。

国际化升级方案

1. 现状分析

  • 已有语言包文件:utils/i18n.js
  • 支持语言:英文(en)和繁体中文(zh-Hant)
  • 现存大量硬编码中文文本需要处理

2. 需要国际化处理的文件

2.1 主包页面文件

  • pages/index/
    • index.wxml: 首页文案
    • index.js: 图表配置、提示文案
  • pages/mine/
    • index.wxml: 个人中心文案
    • index.js: 操作提示
  • pages/login/
    • index.wxml: 登录页面文案
    • index.js: 表单验证提示

2.2 分包页面文件

  • packageGoods/pages/
    • detail/index/: 商品详情
    • pay/index/: 支付相关
    • typeList/index/: 商品分类
  • packageMine/pages/
    • orderList/index/: 订单列表
    • orderDetail/index/: 订单详情
    • user/index/: 用户信息
    • about/index/: 关于我们
    • addressList/index/: 地址管理

2.3 组件文件

  • components/
    • navigation-bar/: 导航栏组件
    • ec-canvas/: 图表组件配置
    • loading/: 加载提示
    • empty/: 空状态提示

3. 改造重点

3.1 静态文本处理

  • 页面标题
  • 按钮文字
  • 提示信息
  • 表单标签
  • 状态描述
  • 错误提示
  • 占位文本

3.2 动态内容处理

  • 后端返回的数据展示
  • 时间日期格式化
  • 货币金额展示
  • 状态枚举值显示

3.3 特殊场景处理

  • 图片中的文字内容
  • 第三方组件的文本配置
  • 动态生成的提示信息
  • 正则验证提示

4. 实施步骤

4.1 前期准备

  1. 完善语言包

    • 添加简体中文(zh-Hans)支持
    • 补充缺失的翻译项
    • 统一翻译键名规范
  2. 工具函数完善

    • 语言切换方法
    • 格式化工具
    • 监听器机制

4.2 语言切换功能实现

  1. 语言配置
const LANGUAGES = {
  'zh-Hant': '繁體中文',
  'zh-Hans': '简体中文',
  'en': 'English'
}

const DEFAULT_LANGUAGE = 'zh-Hant'
  1. 语言包结构
{
  'zh-Hant': {
    'language': {
      'current': '當前語言',
      'traditional': '繁體中文',
      'simplified': '简体中文',
      'english': 'English'
    }
    // ... 其他翻译
  },
  'zh-Hans': {
    'language': {
      'current': '当前语言',
      'traditional': '繁体中文',
      'simplified': '简体中文',
      'english': 'English'
    }
    // ... 其他翻译
  },
  'en': {
    'language': {
      'current': 'Current Language',
      'traditional': 'Traditional Chinese',
      'simplified': 'Simplified Chinese',
      'english': 'English'
    }
    // ... 其他翻译
  }
}
  1. 功能实现流程

    • 首页添加语言切换按钮,显示当前语言
    • 点击按钮弹出底部选择框(wx.showActionSheet)
    • 选择新语言后保存设置并刷新页面
    • 所有页面监听语言变化事件
  2. 数据持久化

    • 使用 wx.setStorageSync 存储语言选择
    • 应用启动时读取存储的语言设置
    • 默认使用繁体中文(zh-Hant)
  3. 页面刷新机制

    • 语言切换时触发页面刷新
    • 使用 getCurrentPages 获取当前页面栈
    • 重新加载当前页面数据
  4. 注意事项

    • 确保所有文本都有对应的三语言翻译
    • 处理好异步加载的文本内容
    • 考虑后端API的语言参数调整
    • 保持用户其他状态(如登录状态)
    • 优化语言切换的用户体验

4.3 具体实现步骤

  1. 更新 i18n.js

    • 添加简体中文翻译
    • 完善语言切换方法
    • 添加语言变化事件监听
  2. 修改首页

    • 添加语言切换按钮
    • 实现底部弹窗选择
    • 处理语言切换逻辑
  3. 更新页面组件

    • 使用 t 函数替换静态文本
    • 添加语言变化监听
    • 处理动态内容的翻译
  4. 系统适配

    • 调整 API 请求头部
    • 更新错误提示信息
    • 处理日期和货币格式
  5. 测试验证

    • 检查所有页面的翻译完整性
    • 验证语言切换功能
    • 测试页面刷新机制
    • 确认用户状态保持

5. 测试验证

5.1 功能测试

  • 语言切换功能
  • 页面文案展示
  • 动态内容多语言
  • 格式化功能

5.2 兼容性测试

  • 不同机型适配
  • 长文本展示
  • 特殊字符处理

5.3 性能测试

  • 语言包加载
  • 页面渲染性能
  • 内存占用

6. 注意事项

  1. 保持键名结构统一
  2. 注意文本长度适配
  3. 保持翻译的准确性
  4. 考虑性能优化
  5. 做好版本控制

7. 进度安排

  1. 前期准备:2天
  2. 公共组件改造:2天
  3. 主包页面改造:3天
  4. 分包页面改造:4天
  5. 测试验证:2天
  6. 问题修复:2天

总计:15个工作日

8. 后续优化

  1. 自动化翻译工具集成
  2. 翻译管理平台
  3. 翻译键名检查工具
  4. 未翻译内容检测
  5. 性能优化方案

9. WXS文件同步方案

9.1 i18n.wxs文件说明

  • 作用:在WXML中直接使用的语言转换函数
  • 位置:utils/i18n.wxs
  • 使用场景:模板中的文本国际化处理

9.2 同步更新内容

  1. 语言包同步

    • 将i18n.js中的translations对象同步到wxs
    • 确保键值结构完全一致
    • 保持三种语言版本同步更新
  2. 工具函数同步

    • t函数:文本翻译
    • format函数:日期格式化
    • currency函数:货币格式化
    • number函数:数字格式化
  3. 使用方式

<wxs src="../../utils/i18n.wxs" module="i18n" />
<view>{{i18n.t('key')}}</view>

9.3 注意事项

  1. WXS的语法限制

    • 不支持ES6+语法
    • 不支持外部依赖
    • 需要使用commonJS模块规范
  2. 性能考虑

    • 控制wxs文件大小
    • 优化查找算法
    • 避免复杂运算
  3. 维护策略

    • 确保js和wxs文件同步更新
    • 建立自动化同步机制
    • 做好版本管理

9.4 同步流程

  1. 语言包更新

    • 更新i18n.js
    • 同步到i18n.wxs
    • 验证键值完整性
  2. 函数更新

    • 改写现代js语法为es5
    • 处理外部依赖
    • 测试功能一致性
  3. 验证测试

    • 检查翻译完整性
    • 测试函数可用性
    • 性能压力测试

About

wechat mini programm

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published