tiny-vue/examples/sites/demos/pc/webdoc/import-components.md

226 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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.

<!--anchor:on-->
## 引入组件
`TinyVue` 支持自动导入、多组件引入、单组件引入以及完整引入四种方式。
### 自动导入(推荐)
首先你需要安装 `@opentiny/unplugin-tiny-vue` 这款插件。
```bash
npm i @opentiny/unplugin-tiny-vue -D
```
然后把以下代码插入到你项目的 `Vite``Webpack` 配置文件中。
Vite
```ts
// vite.config.ts
import autoImportPlugin from '@opentiny/unplugin-tiny-vue'
export default {
plugins: [autoImportPlugin('vite')]
}
```
Webpack
```js
// webpack.config.js
const autoImportPlugin = require('@opentiny/unplugin-tiny-vue')
module.exports = defineConfig({
configureWebpack: {
plugins: [autoImportPlugin('webpack')]
}
})
```
这样你就能直接在项目中使用 TinyVue 的组件,这些组件都是自动按需导入的,无需手动导入,且不用担心项目体积变得太大。
你也可以只使用 TinyVueResolver这样就可以和其他组件库一起使用。
Vite
```ts
// vite.config.ts
import Components from 'unplugin-vue-components/vite'
import autoImportPlugin from '@opentiny/unplugin-tiny-vue'
export default {
plugins: [
Components({
resolvers: [TinyVueResolver]
})
]
}
```
Webpack
```js
// webpack.config.js
const Components = require('unplugin-vue-components/webpack').default
const TinyVueResolver = require('@opentiny/unplugin-tiny-vue').TinyVueResolver
module.exports = defineConfig({
configureWebpack: {
plugins: [
Components({
resolvers: [TinyVueResolver]
})
]
}
})
```
想了解更多自动按需导入的信息,请参考:[unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) 和 [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import)。
### 多组件引入
多组件引用即从依赖包 `@opentiny/vue` 中引用多个组件,参考示例如下(以 `Button``Alert` 组件为例):
```html
<template>
<div>
<tiny-button>TinyVue</tiny-button>
<tiny-alert description="TinyVue"></tiny-alert>
</div>
</template>
<script>
import { Button, Alert } from '@opentiny/vue'
export default {
components: {
TinyButton: Button,
TinyAlert: Alert
}
}
</script>
```
### `vite` 工程多组件引入按需加载和打包配置方法
通过配置 `@opentiny/vue-vite-import` 插件可以按需只打包 pc 或者移动的组件,减少组件库打包后的体积。
执行以下命令安装 `TinyVue` 按需加载和打包的 `vite` 插件
```bash
yarn add @opentiny/vue-vite-import
# 或者
npm install @opentiny/vue-vite-import
```
修改项目的 `vite.config.js` ,添加以下代码:
```js
import vue from '@vitejs/plugin-vue'
import importPlugin from '@opentiny/vue-vite-import'
export default {
resolve: {
extensions: ['.js', '.jsx', '.vue']
},
plugins: [
vue(),
importPlugin(
[
{
libraryName: '@opentiny/vue'
},
{
libraryName: `@opentiny/vue-icon`,
customName: (name) => {
return `@opentiny/vue-icon/lib/${name.replace(/^icon-/, '')}.js`
}
}
],
'pc' // 此配置非必选,按需配置(pc|mobile|mobile-first)
)
],
define: {
'process.env': { ...process.env }
}
}
```
#### 温馨提示:
因为 `pnpm` 工程的特点之一是:项目中显示引入的依赖需要提前在 `package.json` 中声明(防止幽灵依赖),所以在 `pnpm` 工程使用该插件时需要在 `package.json` 中声明项目用到的每一个 `TinyVue` 组件依赖(`TinyVue` 每个组件都是一个 `npm` 包)。依赖声明可以参考以下配置:
```json
{
"dependencies": {
"@opentiny/vue-button": "~3.x.x",
"@opentiny/vue-alert": "~3.x.x",
"@opentiny/vue-input": "~3.x.x",
...
}
}
```
### 单组件引入
`TinyVue` 每个组件都可以独立安装、独立使用,即只安装单个组件的依赖并单独引用该组件。
`Button``Alert` 组件为例,执行以下命令安装:
```bash
yarn add @opentiny/vue-button @opentiny/vue-alert
# 或者
npm install @opentiny/vue-button @opentiny/vue-alert
```
在页面中的使用 `Button``Alert` 组件的示例如下:
```html
<template>
<div>
<tiny-button>TinyVue</tiny-button>
<tiny-alert description="TinyVue"></tiny-alert>
</div>
</template>
<script>
import Button from '@opentiny/vue-button'
import Alert from '@opentiny/vue-alert'
export default {
components: {
TinyButton: Button,
TinyAlert: Alert
}
}
</script>
```
### 完整引入(不推荐)
完整引入组件后,就不需每个页面都 import 组件和局部注册,只需在 `main.js` 中全局注册,但因此会失去 `tree-shaking` 的能力,打包后会有冗余代码。
`Vue 3.0` 版本完整引入的示例如下:
```js
import { createApp } from 'vue'
import TinyVue from '@opentiny/vue'
const app = createApp(App)
app.use(TinyVue)
```
`Vue 2.0` 版本完整引入的示例如下:
```js
import Vue from 'vue'
import TinyVue from '@opentiny/vue'
Vue.use(TinyVue)
```