最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3實(shí)現(xiàn)微信支付寶PC端支付的步驟(附實(shí)例代碼)

 更新時間:2025年09月06日 14:06:08   作者:韶鹿先生  
因為公司項目涉及到充值功能所以做了支付寶、微信的支付功能,這篇文章主要介紹了Vue3實(shí)現(xiàn)微信支付寶PC端支付的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

核心思想:無論是微信還是支付寶,PC端支付都遵循一個共同模式:“前端發(fā)起 -> 后端下單 -> 前端引導(dǎo)跳轉(zhuǎn)/展示二維碼 -> 用戶支付 -> 后端處理回調(diào)”。前端的主要職責(zé)是**“發(fā)起”“引導(dǎo)”**。

下面我將分別詳細(xì)講解這兩種支付方式的實(shí)現(xiàn)步驟,并提供Vue 3的代碼示例。

準(zhǔn)備工作

  1. 商戶資質(zhì):你的公司需要在微信商戶平臺支付寶開放平臺注冊并簽約相關(guān)支付產(chǎn)品(如微信的Native支付、支付寶的電腦網(wǎng)站支付)。
  2. 后端接口:你需要后端同學(xué)提供以下接口:
    • 微信支付下單接口:例如 POST /api/payment/wechat-native。前端傳遞商品ID、金額等信息,后端調(diào)用微信統(tǒng)一下單API后,返回一個二維碼鏈接 (code_url)。
    • 支付寶支付下單接口:例如 POST /api/payment/alipay-pc。前端傳遞信息,后端調(diào)用支付寶下單API后,返回一個包含完整form表單的HTML字符串
    • 支付狀態(tài)查詢接口:例如 GET /api/payment/status?orderId=xxx。前端用于在用戶支付后,主動向后端查詢訂單是否已成功。
  3. 前端環(huán)境:Vue 3 + axios (用于API請求)。

一、 微信支付 (Native Pay / 掃碼支付)

微信PC端支付最常用的方式是 Native Pay,即在網(wǎng)頁上顯示一個二維碼,用戶用手機(jī)微信掃碼完成支付。

流程分解

  1. 創(chuàng)建訂單:用戶在你的網(wǎng)站上點(diǎn)擊“去支付”。
  2. 前端請求下單:前端調(diào)用后端的微信支付下單接口,并傳遞訂單信息。
  3. 后端返回二維碼鏈接:后端與微信服務(wù)器交互后,會得到一個 code_url,這是一個特殊的URL,內(nèi)容是微信支付二維碼的信息。后端將這個 code_url 返回給前端。
  4. 前端生成并展示二維碼:前端使用一個二維碼生成庫(如 qrcode.vue)將 code_url 轉(zhuǎn)換成二維碼圖片并顯示出來。
  5. 前端輪詢支付狀態(tài):在二維碼顯示后,前端啟動一個定時器,每隔幾秒鐘就調(diào)用后端的“支付狀態(tài)查詢接口”,詢問訂單是否已支付成功。
  6. 用戶掃碼支付:用戶用手機(jī)微信掃描二維碼,輸入密碼完成支付。
  7. 后端接收異步通知:微信服務(wù)器會將支付成功的結(jié)果通過一個異步的HTTP請求(回調(diào))通知到你的后端服務(wù)器。后端收到通知后,更新訂單狀態(tài)為“已支付”。
  8. 前端輪詢得知成功:前端的輪詢請求最終會從后端那里得到“已支付”的狀態(tài),此時前端停止輪詢,并給用戶顯示支付成功的提示,然后跳轉(zhuǎn)到成功頁面。

Vue 3 代碼實(shí)現(xiàn) (Payment.vue)

1. 安裝二維碼庫

npm install qrcode.vue

2. 編寫組件

<template>
  <div class="payment-container">
    <h2>訂單支付</h2>
    <div v-if="!paymentSuccess">
      <div v-if="wechatCodeUrl" class="qrcode-section">
        <h3>微信支付</h3>
        <p>請使用微信掃描下方二維碼完成支付</p>
        <qrcode-vue :value="wechatCodeUrl" :size="200" level="H" />
        <p class="notice">二維碼將在 {{ countdown }} 秒后過期</p>
      </div>
      <div v-else>
        <p>正在生成支付二維碼,請稍候...</p>
      </div>
    </div>
    <div v-if="paymentSuccess">
      <h3>支付成功!</h3>
      <p>正在跳轉(zhuǎn)到訂單詳情頁面...</p>
    </div>
  </div>
