需补全 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
// 安装 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 配置
pages/robotaxi/ 目录下,注意将修改和新增限制在此目录内,方便迁移src/robotaxi 子包目录中pages/robotaxi/ 和 src/robotaxi 目录以外文件只能新增,不要修改已有文件(配置文件除外)request.ts 进行统一处理,request 已经对接口协议和登录态传递进行了统一封装所有接口请求请统一通过 src/utils/request.ts 封装的方法发起。
import request from '@/utils/request';
// 发起 POST 请求(默认)
request({
url: '/api/xxx',
payload: { foo: 'bar' }
}, true) // 第二个参数 true 表示需要校验登录态
.then(data => {
// 业务数据处理
})
.catch(err => {
// 错误处理(如需自定义)
});
// 如需 GET 或自定义 header,可传递 method/extraHeader 等参数
建议所有业务接口均通过该方法发起,避免重复造轮子和遗漏登录校验、签名等安全逻辑。
后端需要接入用户中心提供的验签 sdk
otp 标识确定用户是否已登录,具体可以参考 checkOtp 方法/pages/user/login 页面进行登录,具体可以参考 checkOtp 方法otp 已过期或实效,则通过 request.ts 封装的方法自动跳转到登录页进行续登或重新登录