OnebayUI (一个vue3编写的移动Web UI库)

301 阅读3分钟

什么是OnebayUI?

OnebayUI是使用vue3编写的移动Web UI库,它可以帮助您快速轻松地编写vue3应用程序。
所有组件均使用tsx编写。
文档中的所有组件demo均由vue模板和tsx编写。
Onebay大部分组件样式沿用了小程序UI库taro-ui样式

项目第一次提交是在2020-08-28,当时"vue"是"^3.0.0-rc.1",当时比较少是vue3的Ui库,所以就有了一边学习一边做一个开源Ui库的想法。

Button 示例

Switch 示例

更多示例可以查看Onebay文档

特性

  • 支持按需加载
  • 支持自定义主题

安装

npm i onebay-ui -S

or

yarn add onebay-ui

使用

import { defineComponent } from 'vue'
import { Button } from 'onebay-ui'

export default defineComponent({
  setup() {
    return () => {
      return (
        <Button>Submit</Button>
      )
    }
  }
})

导入组件样式

仅导入使用的组件的样式(推荐)

import { Button } from 'onebay-ui'
import 'onebay-ui/dist/style/button.css'

与vite一起使用

如果您的应用是由vite创建的,则强烈建议您在项目中使用vite插件vite-plugin-imp,该插件可以自动导入组件 样式供您选择。

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vitePluginImp from 'vite-plugin-imp'

export default defineConfig({
  plugins: [
    vue(),
    vitePluginImp({
      libList: [
        {
          libName'onebay-ui',
          style(name) {
            return `onebay-ui/dist/style/${name}.css`
          }
        }
      ]
    })
  ]
})

查看示例 codesandbox

与vue-cli一起使用

如果您的应用是由vue-cli创建的,则可以使用babel-plugin-import,如下所示:

module.exports = {
  presets: ["@vue/cli-plugin-babel/preset"],
  plugins: [
    [
      "import",
      {
        libraryName"onebay-ui",
        libraryDirectory"es",
        stylename => {
          return `${name.replace("/es/""/dist/style/")}.css`;
        }
      }
    ]
  ]
};

导入所有组件样式(不推荐)

import 'onebay-ui/dist/style/index.css'

自定义主题

您需要在项目中注入scss变量。

与vite一起使用

// vite.vonfig.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vitePluginImp from 'vite-plugin-imp'

export default defineConfig({
  esbuild: {
    jsxFactory'h',
    jsxFragment'Fragment',
    jsxInject"import { h } from 'vue';"
  },
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `
          $color-brand: #ffc701;
          $color-brand-light: #ffd541;
          $color-brand-dark: #cc9f01;
        `
      }
    }
  },
  plugins: [
    vue(),
    vitePluginImp({
      libList: [
        {
          libName'onebay-ui',
          style(name) {
            return `onebay-ui/src/style/components/${name}.scss`
          }
        }
      ]
    })
  ]
})

查看源码 onebay-ui-custom-theme-with-vite

与vue-cli一起使用

module.exports = {
  css: {
    loaderOptions: {
      sass: {
        additionalData: `
          $color-brand: #ffc701;
          $color-brand-light: #ffd541;
          $color-brand-dark: #cc9f01;
        `
      }
    }
  }
}

查看源码 onebay-ui-custom-theme-with-vue-cli