欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue樣式不一致問題分析與解決方案詳解

 更新時(shí)間:2025年05月25日 10:19:41   作者:百錦再@新空間  
在Vue開發(fā)過程中,開發(fā)者經(jīng)常會(huì)遇到一個(gè)令人困擾的問題:頁面樣式需要刷新后才能正確顯示,否則會(huì)出現(xiàn)樣式混亂,布局錯(cuò)位等問題,本文將全面分析這一問題的根源,并提供系統(tǒng)的解決方案

1. 問題概述

在 Vue.js 開發(fā)過程中,開發(fā)者經(jīng)常會(huì)遇到一個(gè)令人困擾的問題:頁面樣式需要刷新后才能正確顯示,否則會(huì)出現(xiàn)樣式混亂、布局錯(cuò)位等問題。這種現(xiàn)象不僅影響開發(fā)體驗(yàn),更嚴(yán)重的是可能導(dǎo)致生產(chǎn)環(huán)境中的用戶體驗(yàn)下降。本文將全面分析這一問題的根源,并提供系統(tǒng)的解決方案。

1.1 問題表現(xiàn)

Vue 樣式不一致問題通常表現(xiàn)為以下幾種形式:

  • 初始加載樣式錯(cuò)亂:頁面首次加載時(shí),某些組件樣式不正確,但刷新后恢復(fù)正常
  • 動(dòng)態(tài)內(nèi)容樣式失效:通過 v-if、v-show 或動(dòng)態(tài)綁定的內(nèi)容樣式不生效
  • CSS 作用域混亂:scoped CSS 沒有按預(yù)期工作,樣式泄露或失效
  • 第三方組件庫樣式問題:使用 UI 庫時(shí)樣式顯示不正常
  • 過渡動(dòng)畫異常:CSS 過渡或動(dòng)畫在首次渲染時(shí)表現(xiàn)異常

1.2 問題影響

  • 開發(fā)效率降低:開發(fā)者需要頻繁刷新頁面驗(yàn)證樣式
  • 用戶體驗(yàn)下降:用戶可能看到短暫但明顯的樣式閃爍
  • 測(cè)試復(fù)雜性增加:難以捕捉和復(fù)現(xiàn)樣式相關(guān)問題
  • 項(xiàng)目維護(hù)困難:樣式問題可能隨著項(xiàng)目規(guī)模擴(kuò)大而加劇

2. 根本原因分析

在這個(gè)過程中,關(guān)鍵問題點(diǎn)在于:

  • CSS 加載與 DOM 渲染的競(jìng)爭(zhēng)條件:瀏覽器解析 HTML 時(shí)遇到 CSS 會(huì)暫停 DOM 構(gòu)建去加載 CSS
  • 異步組件與樣式加載順序:異步加載的組件可能導(dǎo)致其樣式晚于 DOM 渲染
  • Vue 的漸進(jìn)式渲染特性:Vue 不是一次性渲染所有內(nèi)容,可能導(dǎo)致樣式計(jì)算不完整

2.2 Scoped CSS 的工作原理

Vue 的 scoped CSS 是通過 PostCSS 實(shí)現(xiàn)的,它會(huì)為組件模板和樣式添加唯一屬性:

<style scoped>
.example {
  color: red;
}
</style>

<template>
  <div class="example">hi</div>
</template>

編譯后:

<style>
.example[data-v-f3f3eg9] {
  color: red;
}
</style>

<template>
  <div class="example" data-v-f3f3eg9>hi</div>
</template>

潛在問題:

  • 屬性選擇器優(yōu)先級(jí):[data-v-xxx] 選擇器比類選擇器優(yōu)先級(jí)高,可能導(dǎo)致樣式覆蓋異常
  • 動(dòng)態(tài)內(nèi)容處理:通過 v-html 或第三方庫插入的內(nèi)容可能無法獲得 scoped 屬性
  • 性能影響:大量屬性選擇器會(huì)增加樣式計(jì)算負(fù)擔(dān)

2.3 CSS 模塊化與作用域隔離

現(xiàn)代前端開發(fā)中常見的 CSS 模塊化方案:

