📝: 添加自动按需引入使用说明
This commit is contained in:
		
							parent
							
								
									527d10829c
								
							
						
					
					
						commit
						341d1cd82d
					
				
							
								
								
									
										47
									
								
								package/document/components.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										47
									
								
								package/document/components.d.ts
									
									
									
									
										vendored
									
									
								
							@ -34,40 +34,83 @@ declare module '@vue/runtime-core' {
 | 
			
		||||
    Input: typeof import('./src/document/zh-CN/components/input.md')['default']
 | 
			
		||||
    InputNumber: typeof import('./src/document/zh-CN/components/inputNumber.md')['default']
 | 
			
		||||
    LayAvatar: typeof import('@layui/layui-vue')['LayAvatar']
 | 
			
		||||
    LayAvatarList: typeof import('@layui/layui-vue')['LayAvatarList']
 | 
			
		||||
    LayBacktop: typeof import('@layui/layui-vue')['LayBacktop']
 | 
			
		||||
    LayBadge: typeof import('@layui/layui-vue')['LayBadge']
 | 
			
		||||
    LayBody: typeof import('@layui/layui-vue')['LayBody']
 | 
			
		||||
    LayBreadcrumb: typeof import('@layui/layui-vue')['LayBreadcrumb']
 | 
			
		||||
    LayBreadcrumbItem: typeof import('@layui/layui-vue')['LayBreadcrumbItem']
 | 
			
		||||
    LayButton: typeof import('@layui/layui-vue')['LayButton']
 | 
			
		||||
    LayButtonContainer: typeof import('@layui/layui-vue')['LayButtonContainer']
 | 
			
		||||
    LayButtonGroup: typeof import('@layui/layui-vue')['LayButtonGroup']
 | 
			
		||||
    LayCard: typeof import('@layui/layui-vue')['LayCard']
 | 
			
		||||
    LayCarousel: typeof import('@layui/layui-vue')['LayCarousel']
 | 
			
		||||
    LayCarouselItem: typeof import('@layui/layui-vue')['LayCarouselItem']
 | 
			
		||||
    LayCheckbox: typeof import('@layui/layui-vue')['LayCheckbox']
 | 
			
		||||
    LayCheckboxGroup: typeof import('@layui/layui-vue')['LayCheckboxGroup']
 | 
			
		||||
    LayCol: typeof import('@layui/layui-vue')['LayCol']
 | 
			
		||||
    LayCollapse: typeof import('@layui/layui-vue')['LayCollapse']
 | 
			
		||||
    LayCollapseItem: typeof import('@layui/layui-vue')['LayCollapseItem']
 | 
			
		||||
    LayColorPicker: typeof import('@layui/layui-vue')['LayColorPicker']
 | 
			
		||||
    LayConfigProvider: typeof import('@layui/layui-vue')['LayConfigProvider']
 | 
			
		||||
    LayDatePicker: typeof import('@layui/layui-vue')['LayDatePicker']
 | 
			
		||||
    LayContainer: typeof import('@layui/layui-vue')['LayContainer']
 | 
			
		||||
    LayCountUp: typeof import('@layui/layui-vue')['LayCountUp']
 | 
			
		||||
    LayDropdown: typeof import('@layui/layui-vue')['LayDropdown']
 | 
			
		||||
    LayDropdownMenu: typeof import('@layui/layui-vue')['LayDropdownMenu']
 | 
			
		||||
    LayDropdownMenuItem: typeof import('@layui/layui-vue')['LayDropdownMenuItem']
 | 
			
		||||
    LayEmpty: typeof import('@layui/layui-vue')['LayEmpty']
 | 
			
		||||
    Layer: typeof import('./src/document/zh-CN/components/layer.md')['default']
 | 
			
		||||
    LayException: typeof import('@layui/layui-vue')['LayException']
 | 
			
		||||
    LayField: typeof import('@layui/layui-vue')['LayField']
 | 
			
		||||
    LayFooter: typeof import('@layui/layui-vue')['LayFooter']
 | 
			
		||||
    LayForm: typeof import('@layui/layui-vue')['LayForm']
 | 
			
		||||
    LayFormItem: typeof import('@layui/layui-vue')['LayFormItem']
 | 
			
		||||
    LayFullscreen: typeof import('@layui/layui-vue')['LayFullscreen']
 | 
			
		||||
    LayHeader: typeof import('@layui/layui-vue')['LayHeader']
 | 
			
		||||
    LayIcon: typeof import('@layui/icons-vue')['LayIcon']
 | 
			
		||||
    LayIconPicker: typeof import('@layui/layui-vue')['LayIconPicker']
 | 
			
		||||
    LayInput: typeof import('@layui/layui-vue')['LayInput']
 | 
			
		||||
    LayInputNumber: typeof import('@layui/layui-vue')['LayInputNumber']
 | 
			
		||||
    LayLayer: typeof import('@layui/layer-vue')['LayLayer']
 | 
			
		||||
    LayLayout: typeof import('@layui/layui-vue')['LayLayout']
 | 
			
		||||
    LayLine: typeof import('@layui/layui-vue')['LayLine']
 | 
			
		||||
    LayLogo: typeof import('@layui/layui-vue')['LayLogo']
 | 
			
		||||
    LayMenu: typeof import('@layui/layui-vue')['LayMenu']
 | 
			
		||||
    LayMenuItem: typeof import('@layui/layui-vue')['LayMenuItem']
 | 
			
		||||
    LayNoticeBar: typeof import('@layui/layui-vue')['LayNoticeBar']
 | 
			
		||||
    Layout: typeof import('./src/document/zh-CN/components/layout.md')['default']
 | 
			
		||||
    LayPage: typeof import('@layui/layui-vue')['LayPage']
 | 
			
		||||
    LayPanel: typeof import('@layui/layui-vue')['LayPanel']
 | 
			
		||||
    LayProgress: typeof import('@layui/layui-vue')['LayProgress']
 | 
			
		||||
    LayQuote: typeof import('@layui/layui-vue')['LayQuote']
 | 
			
		||||
    LayRadio: typeof import('@layui/layui-vue')['LayRadio']
 | 
			
		||||
    LayRate: typeof import('@layui/layui-vue')['LayRate']
 | 
			
		||||
    LayResult: typeof import('@layui/layui-vue')['LayResult']
 | 
			
		||||
    LayRipple: typeof import('@layui/layui-vue')['LayRipple']
 | 
			
		||||
    LayRow: typeof import('@layui/layui-vue')['LayRow']
 | 
			
		||||
    LayScroll: typeof import('@layui/layui-vue')['LayScroll']
 | 
			
		||||
    LaySearch: typeof import('@layui/layui-vue')['LaySearch']
 | 
			
		||||
    LaySelect: typeof import('@layui/layui-vue')['LaySelect']
 | 
			
		||||
    LaySelectOption: typeof import('@layui/layui-vue')['LaySelectOption']
 | 
			
		||||
    LaySide: typeof import('@layui/layui-vue')['LaySide']
 | 
			
		||||
    LaySkeleton: typeof import('@layui/layui-vue')['LaySkeleton']
 | 
			
		||||
    LaySkeletonItem: typeof import('@layui/layui-vue')['LaySkeletonItem']
 | 
			
		||||
    LaySlider: typeof import('@layui/layui-vue')['LaySlider']
 | 
			
		||||
    LaySplitPanel: typeof import('@layui/layui-vue')['LaySplitPanel']
 | 
			
		||||
    LaySplitPanelItem: typeof import('@layui/layui-vue')['LaySplitPanelItem']
 | 
			
		||||
    LayStep: typeof import('@layui/layui-vue')['LayStep']
 | 
			
		||||
    LayStepItem: typeof import('@layui/layui-vue')['LayStepItem']
 | 
			
		||||
    LaySubMenu: typeof import('@layui/layui-vue')['LaySubMenu']
 | 
			
		||||
    LaySwitch: typeof import('@layui/layui-vue')['LaySwitch']
 | 
			
		||||
    LayTab: typeof import('@layui/layui-vue')['LayTab']
 | 
			
		||||
    LayTabItem: typeof import('@layui/layui-vue')['LayTabItem']
 | 
			
		||||
    LayTable: typeof import('@layui/layui-vue')['LayTable']
 | 
			
		||||
    LayTextarea: typeof import('@layui/layui-vue')['LayTextarea']
 | 
			
		||||
    LayTimeline: typeof import('@layui/layui-vue')['LayTimeline']
 | 
			
		||||
    LayTimelineItem: typeof import('@layui/layui-vue')['LayTimelineItem']
 | 
			
		||||
    LayTooltip: typeof import('@layui/layui-vue')['LayTooltip']
 | 
			
		||||
    LayTransfer: typeof import('@layui/layui-vue')['LayTransfer']
 | 
			
		||||
    LayTransition: typeof import('@layui/layui-vue')['LayTransition']
 | 
			
		||||
    LayTree: typeof import('@layui/layui-vue')['LayTree']
 | 
			
		||||
    LayUpload: typeof import('@layui/layui-vue')['LayUpload']
 | 
			
		||||
    Line: typeof import('./src/document/zh-CN/components/line.md')['default']
 | 
			
		||||
    Load: typeof import('./src/document/zh-CN/components/load.md')['default']
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,7 @@
 | 
			
		||||
    "rollup": "^2.70.1",
 | 
			
		||||
    "typescript": "^4.6.3",
 | 
			
		||||
    "vite": "2.9.8",
 | 
			
		||||
    "vite-plugin-md": "^0.13.4",
 | 
			
		||||
    "vite-plugin-md": "^0.13.1",
 | 
			
		||||
    "unplugin-auto-import": "^0.7.1",
 | 
			
		||||
    "unplugin-vue-components": "^0.19.3",
 | 
			
		||||
    "unplugin-layui-vue-resolver": "0.0.10"
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,7 @@
 | 
			
		||||
```
 | 
			
		||||
npm install @layui/layui-vue --save
 | 
			
		||||
```
 | 
			
		||||
::: title 全局注册
 | 
			
		||||
::: title 完整引入
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
@ -42,7 +42,77 @@ createApp(App).use(Layui).mount('#app')
 | 
			
		||||
::: describe 以上代码便完成了 layui-vue 的引入。需要注意的是,样式文件需要单独引入。
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
::: title 按需引入
 | 
			
		||||
::: title 按需引入(自动)
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
::: describe 安装 <a href="https://github.com/antfu/unplugin-vue-components" target="_blank" style="color:#5FB878"><code>unplugin-vue-components</code></a> 和 <a href="https://github.com/antfu/unplugin-auto-import" target="_blank" style="color:#5FB878"><code>unplugin-auto-import</code></a> 插件,插件会自动解析模板中用到的组件,并引入组件和样式。
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
npm install -D unplugin-vue-components unplugin-auto-import
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
::: describe vite 配置
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
// vite.config.ts
 | 
			
		||||
import AutoImport from 'unplugin-auto-import/vite'
 | 
			
		||||
import Components from 'unplugin-vue-components/vite'
 | 
			
		||||
import { LayuiVueResolver } from 'unplugin-vue-components/resolvers'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  plugins: [
 | 
			
		||||
    // ...其它插件
 | 
			
		||||
    
 | 
			
		||||
    // 自动导入 layer-vue 相关函数,例如 layer 等
 | 
			
		||||
    AutoImport({
 | 
			
		||||
      resolvers: [LayuiVueResolver()],
 | 
			
		||||
    }),
 | 
			
		||||
    // 自动解析 layui-vue 组件
 | 
			
		||||
    Components({
 | 
			
		||||
      resolvers: [LayuiVueResolver()],
 | 
			
		||||
    }),
 | 
			
		||||
  ],
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
::: describe LayuiVueResolver 选项类型声明
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
```ts
 | 
			
		||||
export declare function LayuiVueResolver(
 | 
			
		||||
  options?: LayuiVueResolverOptions = {}
 | 
			
		||||
): ComponentResolver
 | 
			
		||||
 | 
			
		||||
export interface LayuiVueResolverOptions {
 | 
			
		||||
  /**
 | 
			
		||||
   * 将样式与组件一起导入
 | 
			
		||||
   *
 | 
			
		||||
   * @default 'css'
 | 
			
		||||
   */
 | 
			
		||||
  importStyle?: boolean | 'css'
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 是否解析图标
 | 
			
		||||
   *
 | 
			
		||||
   * @default false
 | 
			
		||||
   */
 | 
			
		||||
  resolveIcons?: boolean
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 排除不需要自动导入的组件
 | 
			
		||||
   * 
 | 
			
		||||
   * eg: exclude: ['LayDocTable', /^LayDoc[A-Z]/,]
 | 
			
		||||
   */
 | 
			
		||||
  exclude?: Array<string | RegExp>;
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
::: title 按需引入(手动)
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
::: describe 需要手动引入组件样式
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
@ -78,7 +148,7 @@ app.mount('#app')
 | 
			
		||||
::: title 浏览器导入
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
::: describe 根据不同的 CDN 提供商有不同的引入方式, 根据不同的 CDN 提供商有不同的引入方式, 我们在这里以 unpkg 举例。
 | 
			
		||||
::: describe 根据不同的 CDN 提供商有不同的引入方式,我们在这里以 unpkg 举例。
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
```html
 | 
			
		||||
@ -100,8 +170,7 @@ app.mount('#app')
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
  <div id="app">
 | 
			
		||||
    <lay-button @click="sayHello">选项API</lay-button>
 | 
			
		||||
    <lay-button @click="openLayer">组合API</lay-button>
 | 
			
		||||
    <lay-button @click="openLayer">Hello</lay-button>
 | 
			
		||||
  </div>
 | 
			
		||||
</body>
 | 
			
		||||
<script>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user