Nuxt3中使用 Ant-Design-Vue 的BackTop 組件實現自動返回頁面頂部

在現代 Web 應用中,提供一個方便用戶返回頁面頂部的功能是非常重要的。Ant Design Vue 提供了 BackTop 組件,可以輕松實現這一功能。本文將詳細介紹如何在 Nuxt 3 項目中使用 <a-back-top/> 組件,并通過按需引入的方式加載組件及其樣式,以避免引入不必要的文件,減小打包體積,提高性能。

安裝 Ant Design Vue

首先,我們需要在項目中安裝 Ant Design Vue。你可以使用 npm 或 yarn 進行安裝。

使用 npm:

npm install ant-design-vue

使用 yarn:

yarn add ant-design-vue
安裝 vite-plugin-style-import 插件

為了按需引入 Ant Design Vue 的組件及其樣式,我們需要安裝 vite-plugin-style-import 插件。

使用 npm:

npm install vite-plugin-style-import -D

使用 yarn:

yarn add vite-plugin-style-import -D
配置 nuxt.config.ts

在 nuxt.config.ts 文件中配置 vite-plugin-style-import 和 unplugin-vue-components 插件,以便按需引入 Ant Design Vue 的組件及其樣式。

// nuxt.config.tsimport { defineNuxtConfig } from 'nuxt'
import Components from 'unplugin-vue-components/vite'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'
import { createStyleImportPlugin, AndDesignVueResolve } from 'vite-plugin-style-import'export default defineNuxtConfig({css: ['@/assets/less/style.less',// '@/assets/less/iconfont.less'],vite: {plugins: [Components({resolvers: [AntDesignVueResolver(), ]}),createStyleImportPlugin({resolves: [AndDesignVueResolve()],libs: [{libraryName: "ant-design-vue",esModule: true,resolveStyle: (name) => `ant-design-vue/es/${name}/style/index` // 注意這里的路徑適用于vite-plugin-style-import 2.0版本},]}),]},
})
按需引入 BackTop 組件

在需要使用 BackTop 組件的頁面布局文件中,按需引入 BackTop 組件。由于我們在 nuxt.config.ts 中已經配置了按需引入樣式,這里只需要引入組件即可。

假設你的頁面布局文件是 layouts/default.vue,你可以這樣配置:

<template><div><NavBar /><LeftMenu /><NuxtPage /><Footer /><a-back-top/></div>
</template><script lang="ts" setup>
import NavBar from '@/components/layout/NavBar.vue'
import LeftMenu from '@/components/layout/LeftMenu.vue'
import Footer from '@/components/layout/Footer.vue'
</script>
解釋
  1. 引入組件

    import BackTop from 'ant-design-vue/es/back-top'
    

    這行代碼按需引入了 BackTop 組件。

  2. 配置 nuxt.config.ts

    • Components 插件:使用 Components 插件和 AntDesignVueResolver 自動引入 Ant Design Vue 的組件,而不需要在每個頁面手動導入。
    • createStyleImportPlugin:使用 createStyleImportPluginAndDesignVueResolve 按需引入 Ant Design Vue 的樣式。
注意事項
  • 避免全局引入:在 plugins/antd.client.ts 中全局引入 Ant Design Vue 的所有組件和樣式會導致打包文件體積增大,并可能引起樣式沖突。因此,建議按需引入所需的組件和樣式。刪除或注釋掉以下內容:

    // plugins/antd.client.ts// 移除全局引入
    // import Antd from "ant-design-vue";
    // import 'ant-design-vue/dist/antd.css'; // 如果取消注釋,會引入全部樣式// export default defineNuxtPlugin((nuxtApp) => {
    //   nuxtApp.vueApp.use(Antd)
    // })
    
  • 樣式路徑:確保你引入的樣式路徑是正確的。根據 vite-plugin-style-import 2.0 版本的路徑,使用 ant-design-vue/es/${name}/style/index

使用模塊化引入

如果你更喜歡使用模塊化引入的方式,Nuxt 3 提供了 @nuxtjs/ant-design-vue 模塊,可以更方便地按需引入組件。以下是使用模塊化引入的方式:

  1. 安裝模塊

    npm install @nuxtjs/ant-design-vue ant-design-vue
    

    yarn add @nuxtjs/ant-design-vue ant-design-vue
    
  2. 配置 nuxt.config.ts

    // nuxt.config.tsimport { defineNuxtConfig } from 'nuxt'export default defineNuxtConfig({css: ['@/assets/less/style.less',// '@/assets/less/iconfont.less'],modules: ['@nuxtjs/ant-design-vue'],antDesignVue: {components: ['BackTop'], // 按需引入 BackTop 組件styles: true // 自動引入按需組件的樣式}
    })
    
  3. 使用 BackTop 組件的頁面或組件

    <template><div><NavBar /><LeftMenu /><NuxtPage /><Footer /><BackTop /></div>
    </template><script lang="ts" setup>
    import NavBar from '@/components/layout/NavBar.vue'
    import LeftMenu from '@/components/layout/LeftMenu.vue'
    import Footer from '@/components/layout/Footer.vue'// 不需要手動導入 BackTop 組件,模塊會自動處理
    </script>
    

