下载 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中添加该组件哈

vue3.0使用ant-design-vue进行按需加载原来这么简单的更多相关文章

  1. 深入浅出的webpack4构建工具---webpack+vue+router 按需加载页面(十五)

    1. 为什么需要按需加载? 对于vue单页应用来讲,我们常见的做法把页面上所有的代码都打包到一个bundle.js文件内,但是随着项目越来越大,文件越来越多的情况下,那么bundle.js文件也会越来 ...

  2. 原创《分享(Angular 和 Vue)按需加载的项目实践优化方案》

    针对前端优化的点有很多,例如:图片压缩,雪碧图,js/css/html 文件的压缩合并,  cdn缓存, 减少重定向, 按需加载 等等 最近有心想针对 ionic项目 和 vue项目,做一个比较大的优 ...

  3. vue router按需加载

    import Vue from 'vue' import Router from 'vue-router' Vue.use(Router); //按需加载,当渲染其他页面时才加载其组件,并缓存,减少首 ...

  4. vue项目按需加载的3种方式

    本文重要是路由打包优化: 原理:利用webpack对代码进行分割是懒加载的前提,懒加载就是异步调用组件,需要时候才下载. 1.vue异步组件技术 vue-router配置路由,使用vue的异步组件技术 ...

  5. vue实现按需加载(懒加载)

    1.router文件中使用 export default new Router({ routes: [{ path: '/', name: 'Post', component: () => im ...

  6. Vue性能优化之组件按需加载(以及一些常见的性能优化方法)

    关于Vue中的按需加载我就简单介绍一下:大概就是我们所有的东西都会在app.js里面,但是我们并不需要把所有的组件都一次性加载进来,我们可以在需要它的时候再将它加载进来,话不多说,开车! 1.webp ...

  7. Vue3学习(二)之集成Ant Design Vue

    一.集成Ant Design Vue npm install ant-design-vue@2.0.0-rc.3 --save 兼容性 Ant Design Vue 2.x 支持所有的现代浏览器. 如 ...

  8. Ant Design Vue Pro 项目实战-项目初始化(一)

    写在前面 时间真快,转眼又是新的一年.随着前后端技术的不断更新迭代,尤其是前端,在目前前后端分离开发模式这样的一个大环境下,交互性.兼容性等传统的开发模式已经显得有些吃力.之前一直用的是react,随 ...

  9. 基于Ant Design Vue封装一个表单控件

    开源代码 https://github.com/naturefwvue/nf-vue3-ant 有缺点本来是写在最后的,但是博文写的似乎有点太长了,估计大家没时间往下看,于是就把有缺点写在前面了,不喜 ...

随机推荐

  1. LongAdder源码阅读笔记

    功能描述 LongAdder通过创建多个副本对象,解决了多线程使用CAS更新同一个对象造成的CPU阻塞,加快了对线程处理的速度.当多个线程同一时刻更新一个AtomicLong类型的变量时,只有一个线程 ...

  2. 【NX二次开发】创建扫描特征

    扫描特征相关函数: 创建扫描特征的相关函数: 1.UF_MODL_create_extrude_trim_opts 拉伸 2.UF_MODL_create_extrude_trim_opts1 拉伸 ...

  3. 学习响应式编程 Reactor (4) - reactor 转换类操作符(1)

    Reactor 操作符 数据在响应式流中的处理,就像流过一条装配流水线.Reactor 既是传送带,又是一个个的装配工或机器人.原材料从源头(最初的 Publisher )流出,经过一个个的装配线中装 ...

  4. Java后端精选技术:SpringBoot配置读取

    在早前的博客中曾经写过 Spring 程序通过 Bean 映射实现配置信息的读取. 在SpringBoot 框架中读取配置的方式变得非常多样,这导致读者在搜寻资料时反而容易迷糊. 到底,SpringB ...

  5. 为什么switch里的case没有break不行

    前言 一个小姐姐拿着一个switch的选择题来问我. 之所以这么笃定地回答这个问题,并不是我知道其中原理,而是之前在一个群里,有人问了同类型的问题,我瞥了一眼记住了答案,所以才依葫芦画瓢. 小姐姐接着 ...

  6. 多个异步ajax请求指定顺序执行

    1.比如2个ajax请求,把第二个ajax请求放在第一个ajax请求success方法里面. 2.ajax请求时添加 async: false,//使用同步的方式,true为异步方式.结果是只有等服务 ...

  7. JavaScript中for...in循环使用问题

    问题 使用for...in去遍历一个数组,同时将值添加到另外一个数组时,新的数组中每次都多出来一个function类型的元素. 原因及解决方案 for...in用来循环本身没有问题,但是经常被误用来遍 ...

  8. Https:SSL双向认证机制(理论知识)

    1.基础知识 这部分内容主要解释一些概念和术语,最好是先理解这部分内容. 1.1.公钥密码体制(public-key cryptography) 公钥密码体制分为三个部分,公钥.私钥.加密解密算法,它 ...

  9. Linux:Linux更新yum方法

    [内容指引]进入目录:cd查看目录下的内容:ls重命名备份:mv从网络下载:wgetyum更新:yum update 第一次运行yum安装软件前,建议更新yum. 1.进入yum源目录 命令: cd ...

  10. 深入理解 PHP7 中全新的 zval 容器和引用计数机制

    深入理解 PHP7 中全新的 zval 容器和引用计数机制 最近在查阅 PHP7 垃圾回收的资料的时候,网上的一些代码示例在本地环境下运行时出现了不同的结果,使我一度非常迷惑. 仔细一想不难发现问题所 ...