H5 业务项目
pnpm dlx @varo-ui/cli add --target h5 components/button将可编辑的 Vue 组件源码与依赖安装到业务仓库。
这里是 Varo 面向使用者的跨运行时展示页:先确认采用路径,再区分浏览器实时交互、浏览器中的 Weapp 契约预览,以及微信开发者工具中的已编译证据。仓库内的 playground 仍是维护者 QA surface,不是公开安装入口。
pnpm dlx @varo-ui/cli add --target h5 components/button将可编辑的 Vue 组件源码与依赖安装到业务仓库。
pnpm dlx @varo-ui/cli add --target weapp components/button将 WXML-safe 的目标专用 Wevu SFC 与依赖安装到业务仓库。
pnpm add @varo-ui/h5在明确需要统一升级时消费已发布组件包。
Registry 是默认采用路径;从安装指南开始,再按目标生成源码。
下方组件可以直接操作。H5 标签运行 @varo-ui/h5 的真实浏览器组件;切换到小程序后,标签会明确变为 Weapp Contract Preview,用于检查公共 API 与视觉契约,不冒充小程序运行时。
下方图片由 weapp-vite 构建后的 Block 页面通过微信开发者工具自动化采集。证据快照日期为 2026-08-28;可检查采集脚本和代表性原始图片。每张卡片也会直接链接自己的原始图片。
H5 目标只切换安装命令与使用代码;当前仓库没有发布对应的 H5 图片时,卡片会继续明确标注图片为 Weapp DevTools Verified,不会暗示 H5 选择改变了截图。
REGISTRY BLOCKS
login-form手机号、密码、记住状态、错误与加载反馈。
pnpm dlx @varo-ui/cli add --target weapp blocks/login-formsrc/components/blocks/login-form.vue<script setup lang="ts">
import LoginForm from '@/components/blocks/login-form.vue'
function handleLogin(credentials: unknown) {
console.log(credentials)
}
</script>
<template>
<LoginForm @submit="handleLogin" />
</template>profile-card头像、身份状态、统计信息与编辑动作。
pnpm dlx @varo-ui/cli add --target weapp blocks/profile-cardsrc/components/blocks/profile-card.vue<script setup lang="ts">
import ProfileCard from '@/components/blocks/profile-card.vue'
const user = { name: 'Varo User', status: 'Active' }
const stats = [{ label: 'Orders', value: 12 }]
function openEditor() {}
</script>
<template>
<ProfileCard :user="user" :stats="stats" @edit="openEditor" />
</template>profile-edit姓名、手机号、城市搜索、简介与提交状态。
pnpm dlx @varo-ui/cli add --target weapp blocks/profile-editsrc/components/blocks/profile-edit.vue<script setup lang="ts">
import ProfileEdit from '@/components/blocks/profile-edit.vue'
const cities = [{ label: '杭州', value: 'hangzhou' }]
function saveProfile(profile: unknown) {
console.log(profile)
}
</script>
<template>
<ProfileEdit :cities="cities" @submit="saveProfile" />
</template>product-list商品、库存、价格、空状态、选择与加购动作。
pnpm dlx @varo-ui/cli add --target weapp blocks/product-listsrc/components/blocks/product-list.vue<script setup lang="ts">
import ProductList from '@/components/blocks/product-list.vue'
const products = []
function addToCart(payload: unknown) {
console.log(payload)
}
</script>
<template>
<ProductList :items="products" @add-to-cart="addToCart" />
</template>order-filter多状态选择、金额区间校验、重置与应用事件。
pnpm dlx @varo-ui/cli add --target weapp blocks/order-filtersrc/components/blocks/order-filter.vue<script setup lang="ts">
import OrderFilter from '@/components/blocks/order-filter.vue'
function loadOrders(filters: unknown) {
console.log(filters)
}
</script>
<template>
<OrderFilter :result-count="128" @apply="loadOrders" />
</template>agent-chat增量 Markdown、工具状态、审批与输入组合。
pnpm dlx @varo-ui/cli add --target weapp blocks/agent-chatsrc/components/blocks/agent-chat.vue<script setup lang="ts">
import AgentChat from '@/components/blocks/agent-chat.vue'
const messages = [{ id: 'welcome', role: 'assistant', content: '你好' }]
function runAgent(prompt: string) {
console.log(prompt)
}
</script>
<template>
<AgentChat :messages="messages" @submit="runAgent" />
</template>retail-home搜索、分类、精选商品与购物车入口。
pnpm dlx @varo-ui/cli add --target weapp blocks/retail-homesrc/components/blocks/retail-home.vue<script setup lang="ts">
import RetailHome from '@/components/blocks/retail-home.vue'
const categories = []
const products = []
</script>
<template>
<RetailHome :categories="categories" :products="products" />
</template>retail-category双栏分类导航、商品网格与加购动作。
pnpm dlx @varo-ui/cli add --target weapp blocks/retail-categorysrc/components/blocks/retail-category.vue<script setup lang="ts">
import { shallowRef } from 'wevu'
import RetailCategory from '@/components/blocks/retail-category.vue'
const activeId = shallowRef('women')
const categories = []
const products = []
</script>
<template>
<RetailCategory v-model:active-id="activeId" :categories="categories" :products="products" />
</template>retail-cart商品选择、数量、合计、空状态与结算。
pnpm dlx @varo-ui/cli add --target weapp blocks/retail-cartsrc/components/blocks/retail-cart.vue<script setup lang="ts">
import RetailCart from '@/components/blocks/retail-cart.vue'
const cartItems = []
const total = 0
function checkout() {}
</script>
<template>
<RetailCart :items="cartItems" :total="total" @checkout="checkout" />
</template>retail-product-detail商品主图、价格、库存、数量、加购与购买。
pnpm dlx @varo-ui/cli add --target weapp blocks/retail-product-detailsrc/components/blocks/retail-product-detail.vue<script setup lang="ts">
import { shallowRef } from 'wevu'
import RetailProductDetail from '@/components/blocks/retail-product-detail.vue'
const quantity = shallowRef(1)
const product = {}
</script>
<template>
<RetailProductDetail v-model:quantity="quantity" :product="product" />
</template>retail-checkout地址、商品、优惠、发票、金额与提交订单。
pnpm dlx @varo-ui/cli add --target weapp blocks/retail-checkoutsrc/components/blocks/retail-checkout.vue<script setup lang="ts">
import RetailCheckout from '@/components/blocks/retail-checkout.vue'
const address = {}
const items = []
const total = 0
function submitOrder() {}
</script>
<template>
<RetailCheckout :address="address" :items="items" :total="total" @submit="submitOrder" />
</template>retail-order-list订单状态、商品摘要与履约操作。
pnpm dlx @varo-ui/cli add --target weapp blocks/retail-order-listsrc/components/blocks/retail-order-list.vue<script setup lang="ts">
import RetailOrderList from '@/components/blocks/retail-order-list.vue'
const orders = []
function handleOrder(order: unknown) {
console.log(order)
}
</script>
<template>
<RetailOrderList :orders="orders" @action="handleOrder" />
</template>retail-profile会员信息、订单、地址、优惠券与售后入口。
pnpm dlx @varo-ui/cli add --target weapp blocks/retail-profilesrc/components/blocks/retail-profile.vue<script setup lang="ts">
import RetailProfile from '@/components/blocks/retail-profile.vue'
const orderCounts = {}
</script>
<template>
<RetailProfile name="Varo User" :points="2680" :order-counts="orderCounts" />
</template>H5 Live:当前页面中的真实浏览器组件与交互Weapp Contract Preview:浏览器渲染的目标契约,不是微信运行时Weapp DevTools Verified:已编译小程序页面的开发者工具证据weapp-vite 负责组件 JSON、复杂列表 key、类型声明与目标产物;wevu 是 @varo-ui/weapp 的运行时 peerweapp-tailwindcss 在构建链中转译 class;原生 hover-class 表达小程序按压反馈