</template>

<script setup>
import { ref, onMounted, onUnmounted } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import QrcodeVue from 'qrcode.vue';
import axios from 'axios'; // 假設(shè)已配置

const route = useRoute();
const router = useRouter();

const wechatCodeUrl = ref('');
const paymentSuccess = ref(false);
const countdown = ref(300); // 假設(shè)二維碼5分鐘過期

let pollTimer = null;
let countdownTimer = null;

const orderId = route.query.orderId; // 從路由獲取訂單ID

// 1. 獲取微信支付二維碼
const getWechatPayQrcode = async () => {
  try {
    const response = await axios.post('/api/payment/wechat-native', { orderId });
    wechatCodeUrl.value = response.data.code_url;
    // 成功獲取二維碼后,開始輪詢和倒計時
    startPolling();
    startCountdown();
  } catch (error) {
    console.error('獲取微信支付二維碼失敗:', error);
    alert('支付二維碼生成失敗,請重試!');
  }
};

// 2. 輪詢支付狀態(tài)
const checkPaymentStatus = async () => {
  try {
    const response = await axios.get(`/api/payment/status?orderId=${orderId}`);
    if (response.data.status === 'SUCCESS') {
      paymentSuccess.value = true;
      stopPolling(); // 支付成功,停止輪詢
      // 跳轉(zhuǎn)到成功頁面
      setTimeout(() => {
        router.push(`/order-detail/${orderId}`);
      }, 2000);
    }
  } catch (error) {
    console.error('查詢支付狀態(tài)失敗:', error);
  }
};

const startPolling = () => {
  // 每3秒查詢一次
  pollTimer = setInterval(checkPaymentStatus, 3000);
};

const stopPolling = () => {
  if (pollTimer) {
    clearInterval(pollTimer);
  }
  if (countdownTimer) {
      clearInterval(countdownTimer);
  }
};

const startCountdown = () => {
    countdownTimer = setInterval(() => {
        if(countdown.value > 0) {
            countdown.value--;
        } else {
            stopPolling();
            alert('二維碼已過期,請刷新頁面重試');
        }
    }, 1000);
}


onMounted(() => {
  if (orderId) {
    getWechatPayQrcode();
  } else {
      alert('訂單ID不存在!');
  }
});

// 組件卸載時,清除定時器,避免內(nèi)存泄漏
onUnmounted(() => {
  stopPolling();
});
</script>

<style scoped>
.payment-container {
  text-align: center;
  padding: 40px;
}
.qrcode-section {
  display: inline-block;
  border: 1px solid #eee;
  padding: 20px;
}
.notice {
    color: #999;
}
</style>

二、 支付寶支付 (電腦網(wǎng)站支付)

支付寶PC端支付通常是跳轉(zhuǎn)到一個新的頁面(支付寶的收銀臺),用戶在那個頁面完成支付后,再跳回你的網(wǎng)站。

流程分解

  1. 創(chuàng)建訂單:同微信支付。
  2. 前端請求下單:前端調(diào)用后端的支付寶支付下單接口。
  3. 后端返回Form表單:后端與支付寶服務(wù)器交互后,支付寶會返回一段包含支付信息的、會自動提交的HTML Form表單字符串。后端將這個字符串原封不動地返回給前端。
  4. 前端執(zhí)行頁面跳轉(zhuǎn):前端接收到這個HTML字符串后,不能直接用 v-html 渲染它。正確的做法是創(chuàng)建一個新的空白頁面(或iframe),將這段HTML寫入其中。瀏覽器解析后,表單會自動提交,頁面就會跳轉(zhuǎn)到支付寶的收銀臺。
  5. 用戶在支付寶頁面支付:用戶掃碼或登錄支付寶賬號完成支付。
  6. 支付寶同步跳轉(zhuǎn) (Return URL):用戶支付成功后,支付寶會根據(jù)你后端配置的 return_url,將用戶的瀏覽器重定向回你的網(wǎng)站的某個頁面(例如支付成功頁),并在URL中附帶上訂單號、支付金額等參數(shù)。
  7. 前端處理同步跳轉(zhuǎn):前端的成功頁面從URL中獲取參數(shù),可以先給用戶一個“支付成功”的初步提示。但此時不能100%確認(rèn)支付成功,因為這個跳轉(zhuǎn)是可以被偽造的。
  8. 后端接收異步通知 (Notify URL):與此同時,支付寶服務(wù)器也會向你后端配置的 notify_url 發(fā)送一個異步的POST請求,這才是確認(rèn)支付成功的最終依據(jù)。后端收到通知并驗簽成功后,才會更新訂單狀態(tài)。
  9. 前端確認(rèn)最終狀態(tài):前端成功頁面最好再調(diào)用一次“支付狀態(tài)查詢接口”來獲取最準(zhǔn)確的訂單狀態(tài),然后向用戶展示最終結(jié)果。

