Skip to content

xinghui-tech/iox-ui-example

Repository files navigation

iox-ui

logo

IOX UI

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

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

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

安装

安装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。