碼迷,mamicode.com
首頁 > 其他好文 > 詳細

vue3.0使用ant-design-vue進行按需加載原來這么簡單

時間:2021-07-29 16:21:44      閱讀:0      評論:0      收藏:0      [點我收藏+]

標簽:pre   為我   htm   options   問題   sel   can   one   版本   

下載 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進行按需加載原來這么簡單

標簽:pre   為我   htm   options   問題   sel   can   one   版本   

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

(0)
(0)
   
舉報
評論 一句話評論(0
登錄后才能評論!
? 2014 mamicode.com 版權所有  聯系我們:gaon5@hotmail.com
迷上了代碼!
4399在线看MV_久久99精品久久久久久久久久_成人又黄又爽又刺激视频_能收黄台的app不收费