Vue 3 代碼實(shí)現(xiàn)

1. 支付發(fā)起組件 (Payment.vue)

<template>
  <div class="payment-container">
    <h2>訂單支付</h2>
    <button @click="handleAlipay">使用支付寶支付</button>
    <!-- 這里就是用來接收和提交支付寶表單的容器 -->
    <div ref="alipayFormContainer"></div>
  </div>
</template>

<script setup>
import { ref } from 'vue';
import { useRoute } from 'vue-router';
import axios from 'axios';

const route = useRoute();
const orderId = route.query.orderId;
const alipayFormContainer = ref(null); // 用于獲取DOM元素

const handleAlipay = async () => {
  try {
    const response = await axios.post('/api/payment/alipay-pc', { orderId });
    const formHtml = response.data.form_html;

    // **關(guān)鍵步驟:提交支付寶返回的表單**
    if (alipayFormContainer.value) {
      // 1. 將表單HTML寫入容器
      alipayFormContainer.value.innerHTML = formHtml;
      // 2. 找到表單并觸發(fā)表單提交
      const form = alipayFormContainer.value.querySelector('form');
      if (form) {
        form.submit();
      } else {
        throw new Error('Alipay form not found in response.');
      }
    }
  } catch (error) {
    console.error('支付寶支付發(fā)起失敗:', error);
    alert('支付失敗,請稍后重試!');
  }
};
</script>

2. 支付成功回調(diào)頁面 (PaymentSuccess.vue)

你需要一個專門的路由和頁面來接收支付寶的同步跳轉(zhuǎn)。

// 在 router/index.js 中配置路由
// { path: '/payment/success', name: 'PaymentSuccess', component: PaymentSuccess }

// PaymentSuccess.vue
<template>
  <div class="result-container">
    <div v-if="loading">正在確認(rèn)支付結(jié)果...</div>
    <div v-else-if="paymentSuccess">
      <h3>支付成功!</h3>
      <p>訂單號:{{ orderId }}</p>
    </div>
    <div v-else>
      <h3>支付結(jié)果確認(rèn)失敗</h3>
      <p>請稍后到您的訂單中心查看最新狀態(tài)。</p>
    </div>
  </div>
</template>

<script setup>
import { ref, onMounted } from 'vue';
import { useRoute } from 'vue-router';
import axios from 'axios';

const route = useRoute();
const loading = ref(true);
const paymentSuccess = ref(false);
const orderId = ref('');

onMounted(async () => {
  // 從支付寶同步跳轉(zhuǎn)的URL中獲取訂單號
  orderId.value = route.query.out_trade_no;

  if (orderId.value) {
    try {
      // 再次向自己的后端查詢,獲取最準(zhǔn)確的支付狀態(tài)
      const response = await axios.get(`/api/payment/status?orderId=${orderId.value}`);
      if (response.data.status === 'SUCCESS') {
        paymentSuccess.value = true;
      }
    } catch (error) {
      console.error('確認(rèn)支付狀態(tài)失敗:', error);
    } finally {
      loading.value = false;
    }
  } else {
      loading.value = false;
  }
});
</script>

總結(jié)與對比

