ant-design-vue使用之路

目录

  • 引入ant-design-vue
    • 1.全局引入
    • 2. 局部引入
      • 局部引入组件
      • 局部引入图标
  • 使用
    • 1message的使用
      • 2 日期范围组件本地化
    • 3组件化的小技巧
      • list
      • form
  • 优化
    • webpack分析插件
      • 优化强依赖插件moment


引入ant-design-vue

1.全局引入

1. 命令行使用npm安装
npm install ant-design-vue --save
2. main.ts文件中导入
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/antd.css';

2. 局部引入

为了减小打包大小,提高加载速度,更推荐这种做法

局部引入组件

1. 命令行安装ant-design-vue包
npm install ant-design-vue --save

2 创建antPlugin.js文件,按需引入组件都可在这个文件中写,以button组件为例
import Vue from 'vue'
import {Button} from 'ant-design-vue' // 官方文档中组件去掉a,首字母大写如a-form-model, 按需引入组件就是 FormModel
Vue.use(Button)

3 main.ts 导入此文件
import ‘@/util/antPlugin’

4 babel.config.js 添加import插件,自动引入组件对应样式
module.exports = {
  // ...
  plugins: [
    [
      'import',
      { libraryName: 'ant-design-vue', libraryDirectory: 'es', style: 'css' }
    ]
  ]
}

5 坑
引入样式时,需要npm安装less-loader去解析,less-loader版本过高超过6.0后,会报错。
需手动设置javascriptEnabled。故我们在vue.config.js文件中设置(*楼主当时设置了好多遍也没起效,最后发现是less-loader没安装完全,多安装几次就好了*)
modules.exports = {
  css: {
    loaderOptions: {
      less: {
        javascriptEnabled: true
      }
    }
  }
}

局部引入图标

按需采用吧,而且要注意ant-design-vue组件中,自带的图标,也要引用进来,不然组件图标会消失。

1 在项目中创建文件icons.ts ,引入并导出你需要的图标
export { default as CloseCircleFill } from '@ant-design/icons/lib/fill/CloseCircleFill'
export { default as QuestionCircleTwoTone } from '@ant-design/icons/lib/twotone/QuestionCircleTwoTone'
export { default as ForkOutline } from '@ant-design/icons/lib/outline/ForkOutline'
2 在vue.config.js中配置将从npm包中导入映射从你创建的文件中导入
module.exports = {
 configureWebpack: {
    resolve: {
      alias: {
        '@ant-design/icons/lib/dist$': path.resolve(__dirname, './src/util/icons.ts')
      }
    },
    plugins: [
      new MomentLocalesPlugin({
        localesToKeep: ['zh-CN']
      })
    ]
  },
}
3 坑
记得找到组件自身所引入图标,也导入进来

使用

1message的使用

可在js中方便的调用message弹窗

1 创建message.js
import { message } from 'ant-design-vue'
2 定义sucess、error等方法,并导出,即可方便使用了
function success (msg: string) {
  message.success(msg)
}
export default { success, error, warn, info }

2 日期范围组件本地化

讲一下日期选择器本地化,这里讲一下多处
多处本地化,推荐使用config-provider
一个地方组件化,推荐使用组件中locale参数

tempate中使用a-config-provider

					
				
				
js中
import moment from 'moment'
import zhCN from 'ant-design-vue/es/locale/zh_CN'
import 'moment/locale/zh-cn'
moment.locale('zh-cn')
 		class类中
 			public locale = zhCN //定义语言
 			
	public range = { //设置快捷选项
		今天: [moment().startOf('day'), moment()],
		昨天: [
			moment()
				.startOf('day')
				.subtract(1, 'days'),
			moment()
				.endOf('day')
				.subtract(1, 'days')
		],
		最近三天: [
			moment()
				.startOf('day')
				.subtract(2, 'days'),
			moment()
		],
		最近一周: [
			moment()
				.startOf('day')
				.subtract(1, 'weeks'),
			moment()
		]
	}
	
	public getDisabledTime(current: any) { //定义选择范围
		return current < moment().subtract(7, 'day') || current > moment()
	}

3组件化的小技巧

主要是依靠[] 操作符和,传递父方法。以list和form为例

list

1 子组件中
 template中
 
  
    
{{button.name}}
// 【顶部按钮,传递想展示按钮以及方法】 {{ item[id] }} {{ item[id] }} //【 list列表,将展示字段传递,使用item[字段]来调用】
{{item[remark]}}
{{button.name}} //【传递按钮时,同时传递方法】
js中,接收参数并调用父方法 public emitParent (funcName: string, type: number, data: object = {}) { this.$emit(funcName, type, data) } 2 父组件中 template中引入子组件,并传递参数 js中 定义传递按钮参数及其他参数 public buttons =[{ name: '编辑', funcName: 'addOrEditData', type: 2 }, { name: '删除', funcName: 'startSureShow', type: 3 }]/

form

1 子组件
template中
  
     // 【使用form循环来遍历输入列表,传入formLabel】
        // 【使用formData[item.propName]】来双向绑定
        {{radio.label}}
      
       
      
    
    

2父组件中
template中引入并传递参数


js中定义参数

  public formLabel = [{ label: '场景id', propName: 'businessid', disabled: false }, // 标签显示
    { label: '场景名称', propName: 'businessname', disabled: false },
    { label: '场景描述', propName: 'remark', disabled: false },
  ]
   public formData= { // 表单数据
    businessid: '',
    businessname: '',
    remark: ‘’
  }

优化

webpack分析插件

vue.config.js中
module.exports = {
  chainWebpack: (config) => {
     config
       .plugin('webpack-bundle-analyzer')
       .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
   },
}
运行后,打开地址,可看到各个文件的打包大小,进而选择性的优化

优化强依赖插件moment

去除其他语言包,只保留中文和英文(英文内置,不可去除)
module.exports ={
    plugins: [
      new MomentLocalesPlugin({
        localesToKeep: ['zh-CN']
      })
    ]
  },
}

你可能感兴趣的:(菜鸡啄食——Vue,vue,js,webpack)