Soybean Admin 配置vite兼容低版本瀏覽器、安卓電視瀏覽器(飛視瀏覽器)

環境

window10
pnpm 8.15.4
node 8.15.4
vite 5.1.4
soybean admin: 1.0.0
native-ui: 2.38.0
小米電視 MIUI TV版本:MiTV OS 2.7.1886(穩定版)
飛視瀏覽器:https://www.fenxm.com/1220.html

在小米電視安裝飛視瀏覽器可以去小紅書查安裝教程:蘋果手機小米電視安裝第三方 app 教程

描述

Soybean Admin 配置vite兼容低版本瀏覽器、安卓電視瀏覽器,解決了網頁在小米電視的飛視瀏覽器訪問頁面空白的問題。

這是客戶的特殊需求,需要支持后臺監控系統在電視上訪問。雖然后面還是單獨開發了安卓app(安卓對焦點的支持真的非常友好),但是這個Soybean Admin 兼容一下低版本瀏覽器還是有必要分享出來的

實現

經過一番測試,在電腦Chrome瀏覽器正常訪問,其它同是使用vite、vue3、vue2技術棧的都可以在電視正常訪問,所以應該是打包配置問題。第一次用vite,網上的大致意思是vite默認支持高版本瀏覽器,如果你想兼容低版本瀏覽器,必須自己配合一些插件使用

第一步,安裝依賴

pnpm i @vitejs/plugin-legacy terser -D
pnpm i @babel/core @babel/preset-env @babel/plugin-proposal-optional-chaining core-js -D

特別是這個 vitejs/plugin-legacy,一開始默認安裝最新版本,導致開發環境都報錯,后面查了很多,要看自己vite版本,再去對應 vitejs/plugin-legacy 版本

安裝對應版本:

#版本一定對好,不然開發環境都會報錯
pnpm i @vitejs/plugin-legacy@5.4.0 -D

第二步,兼容性配置

根目錄下新增文件:babel.config.cjs