特性微信支付 (Native)支付寶支付 (電腦網(wǎng)站)
交互方式內(nèi)嵌二維碼,不離開當(dāng)前網(wǎng)站跳轉(zhuǎn)到支付寶網(wǎng)站
前端核心任務(wù)1. 請求code_url
2. 生成二維碼
3. 輪詢支付狀態(tài)
1. 請求form_html
2. 動態(tài)創(chuàng)建并提交表單
結(jié)果確認(rèn)依賴前端輪詢獲取最終狀態(tài)依賴同步跳轉(zhuǎn)(return_url) + 最終狀態(tài)查詢
用戶體驗在當(dāng)前頁完成,體驗更連貫頁面跳轉(zhuǎn),體驗有中斷感

問題1:支付寶能不能像微信支付一樣也采用短輪詢的方式

完全可以! 支付寶同樣支持通過短輪詢的方式來處理支付結(jié)果,而且在某些場景下,這種方式的用戶體驗會優(yōu)于頁面跳轉(zhuǎn)。

短輪詢的方式,對應(yīng)的是支付寶的 “當(dāng)面付” 產(chǎn)品中的 “掃碼支付” 功能。雖然它的名字叫“當(dāng)面付”,但它并非只能用于線下場景。線上PC網(wǎng)站完全可以使用它來實(shí)現(xiàn)和微信Native Pay(掃碼支付)一模一樣的用戶體驗。

下面詳細(xì)講解如何使用支付寶的“掃碼支付”配合前端輪詢來實(shí)現(xiàn)PC端支付。

支付寶“掃碼支付”(當(dāng)面付)的工作流程

這個流程和我們之前討論的微信掃碼支付幾乎完全一致:

  1. 簽約產(chǎn)品:確保你的支付寶開放平臺賬號已經(jīng)簽約了**“當(dāng)面付”** 產(chǎn)品。

  2. 創(chuàng)建訂單:用戶在你的網(wǎng)站上點(diǎn)擊“去支付”。

  3. 前端請求下單:前端調(diào)用后端的支付寶下單接口。這里與“電腦網(wǎng)站支付”的下單接口是不同的。例如 POST /api/payment/alipay-qrcode。

  4. 后端調(diào)用支付寶“統(tǒng)一收單交易預(yù)創(chuàng)建”接口

    • 后端不再是調(diào)用 alipay.trade.page.pay (電腦網(wǎng)站支付接口)。
    • 而是調(diào)用 alipay.trade.precreate (掃碼支付的預(yù)創(chuàng)建接口)。
    • 這個接口成功后,支付寶會返回一個二維碼鏈接 (qr_code),這個鏈接的內(nèi)容就是支付寶支付二維碼的信息。
  5. 后端返回二維碼鏈接給前端:后端將從支付寶獲取的 qr_code 字符串返回給前端。

  6. 前端生成并展示二維碼:前端拿到這個 qr_code 字符串,使用二維碼生成庫(如 qrcode.vue)將其渲染成一個可供掃描的二維碼圖片,并展示在當(dāng)前頁面上。

  7. 前端啟動輪詢:在二維碼顯示的同時,前端啟動一個定時器,每隔幾秒鐘就調(diào)用后端的“支付狀態(tài)查詢接口”(這個查詢接口可以和微信共用),主動詢問訂單的支付狀態(tài)。

  8. 用戶掃碼支付:用戶打開手機(jī)支付寶App,使用“掃一掃”功能掃描網(wǎng)頁上的二維碼,并完成支付。

  9. 后端接收異步通知 (Notify URL):用戶支付成功后,支付寶服務(wù)器會向你后端配置的 notify_url 發(fā)送異步通知。后端接收到通知并驗簽成功后,更新訂單狀態(tài)為“已支付”。

  10. 前端輪詢得知成功:前端的輪詢請求最終會從后端那里得到“已支付”的狀態(tài)。此時,前端停止輪詢,并給用戶顯示支付成功的提示,然后跳轉(zhuǎn)到成功頁面或更新UI。

與“電腦網(wǎng)站支付”的核心區(qū)別

特性支付寶“掃碼支付”(當(dāng)面付)支付寶“電腦網(wǎng)站支付”
后端調(diào)用接口alipay.trade.precreatealipay.trade.page.pay
后端返回值二維碼鏈接字符串 (qr_code)一段可自動提交的HTML Form表單
前端處理方式內(nèi)嵌二維碼 + 前端輪詢新頁面跳轉(zhuǎn)
用戶體驗在當(dāng)前網(wǎng)站完成支付,不跳轉(zhuǎn),體驗流暢跳轉(zhuǎn)到支付寶網(wǎng)站,支付完成后再跳回,體驗有中斷感
適用場景需要在網(wǎng)頁內(nèi)完成支付的場景,用戶體驗更佳任何PC網(wǎng)站支付,實(shí)現(xiàn)簡單,是傳統(tǒng)的PC支付方式

