小程序一体化
小程序一体化是 Midway.js 团队与 Rax 团队合作的产品,通过 Midway.js 对一体化的支持与 Rax 对小程序的支持,我们可以为小程序带去更好的研发体验。

初始化#
在命令行输入以下命令,即可快速完成小程序一体化项目的创建。
npm init rax选择 App -> 小程序云开发一体化应用即可。
本地开发#
以微信小程序开发为例
项目创建完成后,进入项目根目录。
配置 AppId#
小程序的运行与预览依赖于 AppId(获取方式),获取到 AppID 时,你可以打开项目根目录的 build.json 文件,将 AppId 配置在此。
{ "targets": [ //... ], "plugins": [ //... ], "wechat-miniprogram": { "nativeConfig": { "appid": "<你的 AppID>", "name": "nativeConfig 是用户配置 project.config.json 的地方" } }}本地启动#
运行如下命令。
npm start
本地服务启动后将输出以下日志。

目录结构#
整体目录结构如下
- src:前端开发目录
- src/cloud:云开发目录
- src/cloud/functions:云函数目录

使用小程序开发工具预览#
打开微信小程序开发者工具,选择导入项目,微信小程序的目录是 <项目根目录>/build/wechat-miniprogram.

你可以在此处预览项目,并进行函数的部署与发布工作。
开发函数#
使用 Midway Hooks 可以方便的开发云函数。
以获取 OpenId 为例。
export const getOpenId = async () => { const wechatContext = cloud.getWXContext();
return { openId: wechatContext.OPENID, };};
前端调用代码(需要提前安装 rax-use-async-effect 依赖)
import { createElement, useState } from 'rax';import useAsyncEffect from 'rax-use-async-effect';import View from 'rax-view';import Text from 'rax-text';import styles from './index.module.css';import Logo from '../../components/Logo';import { hello, getOpenId } from '@/cloud/function';
export default function Home() { const [message, setMessage] = useState(''); const [openId, setOpenId] = useState('');
useAsyncEffect(async () => { const message = await hello('Rax', 'Midway.js'); setMessage(message);
const { openId } = await getOpenId(); setOpenId(`${openId!.substring(0, 3)}***************${openId!.substring(14)}`); }, []);
return ( <View className={styles.homeContainer}> <Logo uri="//gw.alicdn.com/tfs/TB1MRC_cvb2gK0jSZK9XXaEgFXa-1701-1535.png" /> <Text className={styles.homeTitle}>Welcome to Your Rax App</Text> <Text className={styles.homeInfo}>Message: {message}</Text> <Text className={styles.homeInfo}>OpenId: {openId}</Text> </View> );}
Midway Hooks 相关的语法和文档可参考: 介绍
函数部署#
云开发的函数需要部署后才能调用,你可以在生成的 cloudfunctions 目录下,通过右键点击上传部署函数。

部署完成后重新编译项目即可查看函数运行结果,更多的云开发指导,可以参考官方文档:
本地调试#
你可以方便的通过小程序开发工具来进行函数调试,如下图所示。

参考文档:
项目部署#
在完成开发后,即可开始发布小程序,后续参考云开发平台的发布文档即可。
小程序发布: