小白最近比較閑,於是整理了一些日常使用的VUE組件

来源:https://www.cnblogs.com/pocn/archive/2023/09/05/17680171.html
-Advertisement-
Play Games

1.VUE中給Dom元素動態添加樣式 VUE中,給 Dom 元素動態添加樣式。 比如判斷通過頁面傳遞過來的值和env文件中配置的值是否一致,來動態添加元素的類,同時類的樣式在 Style 中已經寫好。 此時動態類名需要在 Dom 元素載入完成前添加上,否則樣式可能添加不上。 這種情況下可以在 com ...


1.VUE中給Dom元素動態添加樣式

    VUE中,給 Dom 元素動態添加樣式。
    比如判斷通過頁面傳遞過來的值和env文件中配置的值是否一致,來動態添加元素的類,同時類的樣式在 Style 中已經寫好。
 此時動態類名需要在 Dom 元素載入完成前添加上,否則樣式可能添加不上。
 這種情況下可以在  computed 中調用 process.env 中的屬性用於做判斷,為 Dom 元素動態添加類。
 這樣添加的類在 Dom 元素載入完成前就添加上了,樣式可以起效。

 2.VUE中使用Debugger

 在VUE中使用 debugger 可以在調試模式下,方便的打斷點,起到良好的測試效果。

3.infinite 觸底載入

 在jquery-weui.js庫中包含infinite組件,這個組件在我們使用weui開發手機端分頁時,使用起來非常方便。

 在另外一個輕量級的 JavaScript 庫中也包含 infinite 組件 -- Zepto.WeUI.js

    Zepto簡介

  • Zepto.WeUI.js 是基於 Zepto.js 和 WeUI 的一個插件庫,用於擴展 WeUI 組件的功能並提供更多常用的 UI 組件和交互效果。它提供了一系列易於使用的輕量級組件,使開發者可以快速構建具有WeUI 風格的移動端網頁應用。
  • Zepto.js 是一個輕量級的 JavaScript 庫,被設計為和 jQuery 相容的替代品,主要用於移動設備上的開發。它提供了許多類似於 jQuery 的功能和 API, 但是文件體積更小且專註於移動端的特性  和性能優化。
  • Zepto.WeUI.js 擴展了 WeUI,為開發者提供了更多實用的功能和組件,如下拉刷新、無限滾動、圖片輪播等。它以 Zepto.js 作為基礎,提供了一種便捷的方式來使用 WeUI 的特性和樣式。

  Zepto中Infinite的使用      

     1. 引入依賴文件

<!-- 引入 WeUI 樣式 -->
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/weui/2.2.0/style/weui.min.css">
    
<!-- 引入 Zepto.js -->
<script src="https://cdn.bootcdn.net/ajax/libs/zepto/1.2.0/zepto.min.js"></script>

<!-- 引入 Zepto.WeUI.js -->
<script src="https://cdn.bootcdn.net/ajax/libs/zepto.weui/1.2.0/zepto.weui.min.js"></script>

     2. 創建基本的 HTML 結構

<div class="infinite-container">
  <div class="infinite-item">內容 1</div>
  <div class="infinite-item">內容 2</div>
  <!-- 更多內容 -->
  <div class="infinite-loading">載入中...</div>
</div>

     3. 初始化 infinite 組件

$(function() {
  $(".infinite-container").infinite();
});

     4. 處理滾動觸底事件

$(function() {
  $(".infinite-container").infinite().on("infinite", function() {
    var loading = $(".infinite-loading");
    loading.show(); // 顯示載入狀態提示

    // 非同步載入更多內容
    // 這裡可以使用 AJAX 請求或其他非同步方法來獲取數據
    setTimeout(function() {
      var newItem = $("<div></div>").addClass("infinite-item").text("更多內容");
      $(".infinite-container").append(newItem);
      loading.hide(); // 隱藏載入狀態提示
      $(".infinite-container").infinite(); // 重新初始化 infinite 組件
    }, 2000); // 模擬延遲載入2秒
  });
});

    5. 在配合VUE使用時,使用方式更加簡便

        1.  首先在你的VUE項目中引入依賴文件

        2.  在 mounted 中將 infinite元素 和 infinite組件 綁定

$('.infinite').infinite().on('infinite', () => {
   // 滾動時執行的方法
})

        3.  在 watch 中實時監聽頁面滾動情況

watch: {
    meetEnd() {
	  if (this.meetEnd) {
		//off方法用於移除已綁定的無限滾動載入事件。它可以幫助你臨時關閉無限滾動載入功能,而不需要完全銷毀 infinite 組件。
		//$('.infinite').infinite().destroy() 完全銷毀 infinite 組件
        $('.infinite').infinite().off('infinite')		
      } else {
        $('.infinite').infinite().on('infinite', () => {
            //滾動時執行的方法
        })
      }
   }
}

 4.Vue 中使用動態組件 (Dynamic Components)

在Vue中使用動態組件可以讓你根據不同的條件或用戶操作,動態載入不同的組件。下麵是一個簡單示例

<template>
  <div>
    <button @click="loadComponent('ComponentA')">載入組件A</button>
    <button @click="loadComponent('ComponentB')">載入組件B</button>

    <component :is="currentComponent"></component>
  </div>
</template>

<script>
import ComponentA from "@/components/ComponentA.vue";
import ComponentB from "@/components/ComponentB.vue";

export default {
  data() {
    return {
      currentComponent: null
    };
  },
  methods: {
    loadComponent(componentName) {
      if (componentName === 'ComponentA') {
        this.currentComponent = ComponentA;
      } else if (componentName === 'ComponentB') {
        this.currentComponent = ComponentB;
      }
    }
  },
  components: {
    ComponentA,
    ComponentB
  }
};
</script>

5.Vue中 ... 的用法

在Vue中,...可能是  展開運算符(Spread Operator)也可能是  對象的擴展運算符(Object Spread Operator)。

下麵先介紹 展開運算符 的使用方式

//1.展開數組
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // 展開 arr1 數組,並添加新的元素
console.log(arr2); // 輸出:[1, 2, 3, 4, 5]
//2.合併數組
const arr1 = [1, 2, 3];
const arr2 = [4, 5];
const arr3 = [...arr1, ...arr2]; // 合併 arr1 和 arr2 數組
console.log(arr3); // 輸出:[1, 2, 3, 4, 5]
//3.複製數組
const arr1 = [1, 2, 3];
const arr2 = [...arr1]; // 複製 arr1 數組
console.log(arr2); // 輸出:[1, 2, 3]
//4.展開對象
const obj1 = { name: 'Alice', age: 20 };
const obj2 = { ...obj1, city: 'New York' }; // 展開 obj1 對象,並添加新屬性
console.log(obj2); // 輸出:{ name: 'Alice', age: 20, city: 'New York' }
//5.合併對象
const obj1 = { name: 'Alice', age: 20 };
const obj2 = { city: 'New York' };
const obj3 = { ...obj1, ...obj2 }; // 合併 obj1 和 obj2 對象
console.log(obj3); // 輸出:{ name: 'Alice', age: 20, city: 'New York' }
//6.展開函數調用
function foo(a, b, c) {
  console.log(a, b, c);
}

const arr = [1, 2, 3];
foo(...arr); // 將數組展開作為參數傳遞給函數

然後介紹一下,小白特別困惑的 對象的擴展運算符 ,它主要用於對象的屬性合併和複製。

//1.合併組件的計算屬性
<script>
import { mapGetters } from "vuex";

export default {
  computed: {
    //這個例子中,我們使用對象的擴展運算符將 mapGetters 返回的對象屬性合併到組件的 computed 計算屬性中。這樣,我們可以通過在組件中使用
    // this.prop1 和 this.prop2 來訪問對應的計算屬性
    ...mapGetters({
      prop1: "module1/getProp1",
      prop2: "module2/getProp2"
    })
  }
};
</script>
//2.合併組件的方法
<script>
export default {
  methods: {
    //在這個例子中,我們使用對象的擴展運算符將 mapActions 返回的對象屬性合併到組件的 methods 中。
    //這樣,我們就可以直接在組件中使用 this.action1 和 this.action2 來調用對應的方法。
    ...mapActions([
      "module1/action1",
      "module2/action2"
    ])
  }
};
</script>
//3.合併組件的樣式對象
<template>
  <div :style="computedStyles"></div>
</template>
//在這個例子中,我們使用對象的擴展運算符將 baseStyles 對象和 additionalStyles 對象合併為一個新的對象,
//並將其作為 :style 綁定的值。這樣,組件的樣式將包含來自兩個對象的屬性。
<script>
export default {
  data() {
    return {
      baseStyles: { backgroundColor: "red", color: "white" },
      additionalStyles: { fontSize: "16px", fontWeight: "bold" }
    };
  },
  computed: {
    computedStyles() {
      return { ...this.baseStyles, ...this.additionalStyles };
    }
  }
};
</script>

 最後,小白髮現 對象的擴展運算符展開運算符 在處理對象的時候是有相似性的,於是小白研究了它們之間的相同點和不同點