通過這種方式,你可以按需引入 BackTop 組件及其樣式,避免引入整個庫,從而減小打包體積,提高性能。

方法二:手動方式引入樣式

上述在 nuxt.config.ts 文件中配置 vite-plugin-style-import,使用了自動方式引入css樣式。如果不使用vite-plugin-style-import這個插件的話,也可以手動配置。
下面介紹下不使用vite-plugin-style-import插件的方法。

在nuxt.config.ts中引入需要的樣式,對應的樣式可以在node_modules\ant-design-vue\es\back-top路徑下找到css樣式,
再在nuxt.config.ts配置:

css: ['ant-design-vue/es/message/style/css','ant-design-vue/es/back-top/style/index','@/assets/less/style.less'// '@/assets/less/iconfont.less']

注意,不建議在plugin中全局的方式引入組件和樣式,那樣會增大體積或可能造成樣式沖突。

<a-back-top />BackTop 的區別
  • <a-back-top />:自動導入組件,適用于使用 unplugin-vue-components 插件的自動解析功能。
  • BackTop:手動導入組件,適用于需要按需引入特定組件及其樣式的情況。
為什么 BackTop 方式必須手動導入樣式?

當你使用 BackTop 方式時,手動導入組件和樣式的原因如下:

  1. 按需引入:手動導入可以按需引入特定的組件及其樣式,而不是整個庫,從而減小打包體積,提高性能。
  2. 避免全局沖突:手動導入可以避免全局引入時可能出現的樣式沖突問題。
  3. 靈活性:手動導入提供了更大的靈活性,可以根據需要選擇性地引入組件和樣式。
示例:手動導入 BackTop 組件及其樣式

假設你的頁面布局文件是 layouts/default.vue,你可以這樣配置:

<template><div><NavBar /><LeftMenu /><NuxtPage /><Footer /><a-back-top /></div>
</template><script lang="ts" setup>
import NavBar from '@/components/layout/NavBar.vue'
import LeftMenu from '@/components/layout/LeftMenu.vue'
import Footer from '@/components/layout/Footer.vue'import BackTop from 'ant-design-vue/es/back-top'
import 'ant-design-vue/es/back-top/style/index.css' // 手動引入樣式
</script>

通過這種方式,你可以按需引入 BackTop 組件及其樣式,避免引入整個庫,從而減小打包體積,提高性能。

總結
  • <a-back-top />:適用于使用 unplugin-vue-components 插件的自動解析功能,簡化組件導入過程。
  • BackTop:適用于需要手動按需引入組件及其樣式,提供更大的靈活性和更細粒度的控制。
結論

在 Nuxt 3 項目中使用 Ant Design Vue 的 BackTop 組件,可以通過按需引入的方式加載組件及其樣式。這樣可以避免引入不必要的文件,減小打包體積,提高性能,并且減少樣式沖突的可能性。

希望本文對你有所幫助!如果你在使用過程中遇到任何問題,歡迎在評論區留言討論。


參考資料:

  • Ant Design Vue 官方文檔
  • Vite 官方文檔
  • Nuxt 3 官方文檔
  • https://www.cnblogs.com/xuruiming/p/17940021
  • https://juejin.cn/post/7205842390841901093

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86558.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86558.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在統信UOS(Linux)中構建SQLite3桌面應用筆記

目錄 1 下載lazarus 2 下載sqlite3源碼編譯生成庫文件 3 新建項目 4 設置并編譯 一次極簡單的測試&#xff0c;記錄一下。 操作系統&#xff1a;統信UOS&#xff0c; 內核&#xff1a;4.19.0-arm64-desktop 處理器&#xff1a;D3000 整個流程難點是生成so庫文件并正確加…

Host ‘db01‘ is not allowed to connect to this MariaDB server 怎么解決?

出現錯誤 ERROR 1130 (HY000): Host db01 is not allowed to connect to this MariaDB server&#xff0c;表示當前用戶 test 沒有足夠的權限從主機 db01 連接到 MariaDB 服務器。以下是逐步解決方案&#xff1a; 1. 檢查用戶權限 登錄 MariaDB 服務器&#xff08;需本地或通過…

打造高可用的大模型推理服務:基于 DeepSeek 的企業級部署實戰

&#x1f4dd;個人主頁&#x1f339;&#xff1a;一ge科研小菜雞-CSDN博客 &#x1f339;&#x1f339;期待您的關注 &#x1f339;&#x1f339; 一、引言&#xff1a;從“能部署”到“可用、好用、能擴展” 近年來&#xff0c;隨著 DeepSeek、Qwen、Yi 等開源大模型的持續發…

Spring Boot 使用 ElasticSearch

第一步&#xff0c;開啟本地的 ElasticSearch 啟動 elasticSearch.bat npm run start (head 插件) 第二步&#xff0c;在 Spring Boot 項目中引入依賴 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-hig…

軟件開發的“中庸之道”:因勢而為,心中有數

【軟件工程】軟件開發的“中庸之道”&#xff1a;因勢而為&#xff0c;心中有數 在軟件開發的方法論討論中&#xff0c;我們常常陷入非此即彼的二元對立&#xff1a;要么追求極致的規范化和流程化&#xff0c;嚴格遵循軟件工程的各項標準&#xff1b;要么完全摒棄方法論&#x…

Go和Elixir極簡HTTP服務對比

Go 和 Elixir 都是我非常喜歡的編程語言&#xff0c;這次來對比下它們實現一個原生極簡 HTTP 服務的過程。 Go 語言標準庫自帶了網絡服務庫&#xff0c;只需要簡單幾行代碼就可以實現一個網絡服務&#xff0c;這也是一開始它吸引我的一個方面。而 Elixir 標準庫本身沒有網絡服…

為何要學習Objective-C?從環境搭建開始

目錄 前言 Swift時代為何還要學Objective-C&#xff1f; 開發環境搭建 1. 安裝Xcode 2. 創建第一個Command Line Tool項目 初識Objective-C代碼 編寫"Hello, Objective-C!" 編譯運行程序 為什么Objective-C中的NSLog和NSString前面都有"NS"前綴&a…

ubuntu18.04安裝 gcc 9以及2019版本tbb

一、安裝gcc 9 ubuntu18.04默認是用的gcc7.5 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt-get install gcc-9 g-9 下面是配置優先用哪個版本的gcc和g &#xff0c;后面帶的值越大越優先用誰&#xff0c;并且配置完全局生效不僅僅是在當…

JdbcUtils的三個版本以及sql注入問題

JDBC的工具類 1.0版本 JDBC的工具類 2.0版本&#xff08;智能一些&#xff09;&#xff0c;編寫properties屬性文件&#xff0c;程序就可以讀取屬性文件 JDBC的工具類 3.0版本&#xff0c;加入連接池對象 我們封裝jdbc工具類是為了減少代碼重復&#xff0c;方便開發&#xff0…

AS32系列MCU芯片I2C模塊性能解析與調試

國科安芯推出的AS32X601內置的I2C模塊提供了符合工業標準的兩線串行制接口&#xff0c;可用于MCU和外部IIC設備的通訊。IIC總線使用兩條串行線&#xff1a;串行數據線SDA和串行時鐘線SCL。 IIC接口模塊實現了IIC協議的標準模式和快速模式&#xff0c;支持多主機IIC總線架構。其…

釘釘小程序開發實戰:打造一個簡約風格的登錄頁面

在上一篇文章中&#xff0c;我們已經介紹了如何搭建釘釘小程序的基礎環境&#xff0c;并完成了項目的初始化配置。本文將繼續深入&#xff0c;手把手帶你實現一個簡約風格的登錄頁面&#xff0c;這是大多數企業級應用不可或缺的一部分。 釘釘小程序基于前端 Web 技術棧&#x…

論文研讀2-1:多GNSS雙歷元純相位定位-模型建立與誤差分析

后續文章: 論文研讀2-2&#xff1a;多GNSS雙歷元純相位定位-固定模糊度精度增益 論文研讀2-3&#xff1a;多GNSS雙歷元純相位定位-定位精度分析 僅相位定位中的模糊度解算問題 在衛星導航定位中&#xff0c;載波相位測量是實現高精度定位的基礎&#xff0c;但如果僅使用相位測…

Python----OpenCV(圖像増強——圖像平滑、均值濾波、高斯濾波、中值濾波、雙邊濾波)

Python----計算機視覺處理&#xff08;Opencv&#xff1a;圖像噪點消除&#xff1a;濾波算法&#xff0c;噪點消除&#xff09; 一、圖像平滑 圖像平滑處理&#xff08;Smoothing Images&#xff09;&#xff0c;也稱為圖像模糊處理、圖像濾波&#xff08;Images Filtering&am…

筆記:使用EasyExcel導入csv文件出現編碼問題,導致導入數據全為null的解決方法

筆記&#xff1a;使用EasyExcel導入csv文件出現編碼問題&#xff0c;導致導入數據全為null的解決方法 通常情況下&#xff0c;我們使用excel導入&#xff0c;但是部分情況下或者領導要求&#xff0c;我們需要使用csv導入文件&#xff0c;但是csv文件模板下載之后會變成系統當前…

NL2SQL(Natural Language to SQL)優化之道:提升準確率與復雜查詢能力

自然語言 → SQL 的轉譯&#xff08;NL2SQL&#xff09;技術&#xff0c;是讓非技術用戶與數據庫“對話”的橋梁。而在實際應用中&#xff0c;我們不僅需要“能轉”&#xff0c;更要“轉得準、轉得全、轉得快”。 一、什么是 NL2SQL&#xff1f; NL2SQL&#xff08;Natural La…

java中map的循環方式

什么是Map集合&#xff1f; Map是Java中的一個接口&#xff0c;它用于存儲鍵-值對&#xff0c;并且鍵和值都可以是任意對象。它是Java集合框架中的一部分&#xff0c;并提供了一些方法來操作和訪問Map中的元素。 Map中的每個鍵都是唯一的&#xff0c;這意味著不能使用相同的鍵…

python學習筆記(深度學習)

文章目錄 1、概述2、學習內容2.1、pytorch 常見語法2.1.1、sum2.1.2、廣播機制2.1.3、張量2.1.4、DataLoader 2.2、普通語法2.2.1、迭代器 1、概述 本篇博客用來記錄&#xff0c;在深度學習過程中&#xff0c;常用的 python 語法內容 2、學習內容 2.1、pytorch 常見語法 2.…

力扣網C語言編程題:搜索二維矩陣(右上角->左下角解法)

一. 簡介 上一篇文章關于"在二維數組中查找某個元素"的問題&#xff0c;提供了兩種解題思路&#xff0c;文章如下&#xff1a; 力扣網C語言編程題&#xff1a;搜索二維矩陣的普通解法與二分查找法-CSDN博客 本文提供第三種解題思路&#xff1a;從左下角->右上角…

AI大模型流式輸出,OkHttp Log攔截打印方案

背景&#xff1a; 使用okhttp框架進行網絡訪問時&#xff0c;一般會使用 HttpLoggingInterceptor 打印請求和響應的log。在使用okhttp訪問AI大模型時&#xff0c;如果選擇流式輸出&#xff0c;那么響應的body數據使用的SSE技術&#xff0c;服務異步發送大模型生成的增量token&…

看數據世界的歷史:全面梳理從關系庫、大數據到AI時代的數據發展及展望

序章 在數據庫不斷發展的時代里&#xff0c;我們看到了關系型數據庫&#xff08;RDB&#xff09;在一次次的數據演變過程中的占據王位&#xff0c;捍衛了勝利&#xff0c;像一個王朝更替下的“王權”的故事&#xff0c;精彩有趣。 本篇就來探討下數據庫的發展興衰史&#xff0…