Vue进阶(幺陆玖)项目部署后IE报 SCRIPT1002:语法错误 解决方案探讨

文章目录

    • 一、前言
    • 二、组件懒加载
      • 2.1 什么是懒加载
      • 2.2 如何实现懒加载
    • 三、延伸阅读 软件程序唤醒
      • 3.1 protocolCheck 实现
      • 3.2 自定义实现
    • 四、拓展阅读

一、前言

Vue项目改造升级后,原本本地热部署后IE可正常打开的项目出现页面白屏且控制台给出SCRIPT1002:语法错误的提示信息。

经过代码排查,发现项目中新引入了一些依赖包导致系统无法正常启动。

出现以上错误,可从以下几个方面查找原因:

  1. 可能与IE的某些插件冲突。把所有无关的IE加载项全部禁用后尝试;

  2. 引用了不存在的 js 文件;

  3. 页面的某些文件在文档模型还没建立时就已经开始引用相关的节点;

令人感到疑惑的是:其他原本可以本地IE热部署的项目在进行同样的升级改造后,依旧可以实现本地IE部署,且没有任何错误信息。故需要通过对比2个项目间的差异性着手进行分析。初步怀疑与webpackbabel版本有关。

经过仔细排查,发现报错前面给出了polyfill-eventsource added missing EventSource to window 的提示信息,但是通过配置webpack.base.config.js中加载babel-loader并未生效。

白屏错误发生前后项目区别是引入了新的js文件,故考虑采用动态引入方式引入相应js依赖文件。可根据系统类型动态引入js文件。

// 获取系统标识
let platform = navigator.platform
// 若为Windows OS
if (platform === 'Win32') {
	// TODO 执行存量代码逻辑
} else {
	import('./test.js').then(res => {
		this.test = res
		// TODO 执行新线代码逻辑
	})
}

或者通过以下方式:

// async await 的方式
const addJs = async ( )=>{
  await import ('xxx.js')
}

以上方案适用于在存量自定义组件中实现,对于新定义自定义组件,可考虑通过组件懒加载实现。

<template>
    <div>
        <span>it is router a</span>
        <br><br>
        <component-a></component-a>
    </div>
</template>

<script>
    export default {
        name: "router-a",
        components: {
            componentA: resolve => require(['./componentA.vue'], resolve)
        }
    };
</script>

<style scoped>

</style>

二、组件懒加载

随着Web应用程序的日益复杂,前端开发人员需要在保证页面加载速度的前提下更好地提供功能和用户体验。这就涉及到Vue组件的懒加载和预加载,它们是优化Vue应用程序性能的重要手段。

2.1 什么是懒加载

懒加载就是当用户需要访问某个组件时才会把该组件的代码加载进来,而不是一开始就把所有组件的代码都加载进来,这样可以减少初始加载的时间,提高页面的响应速度。

Vue提供了一个异步组件(async component)的概念,用于处理懒加载。

2.2 如何实现懒加载

可采用以下方式实现组件懒加载:

  1. 使用 import() 动态导入组件

    Vue 2.4.0以上版本支持使用import()方法来动态导入组件。

    例如,定义一个异步组件,这个组件在需要的时候才会被加载进来:

    Vue.component('my-component', () => import('./MyComponent.vue'));
    
  2. 使用 webpackrequire.ensure()

如果Vue项目使用webpack作为构建工具,那么可以使用webpack提供的require.ensure()方法来实现组件懒加载,不过这种方式已经不被推荐使用了。

例如,可以这样定义一个异步组件:

Vue.component('my-component', resolve => {
  require.ensure(['./MyComponent.vue'], () => {
    resolve(require('./MyComponent.vue'))
  })
});

三、延伸阅读 软件程序唤醒

Vue 如何实现pc端检测本地电脑是否安装某应用,安装则打开反之则下载?

3.1 protocolCheck 实现

vue可通过使用protocolCheck实现以上功能。 protocolcheck.js 主要功能是检测电脑注册表中已注册的exe软件程序是否唤醒成功。

语法格式如下:

window.protocolCheck(openUrl, () => {
   alert('检测到未安装客户端,请确认是否下载?')
 });
  • openUrl:是要打开的软件的路径,比如打开 weixin:// qq://

第二个参数是检测电脑中是否安装了要打开的程序 如果不是则执行回调函数中的内容。

vue中使用protocolCheck需要全局引入需要全局引入。 具体操作步骤如下:

  1. protocolcheck.js文件放在 static 文件夹下,并在index.html中引入上面的js。由于 protocolcheck.js不能通过es6import方式引入,所以只能挂载在全局的window上。

在这里插入图片描述

  1. 在页面中应用,因为已经把protocolcheck挂载至window上。应用示例如下:
window.protocolCheck(
   'u3d://',
   (fail) => {
     console.log('fail', fail)
     // 没有安装 弹窗显示 引导去下载
    this.dialogshiyan = true;
   },
   (succ) => {
     // 安装则直接打开
     console.log('succ', succ)
   }
)

注意⚠️:window.protocolCheck方法只能打开电脑注册表中已注册的软件。

3.2 自定义实现

import { openUrlWithInputTimeoutHack } from '@/utils/arouse'
openUrlWithInputTimeoutHack('weixin:\\', () => {
  console.log('未安装');
  window.location.href = 'xxx软件下载路径'
}, () => {
  console.log('已安装,自动唤起');
})

arouse文件点击下载

四、拓展阅读

  • 《Vue进阶(幺陆玖)信创终端适配改造》
  • 《protocolcheck.js》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/106713.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

服务器执行命令或脚本的两种方式

目录 1、通过Runtime 2、通过ProcessBuilder 在java开发中&#xff0c;有时候需要与操作系统的命令行交互&#xff0c;执行特定的CMD命令或脚本。 我们有如下两种方式来实现: Java的Runtime类和ProcessBuilder类都允许Java程序启动一个新的进程并执行特定的命令&#xff0…

[数据结构]-二叉搜索树

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一、二叉搜…

【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记

0. 内容 1. 时间戳同步问题及意义 时间戳同步的原因&#xff1a;如果不同步&#xff0c;由于IMU频率高&#xff0c;可能由于时间戳不同步而导致在两帧camera之间的时间内用多了或者用少了IMU的数据&#xff0c;且时间不同步会导致我们首尾camera和IMU数据时间不同&#xff0c;…

Linux部署Redis Cluster高可用集群(附带集群节点添加删除以及槽位分配操作详解)

目录 一、前言二、下载安装Redis2.1、选择需要安装的Redis版本2.2、下载并解压Redis2.3、编译安装Redis 三、部署Redis Cluster高可用集群3.1、准备配置文件3.2、启动Redis服务3.3、创建Redis集群3.4、查看集群关系3.5、连接集群Redis进行数据读写以及重定向测试3.6、故障转移和…

如何查找特定基因集合免疫基因集 炎症基因集

温故而知新&#xff0c;再次看下Msigdb数据库。它更新了很多内容。给我们提供了一个查询基因集的地方。 关注微信&#xff1a;生信小博士 比如纤维化基因集&#xff1a; 打开网址&#xff1a;https://www.gsea-msigdb.org/gsea/msigdb/index.jsp 2.点击search 3.比如我对纤维…

ubuntu 22.04安装百度网盘

百度网盘 客户端下载 (baidu.com) 下载地址 sudo dpkg -i baidunetdisk_4.17.7_amd64.deb

3.线性神经网络

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 线性回归基础优化算法一、线性回归1、买房案例2、买房模型简化3、线性模型4、神经网络5、损失函数6、训练数据7、参数学习8、显示解9、总结 二、 基础优化算法1、梯度下降2、学习率3、小批量随机梯度下降4、批量大小5、…

笔记43:ResNet 结构详解

笔记本地地址&#xff1a;D:\work_file\DeepLearning_Learning\03_个人笔记\2.图像处理任务\ResNet网络学习 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a

C语言 每日一题 PTA 10.27 day5

1.高速公路超速处罚 按照规定&#xff0c;在高速公路上行使的机动车&#xff0c;达到或超出本车道限速的10 % 则处200元罚款&#xff1b; 若达到或超出50 % &#xff0c;就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。 输入格式 : 输入在一行中给出2个正…