Vue 3 代碼實(shí)現(xiàn)(輪詢方式)

你會發(fā)現(xiàn),這段代碼和我們之前寫的微信支付的代碼幾乎完全一樣,只是API地址和返回字段名可能不同。這正是輪詢方式的優(yōu)點(diǎn)之一:前端邏輯可以高度復(fù)用

<template>
  <div class="payment-container">
    <h2>選擇支付方式</h2>
    <div>
      <button @click="initiatePayment('wechat')">微信支付</button>
      <button @click="initiatePayment('alipay')">支付寶支付</button>
    </div>

    <!-- 統(tǒng)一的二維碼展示區(qū)域 -->
    <div v-if="qrcodeUrl" class="qrcode-section">
      <h3>請使用{{ paymentMethod === 'wechat' ? '微信' : '支付寶' }}掃碼支付</h3>
      <qrcode-vue :value="qrcodeUrl" :size="200" level="H" />
      <p>二維碼有效時間剩余 {{ countdown }} 秒</p>
    </div>
  </div>
</template>

<script setup>
import { ref, onUnmounted } from 'vue';
import { useRoute } from 'vue-router';
import QrcodeVue from 'qrcode.vue';
import axios from 'axios';

const route = useRoute();
const orderId = route.query.orderId;

const paymentMethod = ref('');
const qrcodeUrl = ref('');
const countdown = ref(300);

let pollTimer = null;
let countdownTimer = null;

// 發(fā)起支付(根據(jù)選擇的支付方式)
const initiatePayment = async (method) => {
  // 清理之前的狀態(tài)
  stopPolling();
  qrcodeUrl.value = '';
  paymentMethod.value = method;

  try {
    let apiUrl = '';
    if (method === 'wechat') {
      apiUrl = '/api/payment/wechat-native';
    } else if (method === 'alipay') {
      apiUrl = '/api/payment/alipay-qrcode'; // 調(diào)用支付寶掃碼支付的下單接口
    }

    const response = await axios.post(apiUrl, { orderId });
    
    // 根據(jù)不同接口返回的字段名獲取二維碼鏈接
    qrcodeUrl.value = (method === 'wechat') ? response.data.code_url : response.data.qr_code;
    
    // 開始輪詢和倒計時
    startPolling();
    startCountdown();
  } catch (error) {
    console.error(`${method}支付二維碼生成失敗:`, error);
    alert('支付二維碼生成失敗,請重試!');
  }
};

// 輪詢支付狀態(tài)(完全可復(fù)用)
const checkPaymentStatus = async () => {
  try {
    const response = await axios.get(`/api/payment/status?orderId=${orderId}`);
    if (response.data.status === 'SUCCESS') {
      stopPolling();
      alert('支付成功!');
      // router.push(...);
    }
  } catch (error) {
    console.error('查詢支付狀態(tài)失敗:', error);
  }
};

const startPolling = () => {
  pollTimer = setInterval(checkPaymentStatus, 3000);
};

const startCountdown = () => {
  countdown.value = 300; // 重置倒計時
  countdownTimer = setInterval(() => {
    if (countdown.value > 0) {
      countdown.value--;
    } else {
      stopPolling();
      qrcodeUrl.value = ''; // 清空二維碼
      alert('二維碼已過期,請重新選擇支付方式');
    }
  }, 1000);
};

const stopPolling = () => {
  if (pollTimer) clearInterval(pollTimer);
  if (countdownTimer) clearInterval(countdownTimer);
};

onUnmounted(() => {
  stopPolling();
});
</script>

總結(jié)

答案是肯定的。支付寶的“當(dāng)面付-掃碼支付”產(chǎn)品就是為了實(shí)現(xiàn)與微信Native Pay類似的用戶體驗而設(shè)計的。