方案優(yōu)點(diǎn)缺點(diǎn)Vue 支持情況
Scoped CSS簡(jiǎn)單易用,Vue 原生支持深度選擇器語法特殊,性能一般內(nèi)置支持
CSS Modules真正的局部作用域,可預(yù)測(cè)性強(qiáng)配置稍復(fù)雜,類名轉(zhuǎn)換可能影響調(diào)試需要配置
CSS-in-JS極致靈活,動(dòng)態(tài)樣式強(qiáng)大運(yùn)行時(shí)開銷,學(xué)習(xí)曲線陡峭需集成庫
Utility-First高度可復(fù)用,性能優(yōu)秀需要記憶類名,設(shè)計(jì)系統(tǒng)耦合Tailwind 等

2.4 樣式加載順序問題

瀏覽器按照以下順序處理樣式:

  • 解析 <link> 引入的外部樣式表
  • 解析 <style> 標(biāo)簽中的內(nèi)部樣式
  • 解析內(nèi)聯(lián)樣式
  • 應(yīng)用用戶代理樣式(瀏覽器默認(rèn)樣式)

Vue 應(yīng)用中常見問題:

  • 單文件組件樣式順序:多個(gè) SFC 的 <style> 標(biāo)簽最終合并順序不確定
  • 異步加載樣式:通過 import() 動(dòng)態(tài)加載的組件樣式可能晚于 DOM 渲染
  • 樣式覆蓋競(jìng)爭(zhēng):全局樣式與局部樣式加載順序影響最終表現(xiàn)

2.5 熱重載(HMR)與樣式更新

Vue CLI 和 Vite 都支持熱重載,但處理方式不同:

  • Vue CLI:使用 webpack 的 style-loader 注入樣式,更新時(shí)添加新樣式而非替換
  • Vite:原生 ESM 支持,樣式文件作為獨(dú)立模塊更新

熱重載可能導(dǎo)致的問題:

  • 樣式重復(fù):多次修改后頁面中積累多個(gè)樣式標(biāo)簽
  • 狀態(tài)不一致:組件保持狀態(tài)但樣式更新導(dǎo)致視覺不一致
  • 源映射錯(cuò)位:開發(fā)工具中樣式定位不準(zhǔn)

3. 解決方案

3.1 確保樣式加載順序

3.1.1 預(yù)加載關(guān)鍵 CSS

在 index.html 中提前加載關(guān)鍵 CSS:

<head>
  <link rel="preload" href="/css/main.css" rel="external nofollow"  rel="external nofollow"  as="style">
  <link rel="stylesheet" href="/css/main.css" rel="external nofollow"  rel="external nofollow" >
</head>

3.1.2 控制全局樣式順序

在 main.js 中明確導(dǎo)入順序:

// 先導(dǎo)入第三方樣式
import 'normalize.css'
// 然后導(dǎo)入全局樣式
import '@/styles/global.css'
// 最后導(dǎo)入Vue應(yīng)用
import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

3.1.3 使用 CSS 命名約定

采用 BEM 等命名約定避免沖突:

/* Block Element Modifier 約定 */
.user-card { /* 塊 */ }
.user-card__header { /* 元素 */ }
.user-card--dark { /* 修飾符 */ }

3.2 優(yōu)化 Scoped CSS 使用

3.2.1 謹(jǐn)慎使用深度選擇器

避免過度使用 /deep/ 或 ::v-deep:

/* 不推薦 */
::v-deep .third-party-class {
  color: red;
}

/* 推薦 - 添加自己的修飾類 */
.third-party-wrapper--custom .third-party-class {
  color: red;
}

3.2.2 處理動(dòng)態(tài)內(nèi)容樣式

對(duì)于 v-html 或第三方組件的內(nèi)容:

<template>
  <div class="dynamic-content" v-html="htmlContent"></div>
</template>

<style scoped>
/* 使用全局樣式配合scoped父容器 */
.dynamic-content ::v-deep p {
  margin: 1em 0;
}
</style>

???????<style>
/* 或者在全局樣式中限定范圍 */
.dynamic-content-container p {
  margin: 1em 0;
}
</style>

