vue3.0使用ant-design-vue进行按需加载原来这么简单

下载 ui库

yarn add ant-design-vue
默认是全局引入,打包后体积很大,
非常影响首屏加载速度,

按需加载

下载按需加载的插件;推荐使用cnpm
cnpm install babel-plugin-import --save-dev 下载在开发环境中

在项目的根目录下创建 babel.config.js

module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],plugins: [
    ["import",{ 
        libraryName: "ant-design-vue",libraryDirectory: "es",style: true,// `style: true` 会加载 less 文件
      }
    ]
  ]
}

在项目跟目录下创建vue.config.js配置项目信息

const Timestamp = new Date().getTime()
module.exports = {
    chainWebpack: config => {
        config.plugin('html').tap(args => {
            args[0].title = '我的vue3.0' //这个是网站标题
            return args
        })
    },css: {
        loaderOptions: {
            // 你的基础样式 因为没有我就注释了
            // sass: {
            //     data: `
            // 		@import "@/assets/style/base.scss";
            // 	`,// },//这只主题样式,修改此文件后需要重新启动,
            less: {
                lessOptions: {
                    modifyVars: {
                      //这是配置css主题色
                      'primary-color': '#007AFF',},javascriptEnabled: true,// 每次打包后生成的css携带时间戳
        extract: {
            filename: `css/[name].${Timestamp}.css`,chunkFilename: `css/[name].${Timestamp}.css`,productionSourceMap: false,//打包后相对目录
    publicPath: process.env.NODE_ENV === 'production' ? '././' : './',configureWebpack: {
        //每次打包后生成的js携带时间戳
        output: {
            filename: `[name].${Timestamp}.js`,chunkFilename: `[name].${Timestamp}.js`,}

安装less与less-loader

我们需要确认自己是否安装了 less与less-loader
【自己看一下】
cnpm install less less-loader --save-dev  【进行安装】
可能你安装后会出现ess less-loader的版本过高。
这个时候你需要将你的版本下降一下

我们为什么需要安装less与less-loader
因为我们ant-design-vue是用less编写的
配置babel.config.js后,

下面是我的版本库

dependencies用户发布环境
"dependencies": {
  "@ant-design/icons-vue": "^6.0.1","ant-design-vue": "^2.2.1","core-js": "^3.6.5","vue": "^3.0.0","vue-class-component": "^8.0.0-0","vue-router": "^4.0.0-0"
},devDependencies用于本地环境开发时候
"devDependencies": {
    "@typescript-eslint/eslint-plugin": "^4.18.0","@typescript-eslint/parser": "^4.18.0","@vue/cli-plugin-babel": "~4.5.0","@vue/cli-plugin-eslint": "~4.5.0","@vue/cli-plugin-router": "~4.5.0","@vue/cli-plugin-typescript": "~4.5.0","@vue/cli-service": "~4.5.0","@vue/compiler-sfc": "^3.0.0","@vue/eslint-config-typescript": "^7.0.0","babel-plugin-import": "^1.13.3","eslint": "^6.7.2","eslint-plugin-vue": "^7.0.0","less": "^3.13.1","less-loader": "^7.1.0","node-sass": "^4.12.0","sass-loader": "^8.0.2","typescript": "~4.1.5"
  },
devDependencies和dependencies区别?
devDependencies是只会在开发环境下依赖的模块,
生产环境不会被打入包内。
通过NODE_ENV=developement或
NODE_ENV=production指定开发还是生产环境。

而dependencies依赖的包不仅开发环境能使用,
生产环境也能使用。
其实这句话是重点,
按照这个观念很容易决定安装模块时是使用--save还是--save-dev

所以像css预处理语言我们肯定是--save-dev
像ui库请求axios我们肯定是--save

main.ts 组件进行按需引入

import { createApp } from 'vue'
// 引入App.vue这个入口文件
import App from './App.vue'
// 引入路由
import router from './router'
const app = createApp(App)
import {
    Button,ConfigProvider,Layout,Menu,message,Input,Space,Dropdown,Divider,Form,AutoComplete,Modal,Tree,Drawer,Row,Col,Select,DatePicker,Tooltip,Breadcrumb,Popconfirm,InputNumber,Table,Pagination,} from 'ant-design-vue'
app.use(Button)
    .use(Layout)
    .use(ConfigProvider)
    .use(Menu)
    .use(Input)
    .use(Space)
    .use(Dropdown)
    .use(Divider)
    .use(Form)
    .use(AutoComplete)
    .use(Modal)
    .use(Tree)
    .use(Drawer)
    .use(Row)
    .use(Col)
    .use(Select)
    .use(DatePicker)
    .use(Tooltip)
    .use(Breadcrumb)
    .use(Popconfirm)
    .use(InputNumber)
    .use(Table)
    .use(Pagination)
    .use(router).
    mount('#app')

按需加载说明和优势

后只需从 ant-design-vue 引入模块即可,无需单独引入样式.
babel-plugin-import 会帮助你加载 JS 和 CSS
import { Button } from "ant-design-vue";
也就是说你不需要引入
import 'ant-design-vue/dist/antd.css'
这个样式文件了

Vue3.0出现Cannot read property ‘use‘ of undefined

其实很简单 哈哈哈 就是因为版本的问题
执行  cnpm i --save ant-design-vue@next

Vue3.0出现Cannot find module 'vue-loader-v16/package.json

当你第一次删除后node-module可能会报错:
Cannot find module 'vue-loader-v16/package.json'.
你在yarn.lock 可以看见这个文件的描述
先卸载vue-loader-v16依赖
npm uninstall vue-loader-v16

之后使用cnpm安装vue-loader-v16依赖
cnpm i vue-loader-v16

vue3.0 ant-design-vue Failed to resolve component: a-layout-header

如果是这样的警告提示
这就说明了 你使用的a-layout-header没有进行加载
需要你在main.ts中添加该组件哈

原文地址:https://www.cnblogs.com/IwishIcould

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


过滤器:就是筛选filters: [ { text: '全部', value: '' }, { text: '通过', value: '通过' }, { text: '拒绝', value: '拒绝' }, { text: '待处理', value: '待处理' }, ], onFilter: (value, record) => record.c...
好处: 就是可以实现 响应式 拉伸行(row) 列(col)col要直接在row下基本理解:span="多少" //最大24格子 一行是24格子 一个 row 里面的col 的span加起来24就占满了<a-row> <a-col :span="12">col-12</a-col> <a-col :span="12">col-12</a-col> <a-col :sp...
创好vue 项目npm 下载antnpm i --save ant-design-vue@next完整引入main文件下添加import Antd from 'ant-design-vue';import 'ant-design-vue/dist/antd.css';.use(Antd)这样就ok了使用的时候就是正常复制代码使用按需引用...
外面套个from 标签就好了。
antDesign表单函数配置分析用getFieldDecorator包起来的高阶组件进行扩展getFieldDecorator(name,options)(component)对组件进行name注册,传入opotions配置以及回调里传入底层组件component自定义表单验证思路:用装饰器来扩展底部组件在装饰器里写入对事件的处理
之前在vue页面中引入axios使用,本篇在mainjs中引入1、mainjs中引入axios,设置基础urlimportaxiosfrom'axios'axios.defaults.baseURL='https://localhost:8080/'Vue.prototype.axios=axios2、在vue页面中,注意axios前需要加this.methods:{login(){letthat
先直接上核心代码:this.goToHomePage换成自己逻辑自己写的时候直接把this.goToHmoPage()换成自己的逻辑就行了,还有注意一点的是: 需要传个空函数,不然会报错在componentWillMount移除事件监听是防止浪费内存影响性能。最后在antdesign实现enter回车的方式如下: htmlT
Jeecg-Boot是一款基于SpringBoot+代码生成器的快速开发平台!采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT。强大的代码生成器让前端和后台代码一键生成,不需要写任何代码,保持jeecg一贯的强大,绝对是全栈开发福音!!JeecgBoot在提高UI能力的同时,降低了前后分离的开发
<template> <div> <a-pagination show-quick-jumper v-model:current="current1"
表单验证详解 <template> <!-- 第一个坑 :model="formState.youForm" 一定要写成这样 不要写成:model="f
<template> <a-table :columns="columns" :data-source="data" :row-selecti
下载 ui库 yarn add ant-design-vue 默认是全局引入,打包后体积很大, 非常影响首屏加载速度, 按需加载 下载按需加载的插件;推荐使用cnpm cnpm install bab
表单验证遇见的坑 01 如果你受控数据是这样写的话 const formState= reactive({ youForm:{ youNaNe:'', useSlectValue: &
Ant Design Vue中Table对齐方式显示省略号 <template> <!-- bordered 表示表格中的边框 pagination="false&quot
<a-drawer :title="myTitle" placement="right" :visible="visible" @cl
InputNumber 有值但是验证却不能够通过 今天遇见这样一个问题,InputNumber 输入框中有值 但是却却提示验证不能够通过 后来经过分析,怀疑是数据类型不正确, 后面经过验证,果然是数据
Select 选择器进行搜索 <template> <div> <a-form-item label="分类:"> <a-select p
<template> <a-tree-select v-model:value="value" "width: 320px" :t
1.创建子组件 <template> <a-drawer :title="drawerInfo.customTitle" :placement="pla
<template> <div class="clearfix"> {{ fileList }} <a-upload list-type="