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.mzph.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");最有效的回…