3.3 CSS 架構(gòu)最佳實(shí)踐

3.3.1 分層 CSS 結(jié)構(gòu)

推薦的項(xiàng)目結(jié)構(gòu):

src/
  styles/
    base/       # 基礎(chǔ)樣式(重置、變量等)
      _reset.scss
      _variables.scss
    components/ # 組件樣式
      _buttons.scss
      _forms.scss
    layouts/    # 布局樣式
      _header.scss
      _footer.scss
    utilities/  # 工具類
      _spacing.scss
      _typography.scss
    main.scss   # 主入口文件

3.3.2 采用設(shè)計(jì)令牌系統(tǒng)

定義統(tǒng)一的樣式變量:

// _variables.scss
:root {
  --color-primary: #4fc08d;
  --color-secondary: #35495e;
  --spacing-unit: 8px;
  --border-radius: 4px;
  --font-size-base: 16px;
}

// 組件中使用
.button {
  padding: calc(var(--spacing-unit) * 2);
  background-color: var(--color-primary);
  border-radius: var(--border-radius);
}

3.4 構(gòu)建工具配置優(yōu)化

3.4.1 Webpack 配置調(diào)整

// vue.config.js
module.exports = {
  css: {
    extract: process.env.NODE_ENV === 'production',
    sourceMap: true,
    loaderOptions: {
      scss: {
        additionalData: `@import "~@/styles/variables.scss";`
      }
    }
  },
  chainWebpack: config => {
    // 確保樣式加載順序
    config.module
      .rule('scss')
      .oneOf('vue')
      .use('css-loader')
      .tap(options => ({
        ...options,
        importLoaders: 2 // 確保@import的樣式也經(jīng)過預(yù)處理
      }))
  }
}

3.4.2 Vite 配置優(yōu)化

