当前位置: 首页 > news >正文

vue3+vite+ts集成第三方js

npm run dev可以正常运行和测试。但是npm run build会报错。

要实现引入静态js,避免使用全局变量报错。

1. HTML 引入第三方 JS

在你的 HTML 文件中,通过 <script> 标签引入一个本地第三方 JS 文件,例如:

<script src="/path/to/tools.js"></script>

tools.js文件中定义如下函数:

function exitApp(){if(navigator){if (navigator.app) {navigator.app.exitApp();} else if (navigator.device) {navigator.device.exitApp();}}
}

2. 声明文件(tools.d.ts)

为了在 TypeScript 项目中使用这个全局变量而不产生错误提示,你需要为这个 JS 文件创建一个类型声明文件。例如,创建一个 tools.d.ts 文件,内容如下:

declare namespace cordova {// 在这里定义 cordova 对象的类型和结构function exitApp(): void;// 其他需要的类型声明
}

这个文件告诉 TypeScript 存在一个 rap 全局变量,并描述了它的类型和接口。

3. 引用声明文件(env.d.ts)

在 env.d.ts 文件中使用 /// <reference path="..."/> 语法引用声明文件:

该文件在项目根目录下,直接在后面加一行。注意保留前面3个斜杠。

/// <reference types="vite/client" />
/// <reference path="./src/uitls/tools.d.ts" />

4. 使用 cordova 变量

