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

news2024/11/18 1:45:39

文章目录

    • 一、前言
    • 二、组件懒加载
      • 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》

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电动两轮车智能化浪潮崛起,移远通信以全场景解决方案引领户外出行新变革

凭借受众广泛、使用方便等优势&#xff0c;电动两轮出行越来越走俏&#xff0c;成为通勤、校园、景区等场景的不二之选。而随着物联网新技术的采用&#xff0c;智能化两轮车能为骑行者带来更多样化、更舒适的驾驶和交互体验&#xff0c;也成为“Z世代”的扮靓利器和出游好伙伴。…

【LeetCode每日一题合集】2023.10.16-2023.10.22(只出现一次的数字Ⅲ)

文章目录 260. 只出现一次的数字 III⭐&#xff08;异或&#xff09;&#x1f402;2652. 倍数求和解法1——枚举模拟解法2—— O ( 1 ) O(1) O(1)容斥原理相似题目——1201. 丑数 III&#xff08;二分查找容斥原理&#xff09; 2530. 执行 K 次操作后的最大分数解法1——贪心优…

机器学习——代价敏感错误率与代价曲线

文章目录 代价敏感错误率实现代价曲线例子 代价敏感错误率 指在分类问题中&#xff0c;不同类别的错误分类所造成的代价不同。在某些应用场景下&#xff0c;不同类别的错误分类可能会产生不同的代价。例如&#xff0c;在医学诊断中&#xff0c;将疾病患者错误地分类为健康人可…

区块链技术的未来:去中心化应用和NFT的崛起

区块链技术正在以前所未有的速度改变着金融和数字资产领域。它的演进为去中心化应用和非替代性代币&#xff08;NFT&#xff09;的崛起提供了坚实的基础。在本文中&#xff0c;我们将深入探讨这一数字革命的关键方面&#xff0c;从区块链的基本原理到它如何改变金融领域&#x…

修改svc的LoadBalancer的IP引发的惨案

文章目录 背景修改externalIPs的操作api-server报错日志挽救教训 背景 k8s集群没有接外部负载均衡&#xff0c;部署istio的时候ingressgateway一直pending。 于是手动修改了这个lb svc的externalIP&#xff0c;于是k8s就崩了&#xff0c;如何崩的&#xff0c;且听我还道来。 …

Redis(03)| 数据结构-链表

大家最熟悉的数据结构除了数组之外&#xff0c;我相信就是链表了。 Redis 的 List 对象的底层实现之一就是链表。C 语言本身没有链表这个数据结构的&#xff0c;所以 Redis 自己设计了一个链表数据结构。 链表节点结构设计 先来看看「链表节点」结构的样子&#xff1a; type…

ReentrantLock 的实现原理

ReentrantLock ReentrantLock 是一种可重入的排它锁&#xff0c;主要用来解决多线程对共享资源竞争的问题。它的核心特性有几个&#xff1a; 它支持可重入&#xff0c;也就是获得锁的线程在释放锁之前再次去竞争同一把锁的时候&#xff0c;不需要加锁就可以直接访问。它支持公…

企业微信接入芋道SpringBoot项目

背景&#xff1a;使用芋道框架编写了一个数据看板功能需要嵌入到企业微信中&#xff0c;方便各级人员实时观看 接入企业微信的话肯定不能像平常pc端一样先登录再根据权限看页面&#xff0c;不然的话不如直接手机浏览器打开登录账号来得更为方便&#xff0c;所以迎面而来面临两…

结构体数组经典运用---选票系统

结构体的引入 1、概念&#xff1a;结构体和其他类型基础数据类型一样&#xff0c;例如int类型&#xff0c;char类型&#xff0c;float类型等。整型数&#xff0c;浮点型数&#xff0c;字符串是分散的数据表示&#xff0c;有时候我们需要用很多类型的数据来表示一个整体&#x…

网络通信 | 内网穿透

内网穿透 / 获取临时域名 : 下载且安装软件 : cpolar获得 “Authtoken” 且配置 cpolar &#xff0c;生成“内网穿透”工具配置文件启动服务&#xff0c;临时获取到一个IP地址 (临时域名) 让当前 电脑能获取一个公网的IP地址&#xff0c;让微信后台能调用到当前外卖系统的后端服…

亚马逊发布卖家专用的AI工具,能为商品添加背景

&#x1f989; AI新闻 &#x1f680; 亚马逊发布卖家专用的AI工具&#xff0c;能为商品添加背景 摘要&#xff1a;亚马逊发布了一款针对卖家的生成式AI工具&#xff0c;允许卖家为商品添加由AI生成的背景。亚马逊称有75%的广告主因广告内容质量不佳而导致营销失败。通过比对两…

企业文件传输速度慢?宽带利用率不高怎么办?

在当今数字化时代&#xff0c;企业间的文件传输已经成为日常工作中不可或缺的一部分。很多企业业务全球化趋势明显&#xff0c;拥有分布在不同地理位置的办事处、工厂、供应商和合作伙伴。它们需要在这些地点之间传输文件&#xff0c;如合同、报告、设计文件等。企业常常需要传…

【Idea】idea启动同一程序不同端口

前言 在idea中配置两个不同端口&#xff0c;同时运行两个相同的主程序。 更多端口配置同理 idea版本:2022.2.3 1.在service中复制一个进程,指定不同端口 右键打开点击 copy Configuration 2.点击Modify option 2. 选择VM option(用于指定新的端口) 页面就会出现下面的指定…

代码随想录算法训练营第3天| 203.移除链表元素 、 707.设计链表 、 206.反转链表

JAVA代码编写 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示…

[Leetcode] 0101. 对称二叉树

101. 对称二叉树 题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#…

“智”造时代引领AI机器视觉技术进步,加速渗透下游应用赛道

机器视觉作为智能制造的“智慧之眼”&#xff0c;为智能制造打开了新的“视”界&#xff0c;是实现工业自动化和智能化的关键核心技术。人工智能与机器视觉的结合使用&#xff0c;逐渐成为现阶段研究与应用的热点&#xff0c;同时也成为机器视觉行业发展的核心驱动力。 近年来…

Compose 自定义 - 绘制 Draw

一、概念 所有的绘制操作都是通过调整像素大小来执行的。若要确保项目在不同的设备密度和屏幕尺寸上都能采用一致的尺寸&#xff0c;请务必使用 .toPx() 对 dp 进行转换或者采用小数尺寸。 二、Modifier 修饰符绘制 官方页面 在修饰的可组合项之上或之下绘制。 .drawWithCon…

机器视觉3D项目评估的基本要素及测量案例分析

目录 一. 检测需求确认 1、产品名称&#xff1a;【了解是什么产品上的零件&#xff0c;功能是什么】 2、*产品尺寸&#xff1a;【最大兼容尺寸】 3、*测量项目&#xff1a;【确认清楚测量点位】 4、*精度要求&#xff1a;【若客户提出的精度值过大或者过小&#xff0c;可以和客…

论坛介绍 | COSCon'23 开源文化(GL)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于 10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&a…

hadoop使用简介

git clone hadoop源码地址&#xff1a;https://gitee.com/CHNnoodle/hadoop.git git clone错误&#xff1a; Filename too long错误&#xff0c;使用git config --global core.longpaths true git clone https://gitee.com/CHNnoodle/hadoop.git -b rel/release-3.2.2 拉取指定…