1.  相同點:對象的擴展運算符和展開運算符都可以用於展開對象

2.  不同點:

1. 對象的擴展運算符只能用於展開對象,它會將一個對象中的所有屬性展開到另一個對象中,並創建一個新的對象
const obj1 = { name: 'Alice', age: 20 };
const obj2 = { ...obj1 };
console.log(obj2); // 輸出:{ name: 'Alice', age: 20 }

2. 展開運算符可以用於展開數組和對象,可以在新的數組、對象或函數調用中使用,比如合併數組、複製數據、合併對象等。
const arr1 = [1, 2, 3];
const arr2 = [4, 5];
const mergedArr = [...arr1, ...arr2];
console.log(mergedArr); // 輸出:[1, 2, 3, 4, 5]

const obj1 = { name: 'Alice', age: 20 };
const obj2 = { city: 'New York' };
const mergedObj = { ...obj1, ...obj2 };
console.log(mergedObj); // 輸出:{ name: 'Alice', age: 20, city: 'New York' }

3. 展開運算符可以在數組和函數調用中使用
function foo(a, b, c) {
  console.log(a, b, c);
}

const arr = [1, 2, 3];
foo(...arr); // 將數組展開作為參數傳遞給函數

const obj = { name: 'Alice', age: 20 };
const newObj = { ...obj }; // 只能用於對象的展開

以上就是 對象的擴展運算符展開運算符 的相同點和不同點,經過整理小白搞清楚瞭如何使用這些好用的組件。小白還會繼續努力學習編碼,爭取掌握更多好用又有效率的組件,拜讀更多優秀的代碼!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ![](https://img2023.cnblogs.com/blog/3076680/202309/3076680-20230904205926819-1818911722.png) # 1. 時區 ## 1.1. 大航海時代伊始就在和時差打交道,而電腦時代的到來加劇了這一問題 ## 1.2. ...
  • 1. 樂觀鎖和悲觀鎖的理解及使用 樂觀鎖和悲觀鎖是在併發編程中使用的兩種併發控制機制,用於解決多線程或多進程環境下的數據一致性問題。 1. 悲觀鎖(Pessimistic Locking): 悲觀鎖的思想是假設併發訪問會導致衝突,因此在訪問共用資源之前,悲觀鎖會將資源鎖定,確保其他線程無法修改資源。 ...
  • 1、伺服器mysql資料庫本地連接開發3306有安全風險,開發和運營過程中往往需要本地操作資料庫,遠程上去操作資料庫非常的不方便 2、在本地建隧道連接遠程資料庫,關閉伺服器連接,資料庫連接自動中斷,安全又方便 3、下麵是具體的操作流程,需要的小伙伴可以參考使用 圖1:選擇目標主機-》右鍵點擊屬性-》 ...
  • 在vue3中,可以使用vue3的API `defineExpose()`函數結合`ref`或者`$parent`,實現父子組件數據的傳遞。 # 子組件向父組件傳遞數據`defineExpose()`和`ref` - 子組件:通過`defineExpose()` 函數,向外暴露響應式數據或者方法 `` ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 CSS 滾動驅動動畫 scroll() animation-timeline 通過 scroll() 指定可滾動元素與滾動軸來為容器動畫提供一個匿名的 scroll progress timeline. 通過元素在頂部和底部(或左邊和右邊 ...
  • Node.js 使用 `officecrypto-tool` 讀取加密的 Excel (xls, xlsx) 和 Word( docx)文檔, 還支持 xlsx 和 docx 文件的加密(具體使用看文檔)。暫時不支持doc文件的解密 傳送門:[officecrypto-tool](https://w ...
  • 目的:使用Layui的數據表格,拖動行進行排序。 使用插件:layui-soul-table 和 Layui 1.layui-soul-table文檔:https://soultable.yelog.org/#/zh-CN/component/start/install 2.layui文檔:Layu ...
  • 目的: 使用NKeditor富文本編輯器上傳圖片,同時上傳到七牛雲存儲上。後端語言使用ThinkPHP。 效果 實現方法: 1、下載NKeditor插件庫 下載地址:NKeditor: NKedtior是一款優秀的輕量級Web編輯器,基於 Kindedior 二次開發 裡面的文檔demo寫的比較詳細 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...