module.exports = {presets: [['@babel/preset-env',{targets: false, // 不指定目標瀏覽器,由 plugin-legacy 管理useBuiltIns: false, // 不處理 Polyfill,由 plugin-legacy 管理},],],plugins: ['@babel/plugin-proposal-optional-chaining', // 支持可選鏈操作符],
}

引入 vitejs/plugin-legacy 插件,位置:build/plugins/index.ts

import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import VueDevtools from 'vite-plugin-vue-devtools';
import progress from 'vite-plugin-progress';
import legacy from '@vitejs/plugin-legacy';
import { setupElegantRouter } from './router';
import { setupUnocss } from './unocss';
import { setupUnplugin } from './unplugin';export function setupVitePlugins(viteEnv: Env.ImportMeta) {// PluginOption改為any,不然我的legacy會報錯const plugins: any = [vue({script: {defineModel: true}}),legacy({targets: ['defaults', 'not IE 11', 'last 2 versions', '> 1%', 'Android >= 4.4'], // 需要兼容的瀏覽器版本additionalLegacyPolyfills: ['core-js/stable', 'regenerator-runtime/runtime'], // 兼容 async/awaitmodernPolyfills: true,// renderLegacyChunks: true,// polyfills: [//   // 列出需要添加的polyfill//   'es.symbol', 'es.promise', 'es.promise.finally',//   'es/map', 'es/set', 'es.array.filter',//   // ...其他polyfill// ]}),vueJsx(),VueDevtools(),setupElegantRouter(),setupUnocss(viteEnv),...setupUnplugin(viteEnv),progress(),];return plugins;
}

引入其它插件,位置:src/main.ts

import 'core-js/stable';
import 'regenerator-runtime/runtime'; // 如果你的代碼使用了生成器(Generator),你也需要這個 Polyfill
import { createApp } from 'vue';
import './plugins/assets';
import { setupDayjs, setupIconifyOffline, setupLoading, setupNProgress, setupTvFocusable } from './plugins';
import { setupStore } from './store';
import { setupRouter } from './router';
import { setupI18n } from './locales';
import App from './App.vue';async function setupApp() {setupLoading();setupNProgress();setupIconifyOffline();setupDayjs();const app = createApp(App);setupStore(app);setupTvFocusable(app);await setupRouter(app);setupI18n(app);app.mount('#app');
}setupApp();

這里必須把前面兩句放到最頂部!

如果你按照步驟做,重新部署了項目,在電視端訪問還是頁面空白,不妨清理一些瀏覽器緩存,或者再看看別的解決方案

關于 vite 使用plugin-legacy兼容低版本瀏覽器仍出現的問題的情況

vite創建的react項目如何兼容低版本安卓,低版本安卓不支持es6語法

vue3+vite兼容低版本的白屏問題詳解(安卓7/ios11)

補充

最后補充,這里就算能訪問到頁面了,電視不像電腦,電視只能通過遙控器去交互,像是登錄操作、點擊打開新頁面的操作,還是比較難搞的,建議還是跟客戶聊好,如果電視端只要簡單支持遙控器操作,可以看我下一篇文章:Soybean Admin 使用tv-focusable兼容電視TV端支持遙控器移動焦點。如果想要交互好、效果好、兼容性好,那建議還是安卓開發電視應用

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

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

相關文章

系統與網絡安全------網絡通信原理(1)

資料整理于網絡資料、書本資料、AI,僅供個人學習參考。 文章目錄 網絡通信模型協議分層計算機網絡發展計算機網絡功能什么是協議為什么分層郵局實例 OSI模型OSI協議模型OSI七層模型OSI七層的功能簡介 TCP/IP模型OSI模型與TCP/IP模型TCP/IP協議族的組成各層PDU設備與…

如何使用通義靈碼完成PHP單元測試 - AI輔助開發教程

一、引言 在軟件開發過程中,測試是至關重要的一環。然而,在傳統開發中,測試常常被忽略或草草處理,很多時候并非開發人員故意為之,而是缺乏相應的測試思路和方法,不知道如何設計測試用例。隨著 AI 技術的飛…

批量清空圖片的相機參數、地理位置等敏感元數據

我們在使用相機或者手機拍攝照片的時候,照片中都會帶有一些敏感元數據信息,比如說相機的型號,參數,拍攝的時間地點等等。這些信息雖說不是那么引人注意,但是在某些時候他是非常隱私非常重要的。如果我們將這些信息泄露…

SQL優化算法解析 | PawSQL 如何將EXISTS子查詢“秒拆“為JOIN連接

在數據庫性能調優中,子查詢優化是提升查詢效率的關鍵點之一。今天,我們將分享一個使用 PawSQL 對EXISTS子查詢進行重寫優化的案例,展示如何通過合理的SQL重寫與索引設計,實現超過487516.45%的性能提升! 一、案例分析:EXISTS子查詢的性能困境 這個查詢的目的是找出…

大模型day1 - 什么是GPT

什么是GPT 全稱 Generative Pre-trained Transformer 是一種基于 Transformer 架構的大規模 預訓練 語言模型,由OpenAI研發,但GPT僅僅只是借鑒了Transformer 中 Decoder 的部分,并且做了升級 Transformer 架構 Transformer架構 是一種用于…

MDM功能演示:遠程鎖定與數據擦除,保障企業移動設備安全

在當今高度互聯的商業環境中,企業數據伴隨著員工穿梭于不同城市、時區和設備之間。智能手機、平板電腦和筆記本電腦賦予員工隨時隨地辦公的能力,但也帶來了新的安全挑戰:設備一旦遺失或落入不當之手,企業數據就面臨泄露風險。 無…

深度集成學習不均衡樣本圖像分類

用五個不同的網絡,然后對分類概率進行平均,得到分類結果。基本上分類精度可以提升10% 1.導入基本庫 import torch import copy import torch.nn as nn import torchvision.models as models from torchvision import datasets from torchvision import…

從零開始學java--泛型

泛型 目錄 泛型 引入 泛型類 泛型與多態 泛型方法 泛型的界限 類型擦除 函數式接口 Supplier供給型函數式接口: Consumer消費型函數式接口: Function函數型函數式接口: Predicate斷言式函數式接口: 判空包裝 引入 …

5?? Coze+AI應用基礎教學(2025年全新版本)

目錄 一、了解應用開發 1.1 扣子應用能做什么 1.2 開發流程 1.3 開發環境 二、快速搭建一個AI應用 2.1 AI翻譯應用介紹 2.2 設計你的應用功能 2.3 創建 AI 應用項目 2.4 編寫業務邏輯(新建工作流) 2.5 搭建用戶界面 2.6 效果測試 2.7 發布應用 一、了解應用開發 …

工會成立100周年紀念,開發職工健身AI運動小程序、APP方案推薦

時光荏苒,轉眼間2025年五一將至,這一年對于中華全國總工會而言,具有非凡的歷史意義——它將迎來成立100周年的輝煌時刻。為了慶祝這一盛事,各級工會組織將精心籌備了一系列豐富多彩、形式多樣的紀念活動,旨在展現工會百…

【深度學習】Ubuntu 服務器配置開源項目FIGRET(PyTorch、torch-scatter、torch-sparse、Gurobi 安裝)

開源項目網址:https://github.com/FIGRET/figret 該項目在SIGCOMM2024發表,用深度學習方法處理流量工程中的突發問題 1. 創建新的 Conda 環境 使用國內鏡像源創建環境? conda create -n figret python3.8.0 --override-channels -c https://mirrors.…

【SpringCloud】從入門到精通(上)

今天主播我把黑馬新版微服務課程MQ高級之前的內容都看完了,雖然在看視頻的時候也記了筆記,但是看完之后還是忘得差不多了,所以打算寫一篇博客再溫習一下內容。 課程坐標:黑馬程序員SpringCloud微服務開發與實戰 微服務 認識單體架構 單體架…

MySQL中動態生成SQL語句去掉所有字段的空格

在MySQL中動態生成SQL語句去掉所有字段的空格 在數據庫管理過程中,我們常常會遇到需要對表中字段進行清洗和整理的情況。其中,去掉字段中的空格是一項常見的操作。當表中的字段數量較少時,我們可以手動編寫 UPDATE 語句來處理。但如果表中包…

【Grok 大模型深度解析】第二期:架構探秘與訓練哲學

在上一期的內容中,我們對 Grok 大模型從技術溯源的角度,了解了它從 Transformer 架構局限性出發,邁向混合架構創新的歷程,同時也梳理了從 Grok - 1 到 Grok - 3 的版本迭代所帶來的技術躍遷以及其獨特的差異化優勢。這一期,我們將深入到 Grok 大模型的架構內部,探究其精妙…

c# 使用NPOI將datatable的數據導出到excel

以下是使用 NPOI 庫 將 DataTable 數據導出到 Excel 的詳細步驟和代碼示例(支持 .xls 和 .xlsx 格式): 步驟 1:安裝 NPOI NuGet 包 Install-Package NPOI Install-Package NPOI.OOXML # 若需導出 .xlsx 格式 步驟 2:完整代碼實現 using NPOI.SS.UserModel; using NPOI.…

基于SpringBoot的求職招聘網站系統(源碼+數據庫)

473基于SpringBoot的求職招聘網站系統,本系統共分為2個角色:系統管理員、用戶,主要功能如下 【前臺功能】 用戶角色功能: 1. 注冊和登錄:注冊賬戶并登錄系統,以便訪問更多功能。 2. 個人信息管理&#x…

CSS 過渡與變形:讓交互更絲滑

在網頁設計中,動效能讓用戶交互更自然、流暢,提升使用體驗。本文將通過 CSS 的 transition(過渡)和 transform(變形)屬性,帶你入門基礎動效設計,結合案例演示如何實現顏色漸變、元素…

rqlite:一個基于SQLite構建的分布式數據庫

今天給大家介紹一個基于 SQLite 構建的輕量級分布式關系型數據庫:rqlite。 rqlite 基于 Raft 協議,結合了 SQLite 的簡潔性以及高可用分布式系統的穩健性,對開發者友好,操作極其簡便,其核心設計理念是以最低的復雜度實…

mujoco graspnet 仿真項目的復現記錄

開源項目:https://gitee.com/chaomingsanhua/manipulator_grasp 復現使用的配置:linux系統ubuntu20.04 項目配置記錄: git clone 對應的code后: 需要在graspnet-baseline文件夾中繼續拉取文件,指令記錄:…

【js面試題】new操作做了什么?

這些年也面試了一些外包同事,不知道其他面試官的想法,但就我而言,我更喜歡聽到的是口述代碼的方式: 比如下述代碼 function Animal(age) {this.age age; // 設置新對象的屬性 }const cat new Animal("8");最有效的回…