選擇哪種支付寶支付方式?

  • 追求最佳用戶體驗:選擇 “當(dāng)面付-掃碼支付” + 前端輪詢。用戶無需離開你的網(wǎng)站,流程更順暢,是現(xiàn)代Web應(yīng)用的首選。
  • 追求最簡單的實(shí)現(xiàn):選擇 “電腦網(wǎng)站支付” + 頁面跳轉(zhuǎn)。前端邏輯極其簡單(拿到HTML字符串并提交),但用戶體驗稍差。

對于一個同時需要支持微信和支付寶掃碼支付的PC網(wǎng)站,采用輪詢方案可以讓你的前端代碼邏輯高度統(tǒng)一,維護(hù)起來更加方便。

到此這篇關(guān)于Vue3實(shí)現(xiàn)微信支付寶PC端支付的文章就介紹到這了,更多相關(guān)Vue3微信支付寶PC端支付內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中el-select 和el-tree二次封裝實(shí)現(xiàn)

    vue中el-select 和el-tree二次封裝實(shí)現(xiàn)

    本文介紹了vue中el-select 和el-tree二次封裝實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • vue2.0實(shí)現(xiàn)分頁組件的實(shí)例代碼

    vue2.0實(shí)現(xiàn)分頁組件的實(shí)例代碼

    這篇文章主要介紹了vue2.0實(shí)現(xiàn)分頁組件的實(shí)例代碼,需要的朋友可以參考下
    2017-06-06
  • VueJs中toRef與toRefs函數(shù)對比詳解

    VueJs中toRef與toRefs函數(shù)對比詳解

    這篇文章主要為大家介紹了VueJs中toRef與toRefs函數(shù)對比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Vue如何實(shí)現(xiàn)文件預(yù)覽和下載功能的前端上傳組件

    Vue如何實(shí)現(xiàn)文件預(yù)覽和下載功能的前端上傳組件

    在Vue.js項目中,使用ElementUI的el-upload組件可以輕松實(shí)現(xiàn)文件上傳功能,通過配置組件參數(shù)和實(shí)現(xiàn)相應(yīng)的方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • 從零開始在vue-cli4配置自適應(yīng)vw布局的實(shí)現(xiàn)

    從零開始在vue-cli4配置自適應(yīng)vw布局的實(shí)現(xiàn)

    這篇文章主要介紹了從零開始在vue-cli4配置自適應(yīng)vw布局,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • vue實(shí)現(xiàn)Input輸入框模糊查詢方法

    vue實(shí)現(xiàn)Input輸入框模糊查詢方法

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)Input輸入框模糊查詢方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Vue3中的Teleport與Portal的區(qū)別分析

    Vue3中的Teleport與Portal的區(qū)別分析

    在現(xiàn)代前端開發(fā)中,特別是使用Vue.js進(jìn)行構(gòu)建時,開發(fā)者常常面臨著如何更有效地管理DOM結(jié)構(gòu)與組件之間的關(guān)系的問題,Vue 3引入了兩個頗具魅力的概念——Teleport和Portal,本文將深入探討這兩者的不同之處,需要的朋友可以參考下
    2025-01-01
  • 解決elementui表格操作列自適應(yīng)列寬

    解決elementui表格操作列自適應(yīng)列寬

    這篇文章主要介紹了解決elementui表格操作列自適應(yīng)列寬,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • vue路由權(quán)限和按鈕權(quán)限的實(shí)現(xiàn)示例

    vue路由權(quán)限和按鈕權(quán)限的實(shí)現(xiàn)示例

    本文主要介紹了vue路由權(quán)限和按鈕權(quán)限的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Vue-resource安裝過程及使用方法解析

    Vue-resource安裝過程及使用方法解析

    這篇文章主要介紹了Vue-resource安裝過程及使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07

最新評論

福海县| 娱乐| 邯郸县| 靖州| 连平县| 吴江市| 秦皇岛市| 葫芦岛市| 枣庄市| 慈利县| 墨江| 宝清县| 得荣县| 淳化县| 白城市| 无极县| 睢宁县| 临沭县| 高台县| 镇雄县| 田阳县| 普兰店市| 封丘县| 马山县| 凤凰县| 射洪县| 台南县| 湛江市| 诸暨市| 中阳县| 达孜县| 彭水| 鄱阳县| 深州市| 高州市| 峨眉山市| 孝昌县| 礼泉县| 贡嘎县| 永川市| 曲阜市|