子集生成算法:给定一个集合,枚举所有可能的子集

给定一个集合&#xff0c;枚举所有可能的子集。 &#xff08;为简单起见&#xff0c;本文讨论的集合中没有重复元素&#xff09; 1、方法一&#xff1a;增量构造法 第一种思路是一次选出一个元素放到集合中&#xff0c;程序如下&#xff1a; void print_subset(int n, int …

Fabric.js 使用自定义字体

本文简介 点赞 关注 收藏 学会了 如果你使用 Fabric.js 做编辑类的产品&#xff0c;有可能需要给用户配置字体。 这次就讲讲在 Fabric.js 中创建文本时怎么使用自定义字体、在项目运行时怎么修改字体、以及推荐一个精简字体库的工具。 学习本文前&#xff0c;你必须有一点…

二维码智慧门牌管理系统升级解决方案:采集计划精细化管理的艺术

文章目录 前言一、采集计划的定义和配置流程二、多采集计划配置策略三、采集计划的实践应用 前言 在数字化时代&#xff0c;建设智慧城市需要借助各种先进的技术工具。其中&#xff0c;二维码智慧门牌管理系统在城市管理、资源调配和公众服务等方面扮演着举足轻重的角色。关键…

实现寄生组合继承

寄生组合继承是一种继承方式&#xff0c;它通过组合使用构造函数继承和原型继承的方式&#xff0c;实现了高效而且正确的继承方式。 具体实现步骤如下&#xff1a; ① 定义一个父类&#xff0c;实现其属性和方法&#xff1a; function Person(name) {this.name namethis.age…

贝锐花生壳内网穿透推出全新功能,远程业务连接更安全

贝锐旗下内网穿透兼动态域名解析品牌花生壳目前推出了全新的“访问控制”功能&#xff0c;可精确设置访问权限&#xff0c;充分保障信息安全&#xff0c;满足更多用户安全远程访问内网服务的需求。 通过这一功能&#xff0c;可实现指定时间、IP、地区等条件下才能远程访问映射的…

什么是React中的高阶组件(Higher Order Component,HOC)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

PyCharm 安装 cx_Oracle 失败

我在PyCharm的终端用 pip安装cx_Oracle失败&#xff0c;报错情况如下&#xff1a; ERROR: Could not build wheels for cx_Oracle, which is required to install pyproject.toml-based projects 出错原因&#xff1a; python 的版本太高了&#xff0c;我的是3.11版本的&…

百度迁徒数据爬虫方法

百度迁徙数据是由百度公司提供的免费开放数据集&#xff0c;主要包含了全国范围内各大城市的每日人口流入流出情况。这些数据来源于百度地图上的用户位置信息&#xff0c;通过计算得到每个小时的流入流出人数&#xff0c;并且可以按照省级、市级等多种维度进行分析。 百度迁徙 …

缓解光纤激光切割机老化之如何保养光纤激光切割机的光学镜片

激光切割头具备极高的精密度和昂贵的价格&#xff0c;是光纤激光切割机最关键的运行部分之一。在日常的光纤激光切割机维修过程中频繁出现的关于切割头使用寿命的问题就是内部光学镜片的污染及损坏。 部分导致光纤激光切割机激光切割头光学镜片污染的原因主要包括&#xff1a;对…

c++ qt连接操作sqlite

qt客户端编程,用到数据库的场景不多,但是部分项目还是需要数据库来保存同步数据,客户端用到的数据库,一般是sqlite。 Qt提供了数据库模块,但是qt本身的数据库模块并不好用,会有各种问题, 建议大家不要,可以自己封装数据库的操作。本篇博客介绍qt连接操作sqlite。 sqlit…

如何使用react-router v6快速搭建路由?

前言 之前一直使用react-router V5&#xff0c;上次搭建一个小项目&#xff0c;下载的react-router V6&#xff0c; 本以为没什么区别&#xff0c;就按照v5的那一套用了&#xff0c;区区小功能&#xff0c;奈何不了我的。然后自信满满的运行&#xff0c;哦豁&#xff0c;不生效…