tiny-vue_version0/examples/sites/demos/pc/webdoc/aui-adapter.md

208 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 适配 AUI
### 依赖映射表
目前 TinyVue 已经兼容 AUI只需替换一下包名和配置一下样式主题即可获得于 AUI 一致的体验,以下是 TinyVue 包和 AUI 包的映射关系
| TinyVue 包 | AUI 包 |
| ------------------------ | --------------------- |
| @opentiny/vue | @aurora/vue |
| @opentiny/vue-renderless | @aurora/renderless |
| @opentiny/vue-theme | @aurora/theme |
| @opentiny/vue-theme-saas | @aurora/theme-sass |
| @opentiny/vue-icon | @aurora/vue-icon |
| @opentiny/vue-icon-saas | @aurora/vue-icon-saas |
### 使用 Saas 主题
#### 背景
- 随着应用生态特别是手机应用生态的繁荣,以及多样化设备生态的发展,`多端`、`多主题`被提上日程;
- 原有 AUI 推出的主题方案过于臃肿(用户定制主题需要设置一堆的  `cssvar`  变量,因为颜色没有统一,配置多主题的门槛也比较高),后期会基于  [tailwindcss](https://github.com/tailwindlabs/tailwindcss)  对主题变量进行收拢(简化开发者配置)以及工程化改造,使得定制多主题更加简单。目前业内比较成熟的主题方案  [daisyui](https://github.com/saadeghi/daisyui)。
鉴于以上原因, 推出  `SaaS`  主题,如果想体验  `SaaS`  主题可以按照下述文档,进行打包配置更改:
#### 方法一
方案一需要额外安装以下依赖:
- `@opentiny/vue-theme-saas`  主题会对现有组件样式进行细微调整,不会影响原有 DOM 结构以及 API 。
- `@opentiny/vue-icon-saas`  `SaaS`  主题风格配套的 icon 图标组件。
- `@opentiny/vue-design-saas`  `SaaS`  主题风格配套的设计规范配置。
一、安装 SaaS 主题包:
```shell
yarn add @opentiny/vue-theme-saas @opentiny/vue-icon-saas @opentiny/vue-design-saas
# 或者 npm install @opentiny/vue-theme-saas @opentiny/vue-icon-saas @opentiny/vue-design-saas
```
二、切换到 SaaS 主题包:
```js
// (webpack) vue.config.js
module.exports = {
chainWebpack: (config) => {
config.resolve.alias.set('@opentiny/vue-theme', '@opentiny/vue-theme-saas')
config.resolve.alias.set('@opentiny/vue-icon', '@opentiny/vue-icon-saas')
}
}
// (vite) vite.config.js
export default defineConfig({
resolve: {
alias: {
'@opentiny/vue-theme': '@opentiny/vue-theme-saas',
'@opentiny/vue-icon': '@opentiny/vue-icon-saas'
}
}
})
```
三、切换到 Saas 设计规范配置:
```html
<script setup>
import { ConfigProvider } from '@opentiny/vue'
import designSaasConfig from '@opentiny/vue-design-saas'
</script>
<template>
<!-- 注入saas设计规范配置 -->
<config-provider :design="designSaasConfig">
<my-app></my-app>
</config-provider>
</template>
```
### 方法二
方法二需要额外安装以下依赖:
- `@opentiny/vue-theme-saas`  主题会对现有组件样式进行细微调整,不会影响原有 DOM 结构以及 API 。
- `@opentiny/vue-icon-saas`  `SaaS`  主题风格配套的 icon 图标组件。
- `@opentiny/vue-common-saas`  `SaaS`  主题风格配套的适配层,内联了方法一的`@opentiny/vue-design-saas`。
一、安装 SaaS 主题包:
```shell
yarn add @opentiny/vue-theme-saas @opentiny/vue-icon-saas @opentiny/vue-common-saas
# 或者 npm install @opentiny/vue-theme-saas @opentiny/vue-icon-saas @opentiny/vue-common-saas
```
二、切换到 SaaS 主题包:
```js
// (webpack) vue.config.js
module.exports = {
chainWebpack: (config) => {
config.resolve.alias.set('@opentiny/vue-theme', '@opentiny/vue-theme-saas')
config.resolve.alias.set('@opentiny/vue-icon', '@opentiny/vue-icon-saas')
config.resolve.alias.set('@opentiny/vue-common', '@opentiny/vue-common-saas')
}
}
// (vite) vite.config.js
export default defineConfig({
resolve: {
alias: {
'@opentiny/vue-theme': '@opentiny/vue-theme-saas',
'@opentiny/vue-icon': '@opentiny/vue-icon-saas',
'@opentiny/vue-common': '@opentiny/vue-common-saas'
}
}
})
```
## 多模式介绍
TinyVue 提供了 PC 和 Mobile 组件库,两套组件库对外是同一份依赖`@opentiny/vue`,同名组件通过`tiny_mode`切换组件模式。
针对 SaaS 业务场景TinyVue 提供了基于`tailwind`实现的多端组件,
在 TinyVue 基础上新增`多端模式`,支持业务切换同名组件,同名组件默认情况下是`桌面模式`即`PC 组件`。
### 模式分类
AUI 组件库提供了三种组件模式:`桌面模式`、`移动模式`、`多端模式`
| 模式 | 模式介绍 | 模式配置 |
| -------- | --------- | ------------ |
| 桌面模式 | 纯 PC | pc |
| 移动模式 | 纯 mobile | mobile |
| 多端模式 | 多端一致 | mobile-first |
### 模式切换
AUI 组件模式设置优先级
`单组件切换` > `模式透传` > `全局切换` > `组件默认模式`
#### 单组件切换
可在组件标签上配置`tiny_mode`属性,指定组件模式,就会选择对应模板渲染:
- 桌面模式:`pc`
- 移动模式:`mobile`
- 多端模式:`mobile-first`
参考示例如下:
```html
<tiny-button tiny_mode="mobile-first">默认按钮</tiny-button>
```
#### 全局切换
通过在 Vue 的原型上全局设置`tiny_mode`,可以指定所有同名组件的默认模式。
在项目入口  `src/main.js`  文件中导入 Vue 依赖后,增加如下配置:
```js
// Vue 2.0
Vue.prototype.tiny_mode = { value: 'mobile-first' }
// Vue 3.0
app.config.globalProperties.tiny_mode = { value: 'mobile-first' }
```
#### 模式透传
如果想在页面部分区域切换模式,如卡片级控制,
可以在外层 AUI 组件上添加`tiny_mode_root`属性,透传当前 AUI 组件的`tiny_mode`配置到所有子级 AUI 组件上,
参考 demo 示例如下:
```html
<template>
<div>
<tiny-layout>
<tiny-row tiny_mode="pc" tiny_mode_root>
<tiny-button>PC按钮</tiny-button>
<tiny-button type="primary" native-type="submit">主要按钮</tiny-button>
<tiny-button type="success">成功按钮</tiny-button>
<tiny-button type="info">信息按钮</tiny-button>
<tiny-button type="warning">警告按钮</tiny-button>
<tiny-button type="danger">危险按钮</tiny-button>
</tiny-row>
<tiny-row tiny_mode="mobile-first" tiny_mode_root>
<tiny-button>多端按钮</tiny-button>
<tiny-button type="primary" native-type="submit">主要按钮</tiny-button>
<tiny-button type="success">成功按钮</tiny-button>
<tiny-button type="info">信息按钮</tiny-button>
<tiny-button type="warning">警告按钮</tiny-button>
<tiny-button type="danger">危险按钮</tiny-button>
</tiny-row>
</tiny-layout>
</div>
</template>
<script>
import { Button, Layout, Row } from '@opentiny/vue'
export default {
components: {
TinyButton: Button,
TinyLayout: Layout,
TinyRow: Row
}
}
</script>
```