小鹏小程序

启动配置

需补全 config 目录下 dev.js/prod.js 的必填appId/密钥
const XP_APPID_MAP = { weapp: '"xxxxxxx"', // 用户中心登录appId }; const XP_SECRET_MAP = { weapp: '"xxxxxxx"', // 用户中心登录密钥 }; const PLATFORM_APPID_MAP = { weapp: '"xxxxxxx"', // 微信小程序平台 appId };

补全 project.config.json 文件的 appId
"packOptions": { "ignore": [], "include": [] }, "appid": "xxxxxxxxxxxxx", "projectname": "xp-robotaxi-miniprogram", "libVersion": "3.13.0"

环境依赖

Taro@3.4.9
node@14.x

建议使用 nvm 进行 node 版本管理

nvm 安装文档

// 安装 node@14.x
nvm install v14.21.3

// 切换node版本
nvm use 14

安装依赖

// 安装 cli
npm install -g @tarojs/cli@3.4.9

// 安装本地依赖
npm install

运行命令

// 本地开发(预发环境)
npm run dev:weapp

// 本地开发(切换线上环境变量)
npm run dev:weapp_prod

// 本地预览(开启压缩模式)
npm run preview:weapp

// 生产发布
npm run build:weapp

核心文件结构说明

项目主要目录与文件结构如下:

├── config/                # 环境配置(如 appId、密钥等)
├── src/
│   ├── app.config.ts      # 小程序全局页面、分包、tabBar 配置
│   ├── app.tsx           # 应用入口,初始化全局逻辑、store
│   ├── actions/          # redux action 定义
│   ├── reducers/         # redux reducer 定义
│   ├── store/            # redux store 配置
│   ├── constants/        # 常量、配置项(如 api、app)
│   ├── utils/            # 工具方法(如 request、tools、jump 等)
│   ├── components/       # 通用 UI 组件
│   ├── pages/            # 主包页面(如 map、user、xpeng)
│   │   └── robotaxi/     # robottaxi 首页
│   └── robotaxi/         # 业务子包,robotaxi 相关页面与组件
├── package.json          # 依赖与脚本
├── project.config.json   # 微信小程序项目配置
├── tsconfig.json         # TypeScript 配置
├── babel.config.js       # Babel 配置

robotaxi 开发约束

  • robotaxi 首页放 pages/robotaxi/ 目录下,注意将修改和新增限制在此目录内,方便迁移
  • 除首页外,所有 robotaxi 相关代码统一放在 src/robotaxi 子包目录中
  • 除 pages/robotaxi/ 和 src/robotaxi 目录以外文件只能新增,不要修改已有文件(配置文件除外)
  • 所有接口请求通过 request.ts 进行统一处理,request 已经对接口协议和登录态传递进行了统一封装

网络请求使用说明

所有接口请求请统一通过 src/utils/request.ts 封装的方法发起。

核心逻辑

  • 封装了 Taro.request,自动处理请求头、签名、登录态校验、异常处理等。
  • 支持自动跳转登录页(如登录态失效),无需手动处理。
  • 支持 payload 排序、签名、设备信息、用户信息等自动注入。

基本用法

import request from '@/utils/request';

// 发起 POST 请求(默认)
request({
  url: '/api/xxx',
  payload: { foo: 'bar' }
}, true) // 第二个参数 true 表示需要校验登录态
  .then(data => {
    // 业务数据处理
  })
  .catch(err => {
    // 错误处理(如需自定义)
  });

// 如需 GET 或自定义 header,可传递 method/extraHeader 等参数

建议所有业务接口均通过该方法发起,避免重复造轮子和遗漏登录校验、签名等安全逻辑。
后端需要接入用户中心提供的验签 sdk


登录相关说明

  • 页面通过检查 storage 中是否缓存 otp 标识确定用户是否已登录,具体可以参考 checkOtp 方法
  • 用户没有登录可以通过跳转到 /pages/user/login 页面进行登录,具体可以参考 checkOtp 方法
  • 如果 otp 已过期或实效,则通过 request.ts 封装的方法自动跳转到登录页进行续登或重新登录