const exit = () => {showConfirmDialog({title: '确认要退出系统吗?',}).then(() => {cordova.exitApp();}).catch(() => {// on cancel});}

这些就可以正常编译通过了。npm run build。

cordova 变量的来源
HTML 引入:通过 HTML 文件引入的 tools.js 文件,使得浏览器环境中存在一个全局的 rap 对象。
TypeScript 类型声明:通过 tools.d.ts 文件中的 declare namespace rap {},TypeScript 知道了 rap 的结构和类型。
项目引用:env.d.ts 中的引用确保 TypeScript 编译器在整个项目中都能识别 rap 变量的类型信息。
这样,在项目中使用 rap 变量时,既能够利用浏览器中的全局变量,又可以享受 TypeScript 的类型检查和智能提示功能。

相关文章:

vue3+vite+ts集成第三方js

npm run dev可以正常运行和测试。但是npm run build会报错。 要实现引入静态js&#xff0c;避免使用全局变量报错。 1. HTML 引入第三方 JS 在你的 HTML 文件中&#xff0c;通过 <script> 标签引入一个本地第三方 JS 文件&#xff0c;例如&#xff1a; <script sr…...

android framework.jar 在应用中使用

在开发APP中&#xff0c;有时会使用系统提供的framework.jar 来替代 android.jar, 在gradle中配置如下&#xff1a; 放置framework.jar 依赖配置 3 优先级配置 gradle.projectsEvaluated {tasks.withType(JavaCompile) {Set<File> fileSet options.bootstrapClasspat…...

FFmpeg入门

在音视频处理领域&#xff0c;有一款神器级的工具横扫开发者圈&#xff0c;那就是 FFmpeg。它被誉为“音视频处理的瑞士军刀”&#xff0c;凭借强大的功能和开源的特性成为众多开发者和媒体从业者的首选。今天&#xff0c;我们就来聊聊 FFmpeg 的入门使用&#xff0c;带你轻松开…...

云平台一键部署【Video-Background-Removal】视频换背景,无任何限制,随意换

Video-Background-Removal 是一款革命性的视频背景替换工具&#xff0c;旨在让用户轻松实现视频背景的快速更换。无论你是专业创作者还是普通用户&#xff0c;这款软件都能让你在几秒钟内改变背景&#xff0c;完全消除限制&#xff0c;随心所欲&#xff0c;随时随地想换就换&am…...

量子计算:从薛定谔的猫到你的生活

文章背景 说到量子计算&#xff0c;不少人觉得它神秘又遥不可及。其实&#xff0c;它只是量子物理学的一个“应用小分支”。它的核心在于量子比特的“叠加”和“纠缠”&#xff0c;这些听上去像科幻小说的概念&#xff0c;却为计算世界开辟了一片全新的天地。如果经典计算是“…...

51单片机——I2C-EEPROM

I2C&#xff1a;总线标准或通信协议 EEPROM&#xff1a;AT24C02芯片 开发板板载了1个EEPROM模块&#xff0c;可实现IIC通信 1、EEPROM模块电路&#xff08;AT24C02&#xff09; 芯片的SCL和SDA管脚是连接在单片机的P2.1和P2.0上 2、I2C介绍 I2C&#xff08;Inter&#xff…...

R语言的语法糖

R语言的语法糖 引言 在编程语言中&#xff0c;所谓的“语法糖”是指那些使得程序员能够以更简洁、直观的方式书写代码的语法形式。R语言作为一种用于统计分析和数据可视化的编程语言&#xff0c;具有丰富的功能和灵活的语法。本文将深入探讨R语言中的语法糖&#xff0c;帮助读…...

【算法学习笔记】30:埃氏筛(Sieve of Eratosthenes)和线性筛(Linear Sieve)

测试题目&#xff1a;AcWing 868. 筛质数 埃氏筛&#xff08;Sieve of Eratosthenes&#xff09; 如果 i i i是素数&#xff0c;每次把 i i i的倍数都筛掉&#xff0c;存在重复筛选&#xff0c;时间复杂度 n ⋅ l o g ( l o g n ) n \cdot log(logn) n⋅log(logn)。 #includ…...

【AscendC】tiling方案设计不当引起的一个时隐时现的bug

在设计tiling方案时&#xff0c;通常会考虑到非对齐的场景&#xff0c;对输入数据进行补全操作从而使得非对齐场景也能正确的完成计算。但在某些算子的实现过程中&#xff0c;沿用上述操作却会造成数据的错误计算&#xff0c;且这种错误出现与否取决于随机生成的测试数据质量。…...

视频转码对画质有影响吗?视频融合平台EasyCVR支持哪些转码格式?

视频转码过程是将视频文件从一种编码格式转换为另一种格式的过程&#xff0c;这一过程在现代数字媒体中扮演着至关重要的角色。众所周知&#xff0c;视频转码不仅仅是简单的格式转换&#xff0c;它涉及多个关键参数的改变&#xff0c;例如视频编码格式、比特率、分辨率以及帧率…...

工业视觉2-相机选型

工业视觉2-相机选型 一、按芯片类型二、按传感器结构特征三、按扫描方式四、按分辨率大小五、按输出信号六、按输出色彩接口类型 这张图片对工业相机的分类方式进行了总结&#xff0c;具体如下&#xff1a; 一、按芯片类型 CCD相机&#xff1a;采用电荷耦合器件&#xff08;CC…...

基于SpringBoot+Vue的健身房管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着现代生活节奏的加快&#xff0c;人们对健康的需求日益增强&#xff0c;健身房行业因此迎来了蓬勃的发展。然而&#xff0c;传统的健身房管理方式逐渐暴露出效率低下、会员信息管理混乱、课程安排不灵活等问题。为了解决这些…...

leetcode 面试经典 150 题:快乐数

链接快乐数题序号202题型数组解题方法哈希表难度简单熟练度✅✅✅✅ 题目 编写一个算法来判断一个数 n 是不是快乐数。 [快乐数] 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1&#xff0…...

Leetcode 279. 完全平方数 动态规划 完全背包问题

原题链接&#xff1a;Leetcode 279. 完全平方数 class Solution { public:int numSquares(int n) {vector<int> dp(n 1, 0);for (int i 1; i < n; i) {int tmp INT_MAX;for (int j 1; j * j < i; j) {tmp min(tmp, dp[i - j * j]);}dp[i] tmp 1;}return dp[…...

python学opencv|读取图像(三十三)阈值处理图像-限定像素

【1】引言 前序我们已经掌握分解图像的通道&#xff0c;设置各个通道的RGB值&#xff0c;相关文章包括且不限于&#xff1a; python学opencv|读取图像&#xff08;十四&#xff09;BGR图像和HSV图像通道拆分-CSDN博客 python学opencv|读取图像&#xff08;十五&#xff09;B…...

QT Quick QML 实例之椭圆投影,旋转

文章目录 一、前言二、演示三、部分代码与分析 QML 其它文章请点击这里: QT QUICK QML 学习笔记 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 一、前言 此 Demo 主要用于无人机吊舱视角的模拟&#xf…...

炸砖块游戏的最终图案

描述 小红正在玩一个“炸砖块”游戏,游戏的规则如下:初始有一个 n * m 的砖块矩阵。小红会炸 k 次,每次会向一个位置投炸弹,如果这个位置有一个砖块,则砖块消失,上方的砖块向下落。小红希望你画出最终砖块的图案。 输入描述 第一行输入三个正整数 n, m, k,代表矩阵的行…...

LLM的实验平台有哪些:快速搭建测试大语言模型

LLM的实验平台有哪些:快速搭建测试大语言模型 目录 LLM的实验平台有哪些:快速搭建测试大语言模型低代码平台工程观测平台本地应用平台在线编程竞技场性能排名代码质量评估开源框架Hugging Face是一个机器学习和数据科学平台及社区主要功能开源工具与库应用场景优势低代码平台…...

python3GUI--大屏可视化-XX产业大数据指挥舱(附下载地址) By:PyQt5

文章目录 一&#xff0e;前言二&#xff0e;预览三&#xff0e;软件开发心得1.使用方法2.UI设计3.代码架构4.项目结构 四&#xff0e;代码片段分享1.图片平滑缩放组件2.滚动日志组件 五&#xff0e;心得体会 大小&#xff1a;35.0 M&#xff0c;软件安装包放在了这里! 本软件未…...

.NET 9.0 的 Blazor Web App 项目中 Hash 变换(MD5、Pbkdf2) 使用备忘

一、生成 string 对应的 MD5 码 /// <summary>/// 生成 string 对应的 MD5 码/// </summary>/// <param name"str">需要转换的字符串 string&#xff1a;用于登录认证时&#xff0c;str username 线下传递的key DateTime.Now.Ticks.ToString() …...

AGI能力边界与安全约束

AGI能力边界与安全约束&#x1f4dd; 本章学习目标&#xff1a;通过本章学习&#xff0c;你将全面掌握"AGI能力边界与安全约束"这一核心主题&#xff0c;建立系统性认知。一、引言&#xff1a;为什么这个话题如此重要 在人工智能快速发展的今天&#xff0c;AGI能力边…...

AI辅助开发新体验:让快马平台智能生成风车动漫用户中心模块

最近在开发一个动漫类网站项目时&#xff0c;遇到了用户中心模块的开发需求。作为一个独立开发者&#xff0c;既要处理前端界面又要兼顾后端接口&#xff0c;工作量确实不小。好在发现了InsCode(快马)平台的AI辅助开发功能&#xff0c;帮我高效完成了这个模块的开发。下面分享下…...

JavaScript中的面板拖动与调整大小

介绍 在现代的Web应用中,面板的拖动和调整大小是一个常见的需求。用户希望能够通过拖动边界线来改变面板的尺寸,尤其是在具有多面板布局的应用中。这篇文章将详细探讨如何使用JavaScript实现这一功能,并结合一个实际案例进行说明。 问题描述 用户遇到的问题是无法通过拖动…...

OpenClaw学习监督助手:Qwen3-14b_int4_awq制定计划与检查进度

OpenClaw学习监督助手&#xff1a;Qwen3-14b_int4_awq制定计划与检查进度 1. 为什么需要AI学习监督助手 去年备考PMP认证时&#xff0c;我经历过一段痛苦的自我管理期。每天下班后面对厚厚的PMBOK指南&#xff0c;总在"今天该看哪章"和"上次看到哪里"之间…...

提升游戏资源管理效率:Steam清单获取的自动化解决方案

提升游戏资源管理效率&#xff1a;Steam清单获取的自动化解决方案 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 你是否曾遇到想要备份Steam游戏却不知从何下手&#xff1f;或者尝试解析游戏文…...

3个实战技巧让你的QQ空间数据实现永久备份

3个实战技巧让你的QQ空间数据实现永久备份 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间里的青春记忆会随着时间消失&#xff1f;那些承载着成长点滴的说说、珍贵的照…...

如何永久保存微信聊天记录:WeChatMsg终极指南与数据守护方案

如何永久保存微信聊天记录&#xff1a;WeChatMsg终极指南与数据守护方案 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...

Win11Debloat终极指南:快速清理Windows 11系统,性能提升51%的免费神器

Win11Debloat终极指南&#xff1a;快速清理Windows 11系统&#xff0c;性能提升51%的免费神器 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other c…...

Cadence计算器实战:从波形运算到自定义函数编程

1. 差分信号处理的核心挑战 在模拟电路设计中&#xff0c;差分信号的处理一直是工程师们面临的常见难题。我刚入行时&#xff0c;第一次看到差分信号的波形图完全懵了——两条看似镜像对称的曲线&#xff0c;到底该怎么计算它们的共模电压、差模电压这些关键参数&#xff1f;传…...

C++的std--ranges算法自定义比较器与投影函数在排序中的组合使用

C20引入的std::ranges库为算法操作带来了更简洁、更安全的表达方式&#xff0c;其中自定义比较器与投影函数的组合使用尤其值得关注。这种组合不仅提升了代码的可读性&#xff0c;还能实现复杂的排序逻辑&#xff0c;让开发者能够更灵活地处理数据结构。本文将深入探讨这一特性…...