// vite.config.js
export default defineConfig({
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@import "@/styles/variables.scss";`
      }
    },
    postcss: {
      plugins: [
        require('autoprefixer'),
        // 生產(chǎn)環(huán)境壓縮
        process.env.NODE_ENV === 'production' && require('cssnano')
      ].filter(Boolean)
    }
  },
  build: {
    cssCodeSplit: true, // 啟用CSS代碼分割
    rollupOptions: {
      output: {
        assetFileNames: 'assets/[name]-[hash].[ext]'
      }
    }
  }
})

3.5 服務(wù)端渲染(SSR)特殊處理

對(duì)于 Nuxt.js 或自定義 SSR:

// nuxt.config.js
export default {
  build: {
    extractCSS: true, // 提取CSS為獨(dú)立文件
    optimization: {
      splitChunks: {
        layouts: true,
        pages: true,
        commons: true
      }
    }
  },
  render: {
    bundleRenderer: {
      shouldPreload: (file, type) => {
        return ['script', 'style', 'font'].includes(type)
      }
    }
  }
}

3.6 性能與緩存策略

配置長(zhǎng)期緩存同時(shí)確保樣式更新:

// webpack.config.js
module.exports = {
  output: {
    filename: '[name].[contenthash:8].js',
    chunkFilename: '[name].[contenthash:8].chunk.js'
  },
  plugins: [
    new MiniCssExtractPlugin({
      filename: '[name].[contenthash:8].css',
      chunkFilename: '[name].[contenthash:8].chunk.css'
    })
  ]
}

4. 高級(jí)解決方案

4.1 CSS-in-JS 集成

4.1.1 Vue 中使用 styled-components

npm install styled-components vue3-styled-components
import { createApp } from 'vue'
import styled from 'vue3-styled-components'

const Button = styled.button`
  background: ${props => props.primary ? '#4fc08d' : 'white'};
  color: ${props => props.primary ? 'white' : '#4fc08d'};
  font-size: 1em;
  padding: 0.5em 1em;
  border: 2px solid #4fc08d;
  border-radius: 4px;
`

const app = createApp({
  template: `
    <Button>Normal</Button>
    <Button primary>Primary</Button>
  `
})

app.component('Button', Button)
app.mount('#app')

4.1.2 性能優(yōu)化建議

  • 避免頻繁樣式更新:將動(dòng)態(tài)樣式提取為獨(dú)立組件
  • 使用 CSS 變量:減少運(yùn)行時(shí)計(jì)算
  • 代碼分割:按需加載樣式

4.2 原子化 CSS 方案

4.2.1 Tailwind CSS 集成

npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init
// tailwind.config.js
module.exports = {
  content: [
    './index.html',
    './src/**/*.{vue,js,ts,jsx,tsx}'
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}
/* src/styles/main.css */
@tailwind base;
@tailwind components;
@tailwind utilities;

4.2.2 性能優(yōu)化

  • PurgeCSS 配置:移除未使用的樣式
  • JIT 模式:即時(shí)生成所需樣式
  • 分層構(gòu)建:將基礎(chǔ)樣式與組件樣式分離

4.3 微前端架構(gòu)下的樣式隔離

4.3.1 Shadow DOM 方案

// 創(chuàng)建使用Shadow DOM的自定義元素
class MicroApp extends HTMLElement {
  constructor() {
    super()
    this.attachShadow({ mode: 'open' })
  }
  
  connectedCallback() {
    this.shadowRoot.innerHTML = `
      <style>
        /* 樣式將被隔離在Shadow DOM內(nèi) */
        h1 { color: red; }
      </style>
      <h1>Micro Frontend</h1>
    `
  }
}

customElements.define('micro-app', MicroApp)

4.3.2 CSS 命名空間策略

// 為每個(gè)微前端應(yīng)用定義唯一前綴
$ns: 'mf-app1-';

.#{$ns}button {
  // 樣式規(guī)則
}

???????.#{$ns}form {
  // 樣式規(guī)則
}

5. 調(diào)試與測(cè)試策略

5.1 樣式調(diào)試技巧

5.1.1 Chrome 開發(fā)者工具高級(jí)用法

  • 強(qiáng)制元素狀態(tài)::hover, :active 等狀態(tài)調(diào)試
  • 跟蹤樣式計(jì)算:Computed 面板查看最終樣式
  • CSS 覆蓋分析:Styles 面板中的覆蓋標(biāo)識(shí)
  • 動(dòng)畫調(diào)試:Animations 面板檢查 CSS 動(dòng)畫

5.1.2 專用調(diào)試工具

  • CSS Stats:分析 CSS 復(fù)雜度
  • PurgeCSS 在線檢測(cè):識(shí)別未使用的樣式
  • BrowserStack:跨瀏覽器樣式測(cè)試

5.2 自動(dòng)化視覺回歸測(cè)試

5.2.1 使用 Storybook 進(jìn)行視覺測(cè)試

npx sb init
npm install @storybook/addon-storyshots puppeteer --save-dev
// .storybook/preview.js
export const parameters = {
  actions: { argTypesRegex: "^on[A-Z].*" },
  controls: {
    matchers: {
      color: /(background|color)$/i,
      date: /Date$/,
    },
  },
  options: {
    storySort: {
      order: ['Introduction', 'Components', 'Pages'],
    },
  },
}

5.2.2 集成 Percy 或 Applitools

// percy.config.js
module.exports = {
  version: 2,
  snapshot: {
    widths: [1280, 375], // 桌面和移動(dòng)端斷點(diǎn)
    minHeight: 1024,
    percyCSS: `.v-toolbar { display: none; }` // 隱藏動(dòng)態(tài)元素
  }
}

6. 性能優(yōu)化專項(xiàng)

6.1 CSS 性能關(guān)鍵指標(biāo)

指標(biāo)優(yōu)秀需要改進(jìn)工具測(cè)量方法
CSS 文件大小<50KB>100KBWebpack Bundle Analyzer
CSS 規(guī)則數(shù)量<5,000>10,000Chrome Coverage
未使用CSS比例<20%>40%PurgeCSS 分析
樣式重計(jì)算時(shí)間<1ms>3msChrome Performance 面板
關(guān)鍵CSS比例>70%<50%Critical CSS 工具

6.2 關(guān)鍵 CSS 提取

6.2.1 使用 critical 庫提取關(guān)鍵 CSS

npm install critical --save-dev
// postbuild.js
const critical = require('critical')

???????critical.generate({
  base: 'dist/',
  src: 'index.html',
  target: 'index.html',
  width: 1300,
  height: 900,
  inline: true,
  extract: true,
  ignore: {
    atrule: ['@font-face'],
    rule: [/some-selector/]
  }
})

6.2.2 預(yù)加載關(guān)鍵資源

<head>
  <link rel="preload" href="/css/critical.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
  <noscript><link rel="stylesheet" href="/css/critical.css"></noscript>
  <link rel="preload" href="/css/non-critical.css" as="style" media="print" onload="this.media='all'">
</head>

6.3 CSS 交付優(yōu)化

6.3.1 HTTP/2 服務(wù)器推送

# nginx 配置
server {
    listen 443 ssl http2;
    
    location = /index.html {
        http2_push /css/main.css;
        http2_push /js/app.js;
    }
}

6.3.2 智能緩存策略

location ~* \.(css|js)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
    add_header Vary: Accept-Encoding;
    
    # 內(nèi)容哈希變化時(shí)自動(dòng)更新
    if ($request_filename ~* ^.*?([^/]+?)(\.[^/]+)?$) {
        set $filename $1;
    }
    
    if ($filename ~* ^.*?-([0-9a-f]{8,})$) {
        add_header Cache-Control "public, max-age=31536000, immutable";
    }
}

7. 未來趨勢(shì)與新興方案

7.1 CSS Houdini

利用瀏覽器底層 API 實(shí)現(xiàn)高性能樣式:

// 注冊(cè)自定義屬性
CSS.registerProperty({
  name: '--gradient-angle',
  syntax: '<angle>',
  initialValue: '0deg',
  inherits: false
})
.element {
  background: linear-gradient(var(--gradient-angle), #4fc08d, #35495e);
  transition: --gradient-angle 1s;
}

.element:hover {
  --gradient-angle: 180deg;
}

7.2 容器查詢

.component {
  container-type: inline-size;
}

@container (min-width: 500px) {
  .element {
    /* 寬容器下的樣式 */
  }
}

7.3 層疊分層

使用 @layer 規(guī)則管理樣式優(yōu)先級(jí):

@layer base, components, utilities;

@layer base {
  h1 { font-size: 2rem; }
}

@layer components {
  .card { padding: 1rem; }
}

@layer utilities {
  .p-4 { padding: 1rem; }
}

8. 總結(jié)與最佳實(shí)踐清單

8.1 樣式管理黃金法則

  • 單一來源原則:設(shè)計(jì)變量集中管理
  • 隔離與封裝:組件樣式自包含
  • 最小權(quán)限原則:樣式作用域最小化
  • 性能意識(shí):關(guān)注CSS對(duì)FCP/LCP的影響
  • 漸進(jìn)增強(qiáng):基礎(chǔ)樣式先行,增強(qiáng)樣式后加載

8.2 Vue 項(xiàng)目樣式檢查清單

  • 使用設(shè)計(jì)令牌系統(tǒng)管理變量
  • 為關(guān)鍵CSS配置預(yù)加載
  • 設(shè)置合理的樣式作用域策略
  • 配置構(gòu)建工具提取和壓縮CSS
  • 實(shí)施視覺回歸測(cè)試流程
  • 監(jiān)控生產(chǎn)環(huán)境CSS性能指標(biāo)
  • 定期進(jìn)行CSS代碼審計(jì)
  • 文檔化樣式架構(gòu)決策

8.3 推薦技術(shù)棧組合

項(xiàng)目規(guī)模推薦技術(shù)組合
小型項(xiàng)目Vue + Scoped CSS + CSS變量
中型項(xiàng)目Vue + CSS Modules + Tailwind
大型項(xiàng)目Vue + CSS-in-JS + 設(shè)計(jì)系統(tǒng)
微前端架構(gòu)Vue + Shadow DOM + 命名空間

通過系統(tǒng)性地應(yīng)用上述分析和解決方案,開發(fā)者可以徹底解決 Vue 應(yīng)用中樣式需要刷新才能統(tǒng)一的問題,構(gòu)建出健壯、可維護(hù)且高性能的樣式架構(gòu)。記住,良好的樣式管理不僅是技術(shù)問題,更是工程實(shí)踐和架構(gòu)設(shè)計(jì)的綜合體現(xiàn)。

到此這篇關(guān)于Vue樣式不一致問題分析與解決方案詳解的文章就介紹到這了,更多相關(guān)Vue樣式不一致問題分析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue element 關(guān)閉當(dāng)前tab 跳轉(zhuǎn)到上一路由操作

    vue element 關(guān)閉當(dāng)前tab 跳轉(zhuǎn)到上一路由操作

    這篇文章主要介紹了vue element 關(guān)閉當(dāng)前tab 跳轉(zhuǎn)到上一路由操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Vue對(duì)Element中的el-tag添加@click事件無效的解決

    Vue對(duì)Element中的el-tag添加@click事件無效的解決

    本文主要介紹了Vue對(duì)Element中的el-tag添加@click事件無效的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • vue axios 給生產(chǎn)環(huán)境和發(fā)布環(huán)境配置不同的接口地址(推薦)

    vue axios 給生產(chǎn)環(huán)境和發(fā)布環(huán)境配置不同的接口地址(推薦)

    這篇文章主要介紹了vue axios 給生產(chǎn)環(huán)境和發(fā)布環(huán)境配置不同的接口地址,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-05-05
  • 如何在vue3中優(yōu)雅的使用jsx/tsx詳解

    如何在vue3中優(yōu)雅的使用jsx/tsx詳解

    看了一些 Vue3 的組件庫源碼,發(fā)現(xiàn)無一例外都使用的jsx/tsx來實(shí)現(xiàn),而且實(shí)現(xiàn)方式也各不相同,下面這篇文章主要給大家介紹了關(guān)于如何在vue3中優(yōu)雅的使用jsx/tsx的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • vuex的簡(jiǎn)單使用教程

    vuex的簡(jiǎn)單使用教程

    vuex是一個(gè)專門為vue.js設(shè)計(jì)的集中式狀態(tài)管理架構(gòu)。這篇文章主要介紹了vuex的簡(jiǎn)單使用,需要的朋友可以參考下
    2018-02-02
  • vue圓環(huán)百分比進(jìn)度條組件功能的實(shí)現(xiàn)

    vue圓環(huán)百分比進(jìn)度條組件功能的實(shí)現(xiàn)

    在一些頁面設(shè)置進(jìn)度條效果給人一種很好的體驗(yàn)效果,今天小編教大家vue圓環(huán)百分比進(jìn)度條組件功能的實(shí)現(xiàn)代碼,代碼超級(jí)簡(jiǎn)單啊,感興趣的朋友快來看下吧
    2021-05-05
  • vue實(shí)現(xiàn)三級(jí)頁面跳轉(zhuǎn)功能

    vue實(shí)現(xiàn)三級(jí)頁面跳轉(zhuǎn)功能

    這篇文章主要介紹了vue實(shí)現(xiàn)三級(jí)頁面跳轉(zhuǎn)功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Vue數(shù)據(jù)與事件綁定以及Class和Style的綁定詳細(xì)講解

    Vue數(shù)據(jù)與事件綁定以及Class和Style的綁定詳細(xì)講解

    這篇文章主要介紹了Vue數(shù)據(jù)與事件綁定以及Class和Style的綁定,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • 基于VUE實(shí)現(xiàn)判斷設(shè)備是PC還是移動(dòng)端

    基于VUE實(shí)現(xiàn)判斷設(shè)備是PC還是移動(dòng)端

    這篇文章主要介紹了基于VUE實(shí)現(xiàn)判斷設(shè)備是PC還是移動(dòng)端,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 解決Vue調(diào)用springboot接口403跨域問題

    解決Vue調(diào)用springboot接口403跨域問題

    這篇文章主要介紹了解決Vue調(diào)用springboot接口403跨域問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論