腾讯云推出的 CloudBase AI ToolKit 正引领全栈自动化开发的新范式。它无缝集成主流 AI 编程工具,通过自然语言 Prompt 生成可直接部署的前后端应用,将开发重心从“搭骨架”转向“注入灵魂”。
本文基于 React+node.js 技术栈,将实战演示如何通过该工具链开发一个新零售在线商城 H5 应用,涵盖代码生成、云函数配置、一键部署全流程,并深入解析核心代码逻辑。
前往 腾讯云官网,注册腾讯云账号,然后登录账号。如有账号,可以直接登录。
因为我是做H5开发,所以需要做Web 应用开发的前置工作。
@cloudbase/js-sdk
让您可以在 Web 端(如 PC Web 页面、微信公众平台 H5 等)使用 JavaScript 访问 CloudBase 服务和资源。
@cloudbase/js-sdk
方式 1:通过包管理器引入
npm
npm install @cloudbase/js-sdk -S
yarn
yarn add @cloudbase/js-sdk
方式2:通过公共 CDN 引用
引入全量 SDK
<script src="//static.cloudbase.net/cloudbase-js-sdk/${version}/cloudbase.full.js"></script>
<script>
const app = cloudbase.init({
env: 'cloudbase-yyy-xxx',
clientId: '<CLIENT_ID>', // 应用 ID,选填
});
</script>
实际开发中需要将<CLIENT_ID>
替换为 Client ID(可前往 身份认证 > 开发设置中创建获取)
import cloudbase from '@cloudbase/js-sdk';
const app = cloudbase.init({
env: 'cloudbase-yyy-xxxx',
clientId: '<CLIENT_ID>', // 应用 ID,选填
});
实际开发中需要将代码中的<CLIENT_ID>
替换为 Client ID(可前往 身份认证 > 开发设置中创建获取)
初始化完成后,即可调用身份认证、数据库、云函数、云存储等能力的 API:
示例:调用 AI 能力
const model = app.ai.createModel("deepseek");
const systemPrompt =
"生成 CloudBase 云函数:
- 函数名 getProducts
- 从云数据库查询商品集合
- 支持分页参数 page 和 pageSize
- 返回字段:id, name, price, image";
const res = await model.streamText({
data: {
model: "deepseek-r1", // 指定具体的模型
messages: [
{ role: "user", content: systemPrompt },
],
},
});
// 当使用 deepseek-r1 时,模型会生成思维链内容
for await (let data of res.dataStream) {
// 打印思维链内容
const think = (data?.choices?.[0]?.delta)?.reasoning_content;
if (think) {
console.log(think);
}
// 打印生成文本内容
const text = data?.choices?.[0]?.delta?.content;
if (text) {
console.log(text);
}
}
云开发 AI 开发套件是一套开发工具,可以帮助开发者快速在小程序、web等应用里面连接用户和 AI 服务。
除了前面接入 SDK 的方式,还可以直接使用 CloudBase 提供的页面版 AI 开发套件。
我选择了 deepseek 大模型:
生成一个 React 商品列表页组件:
- 从云函数获取商品数据
- 支持分页(每页10条)
- 卡片式布局,包含图片、名称、价格
- 实现下拉加载更多
输入Prompt,AI便可以自动生成你想要的功能:
import React, { useState, useEffect } from 'react';
import { cloud } from '@cloudbase/js-sdk';
const ProductList = () => {
const [products, setProducts] = useState([]);
const [page, setPage] = useState(1);
const [loading, setLoading] = useState(false);
// 调用云函数获取商品数据
const fetchProducts = async () => {
setLoading(true);
try {
const res = await cloud.callFunction({
name: 'getProducts',
data: { page, pageSize: 10 }
});
setProducts(prev => [...prev, ...res.result.data]);
} catch (err) {
console.error('获取商品失败:', err);
} finally {
setLoading(false);
}
};
useEffect(() => {
fetchProducts();
}, [page]);
// 滚动加载更多
const handleScroll = () => {
if (window.innerHeight + document.documentElement.scrollTop !==
document.documentElement.offsetHeight || loading) return;
setPage(prev => prev + 1);
};
useEffect(() => {
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);
}, []);
return (
<div className="product-grid">
{products.map(product => (
<div key={product.id} className="product-card">
<img src={product.image} alt={product.name} />
<h3>{product.name}</h3>
<p>¥{product.price.toFixed(2)}</p>
</div>
))}
{loading && <div className="loading">加载中...</div>}
</div>
);
};
export default ProductList;
模块 | 说明 |
---|---|
cloud.callFunction | 调用名为 getProducts 的云函数,传递分页参数 |
滚动加载 | 通过 handleScroll 监听滚动事件,触达底部时更新 page 状态触发重新请求 |
数据拼接 | setProducts(prev => [...prev, ...res.result.data]) 实现数据增量更新 |
错误处理 | try/catch 包裹云函数调用,避免页面崩溃 |
生成一个 React 购物车云同步:
- 从云函数获用户取购物车数据
- 实时购物车数据更新
// cloud/functions/syncCart.js
const cloud = require('@cloudbase/node-sdk');
exports.main = async (event) => {
const { userId, cartItems } = event;
const app = cloud.init({ env: process.env.ENV_ID });
try {
// 原子更新购物车
await app.database().collection('user_carts').doc(userId).update({
items: cartItems,
updateTime: new Date()
});
// 发布实时更新事件
await app.callFunction({
name: 'pushNotification',
data: {
userId,
type: 'cart_update'
}
});
return { code: 0 };
} catch (error) {
return { code: 500, msg: error.message };
}
};
process.env.ENV_ID
自动注入环境变量。生成一个 React 支付链路:
- 下单详情页
- 支付聚合页,支持多种支付方式
- 支付成功页
- 订单列表页
- 从元函数获取用户信息和商品信息
// cloud/functions/createPayment.js
const cloud = require('@cloudbase/node-sdk');
const tenpay = require('tenpay');
exports.main = async (event) => {
const { orderId, totalFee, openId } = event;
const app = cloud.init();
// 初始化支付配置
const pay = new tenpay({
appid: process.env.WX_APPID,
mchid: process.env.WX_MCHID,
partnerKey: process.env.WX_KEY
});
// 生成支付参数
const result = await pay.getPayParams({
out_trade_no: orderId,
body: '商城订单支付',
total_fee: totalFee,
openid: openId
});
// 记录支付请求
await app.database().collection('payment_logs').add({
orderId,
params: result,
createTime: new Date()
});
return result;
};
out_trade_no
保证全局唯一性。生成 CloudBase 云函数:
- 函数名 getProducts
- 从云数据库查询商品集合
- 支持分页参数 page 和 pageSize
- 返回字段:id, name, price, image
const cloud = require('@cloudbase/node-sdk');
const app = cloud.init({ env: process.env.ENV_ID });
exports.main = async (event) => {
const { page = 1, pageSize = 10 } = event;
const db = app.database();
const collection = db.collection('products');
try {
const res = await collection
.field({ id: true, name: true, price: true, image: true })
.skip((page - 1) * pageSize)
.limit(pageSize)
.get();
return { code: 0, data: res.data };
} catch (err) {
return { code: 500, msg: '数据库查询失败', error: err };
}
};
参数 | 类型 | 作用 |
---|---|---|
skip() | 方法 | 跳过指定数量文档(实现分页) |
limit() | 方法 | 限制返回文档数量 |
field() | 方法 | 指定返回字段,避免传输冗余数据 |
process.env.ENV_ID | 环境变量 | 自动注入部署时的云环境 ID |
CloudBase AI ToolKit 通过三项革新显著提升开发效率:
在本次新零售 H5 商城的实战中,我们仅通过 5 条核心 Prompt 便完成了商品展示系统的开发与部署,验证了 AI ToolKit 在“从 1 到 N”场景下的工程价值。未来,随着工具链对复杂状态管理(如购物车、订单)的深度支持,AI 驱动的全栈开发将成为中小型项目的首选方案。
GitHub 参考:CloudBase-AI-ToolKit 开源仓库 免费环境申请:腾讯云开发控制台
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。