IOX UI参考Vant(轻量、可靠的移动端 Vue 组件库)的设计和实现,在微信小程序组件库版本vant-weapp基础上实现的uniapp版本。

针对uniapp的一些特性进行了修改和调整,同时增加一些新的组件,对一些组件功能也有所增强。

当前参考的vant-weapp版本为:1.5.0。

使用样例

iox-ui-example

安装

安装UI库:

yarn add @zhuyin/iox-ui

安装微信typescript类型定义:

yarn add -D @zhuyin/mp-api-typings

安装less:

yarn add -D less less-loader

增加Vue对TypeScript 支持

UNIAPP使用

参考uniapp的easycom配置。

引入

pages.json

{
  //...
  "easycom": {
		"autoscan": true,
		"custom": {
			"iox-(.*)": "@zhuyin/iox-ui/lib/widget/iox-$1/iox-$1.vue"
		}
  }
  //...
}

使用

<template>
    <view>
      <iox-icon name="loading" />
    </view>
</template>

<script>
    // 这里不用import引入,也不需要在components内注册iox-icon组件。template里就可以直接用
    export default {
        data() {
            return {

            }
        }
    }
</script>

加载字体图标

全局加载

App.vue

export default Vue.extend({
  mpType: 'app',
  globalData: {
    ioxIconUrl: 'https://res.oss.zhuyin.club/assets/fonts/fontawesome-webfont.woff'
  },
  onLaunch(options: App.LaunchShowOption) {
    console.log("App Launch");
    const fontUrl = (this as any).globalData.ioxIconUrl;
    wx.loadFontFace({
      global: true,
      family: 'FontAwesome',
      source: `url("${fontUrl}")`,
      success: console.log,
      fail: console.warn
    });
    this.checkUpdate();
  }
}

每个页面加载:

index.vue

export default Vue.extend({
    created() {
        const app = getApp().$vm;
        const info = getSystemInfoSync();
        if (info && compareVersion(info.SDKVersion, '2.10.0') < 0) {
            const fontUrl = app.globalData.ioxIconUrl;
            uni.loadFontFace({
                family: 'FontAwesome',
                source: `url("${fontUrl}")`,
                success: console.log,
                fail: console.warn
            });
        }
    }
}

加载样式

创建一个空文件

/src/sytle/iox-ui.less

全局加载

App.vue

<style lang="less">
@import "~@zhuyin/iox-ui/lib/style/index.less";
</style>

参考手册

logohttps://youzan.github.io/vant/

说明: 由于小程序原生实现和Vue实现会有一些差异,差异化的使用请参考源代码里面的demo。

组件一览表

组件 Vant Weapp IOX UI 支付宝 备注 贡献者
基础组件          
Button 按钮   老糊涂
Button Group 按钮组 ☑️ GoodActions 商品导航 老糊涂
Cell 单元格   老糊涂
Icon 图标 使用 Font Awesome字体图标 老糊涂
Image 图片   老糊涂
Layout 布局   老糊涂
Popup 弹出层   老糊涂
Transition 动画   老糊涂
           
表单组件          
Calendar 日历 支持日期添加图标 老糊涂
Checkbox 复选框   老糊涂
Datetime Picker 时间选择 ☑️ 支付宝存在滚动问题 老糊涂
Field 输入框   老糊涂
Picker 选择器 ☑️ 支付宝存在滚动问题 老糊涂
Radio 单选框   老糊涂
Rate 评分   春雨
Search 搜索   春雨
Slider 滑块   春雨
Stepper 步进器   春雨
Switch 开关   老糊涂
Uploader 文件上传   老糊涂
           
反馈组件          
Action Sheet 上拉菜单   春雨
Dialog 弹出框 遵从Vue使用方式 老糊涂
Dropdown Menu 下拉菜单   老糊涂
Loading 加载   老糊涂
Mask 蒙板     老糊涂
Notify 消息通知   春雨
Overlay 遮罩层   老糊涂
Share Sheet 分享面板   春雨
Swipe Cell 活动单元格   春雨
Toast 轻提示 遵从Vue使用方式 老糊涂
           
展示组件          
Circle 进度条 ☑️ ☑️   老糊涂
Collapse 折叠面板   老糊涂
Countdown 倒计时   老糊涂
Divider 分割线   老糊涂
Empty 空状态   老糊涂
NoticeBar 通告栏   老糊涂
Panel 面板   老糊涂
Progress 进度条   老糊涂
Skeleton 骨架屏   老糊涂
Steps 步骤条   春雨
Sticky 粘性布局   老糊涂
Tag 标记   老糊涂
Tree Select 分类选择   老糊涂
           
导航组件          
Grid 宫格   老糊涂
IndexBar 索引栏   老糊涂
Sidebar 侧边导航   老糊涂
NavBar 导航栏   老糊涂
Tab 标签页   老糊涂
Tabbar 标签栏   老糊涂

LICENSE

MIT