低版本浏览器兼容解决方案@babel/preset

2023-11-14 1177阅读

温馨提示:这篇文章已超过494天没有更新,请注意相关的内容是否还可用!

项目打包后,如果需要支持的浏览器版本太低,那么我们需要使用babel对js代码进行语法降级和polyfill注入。也就是我们常说的es6到es5。目前主流的解决方案有两种:。由于 es6 到 es5 是在构建过程中编译和转换的,而不是运行时代码,因此它将被设置为 devDependency。这里使用了ES6 API和Object.entries的箭头函数语法,然后创建了babel配置文件.babelrc.json。请注意,这个 _Object$entries 是通过非全局 Object.enties api 使用的,从而避免了全局污染。Transform-runtime 并不是一个完美的解决方案。因此,transform-runtime和preset-env之间没有绝对的好坏。

浏览兼容

项目打包后,如果需要支持的浏览器版本太低,那么我们需要使用babel对js代码进行语法降级和polyfill注入。 也就是我们常说的es6到es5。 目前主流的解决方案有两种:(为什么只有两种,稍后再说)

@babel/preset-env 方案使用

创建一个新项目 babel-test,使用高性能包管理器 pnpm

pnpm init

首先我们需要安装相关的依赖项。 由于 es6 到 es5 是在构建过程中编译和转换的,而不是运行时代码,因此它将被设置为 devDependency。

pnpm install @babel/cli @babel/core @babel/preset-env -D

然后创建一个新的src/index.js

const obj = {a: 1}
const a = Object.entries(obj)
const b = () => {}
console.log(a, b)

这里使用了ES6 API和Object.entries的箭头函数语法,然后创建了babel配置文件.babelrc.json。

{
    "presets": [
      [
        "@babel/preset-env", 
        {
          // 指定兼容的浏览器版本
          "targets": {
            "ie": "11"
          },
          // 基础库 core-js 的版本,一般指定为最新的大版本
          "corejs": 3,
          // Polyfill 注入策略
          "useBuiltIns": "usage",
          // 不将 ES 模块语法转换为其他模块语法
          "modules": false
        }
      ]
    ]
  }

参数说明:

向 package.json 添加命令

 "scripts": {
    "build": "babel src --out-dir dist"
  },

然后执行npm run build

模块打包结果: false:

ESM包装结果.png

模块的打包结果:'auto':

commonjs.png

总结

对于一般的应用项目,使用上面的配置即可。 如果您更改它,只需更改您想要兼容的浏览器目标即可。 不过,上述配置也会存在一些问题:如果使用新功能,往往会通过基础库(如 core-js)将 Polyfill 添加到全局环境中。 如果您正在开发应用程序,则不会有任何问题。 如果你是开发第三方工具库,那会非常困难。 可能对全球空间造成污染。 因此,以下方案适合解决第三方工具库的兼容性问题。

@babel/plugin-transform-runtime 方案使用

浏览器版本低怎么办_浏览器办低版本怎么设置_浏览器办低版本怎么办

pnpm i @babel/plugin-transform-runtime -D
pnpm i @babel/runtime-corejs3 -S

更改 .babelrc.json

{
  "plugins": [
    // 添加 transform-runtime 插件
    [
      "@babel/plugin-transform-runtime", 
      {
        "corejs": 3
      }
    ]
  ],
  "presets": [
    [
      "@babel/preset-env", 
      {
        "targets": {
          "ie": "11"
        },
        "corejs": 3,
        // 关闭 @babel/preset-env 默认的 Polyfill 注入
        "useBuiltIns": false,
        "modules": false
      }
    ]
  ]
}

注意,我们添加了“plugins”配置,这里需要将preset-env的useBuiltIns设置为false。 这样,我们就可以关闭全局polyfill,这样我们导入的polyfill就不会污染全局环境了。

你可以看到结果

_Object$entries.png

请注意,这个 _Object$entries 是通过非全局 Object.enties api 使用的,从而避免了全局污染。

那么,我们在做应用项目的时候是不是也可以直接使用这个方案呢? 并不真地。

Transform-runtime 并不是一个完美的解决方案。 目标不会以 polyfill 的方式读取,因此项目中使用的所有语法都将被注入 polyfill。 对于一些需要兼容低端浏览器的项目来说可能影响不大,但如果是现代浏览器处理器就会注入大量不必要的polyfill代码,导致bundle大小大幅增加。 因此,transform-runtime和preset-env之间没有绝对的好坏。 选择哪一种取决于需求场景。

总结

经过以上分析比较,我们可以得出大方向是正确的结论:

(19) 中华人民共和国国家知识产权局 (12) 发明专利申请 (10) 申请公开号 CN 114253887 A (43) 申请公开日 2022.03.29 (21) 申请号 202111563868.9 (22) 申请日 2021.12. 20(71)申请人上海同兴智能科技有限公司地址:201804上海市嘉定区曹安路4801号同济大学国家大学科技园嘉定分院904室(72)发明人不公告发明人 (74) 专利代理机构 常州全航专利代理有限公司 32280 代理人 赵辉 (51)Int.Cl.G06F 13/38 (2006.01)G06F 13/40 (2006.01)H04L 12/40 (2006.01) 权利要求书第1页 描述 4页 附件 第1页 (54) 发明名称 阻抗匹配适配器、阻抗匹配系统及方法 (57) 摘要 本发明属于适配器技术领域,具体涉及一种阻抗匹配适配器、阻抗匹配系统及方法,其中阻抗匹配适配器包括:内部电路,CAN接口模块和阻抗匹配模块电连接至内部电路。 CAN接口模块适合连接目标网络; 阻抗匹配模块连接至CAN接口模块; 内部电路适合控制阻抗匹配模块,通过调整CAN接口模块两个接口之间的电阻值,用户可以通过软件自动搭建硬件电路,实现阻抗可配置的总线适配器,提高了总线适配器的工作效率。使用通用总线适配器。

A7 8 8 3 5 2 4 1 1N C CN 114253887 A 1/1 第1页 一种阻抗匹配适配器,其特征在于,包括:内部电路、与所述内部电路电连接的CAN接口模块和阻抗匹配模块; CAN接口模块适合连接目标网络; 阻抗匹配模块连接至CAN接口模块; 内部电路适用于控制阻抗匹配模块来调整CAN接口模块的两个接口之间的电阻值。 2.根据权利要求1所述的阻抗匹配适配器,其特征在于,所述CAN接口模块包括: 至少一个CAN_L接口和CAN_H接口。 CAN_L接口与内部电路连接; CAN_H接口与内部电路连接; 内部电路已连接; CAN_L接口和CAN_H接口之间连接有阻抗匹配模块; CAN_L接口适用于连接目标网络的CAN_L; CAN_H接口适用于连接目标网络的CAN_H。 3.根据权利要求2所述的阻抗匹配适配器,其特征在于,所述阻抗匹配模块包括: 继电器和终端电阻。 终端电阻一端连接继电器,另一端连接CAN_H接口; 继电器连接内部电路和CAN_L接口; 内部电路适用于控制继电器的开合,以调节CAN_H接口和CAN_L接口之间的电阻值。 4.根据权利要求3所述的阻抗匹配适配器,其特征在于,所述终端电阻的阻值为120欧姆。

5.根据权利要求3所述的阻抗匹配适配器,其特征在于,所述适配器还包括: USB接口模块,电连接至所述内部电路; USB接口模块与主机连接,接收内部电路根据控制指令控制继电器的开闭,内部电路通过USB接口模块反馈继电器状态。 6.一种阻抗匹配系统,其特征在于,包括: 主机和适配器; 适配器适于连接至目标网络; 适配器用于接收主机发送的控制指令; 适配器用于控制指令调整与目标网络连接的两个接口之间的电阻值。 7.一种适配器阻抗匹配方法,其特征在于,包括: 调整所述适配器与所述目标网络连接之间的阻抗。 8、根据权利要求7所述的适配器阻抗匹配方法,其特征在于,所述调整适配器与目标网络连接之间的阻抗的方法包括:根据上位机发送的控制指令,在CAN接口模块的两个接口之间进行连接或者断开终端电阻来调整接口间的电阻。 22 CN 114253887 A Abstract Page 1/4 阻抗匹配适配器、阻抗匹配系统及方法技术领域 [0001]本发明属于适配器技术领域,具体涉及一种阻抗匹配适配器、阻抗匹配系统及方法。 背景技术 [0002] 现有的总线通信,例如CAN总线、FlexRay总线或汽车以太网,需要总线阻抗匹配。

以CAN总线为例,总线两端需要连接120欧姆的终端电阻。 对于通用总线适配器,其所连接的网络上的终端电阻的数量是不确定的。 这时,技术人员就需要进行阻抗匹配操作。 一般来说,有两种可能: [0003] [1]现有总线阻抗已经匹配,所连接的总线适配器不允许添加任何终端电阻。 [0004] [2]现有总线阻抗不匹配,所连接的总线适配器需要添加终端电阻。 [0005] 为了兼容未知总线的阻抗,一般适配器不具有终端电阻,而是将阻抗匹配任务转移给使用适配器的工程师。 [0006] 现有技术方案中,由于阻抗匹配的任务转移到了使用适配器的工程师身上,这就需要相关工程师通过在线束上加电阻或者在接口上加胶带的方式来测量现有网络的阻抗。 PCB板上添加的电阻适配器或跳线帽用于连接电阻,这给相关工程师带来了不便。 [0007] 因此,基于上述技术问题,有必要设计一种新的阻抗匹配适配器、阻抗匹配系统及方法。 发明内容 [0008] 本发明的目的是提供一种阻抗匹配适配器、阻抗匹配系统及方法。 [0009] 为了解决上述技术问题,本发明提供了一种阻抗匹配适配器,包括: [0010] 内部电路,以及与所述内部电路电连接的CAN接口模块和阻抗匹配模块; [0011] CAN接口模块适用于连接目标网络; [0012] 所述阻抗匹配模块与所述CAN接口模块连接; [0013] 内部电路适用于控制阻抗匹配模块来调整CAN接口模块的两个接口之间的电阻值。

[0014] 进一步地,所述CAN接口模块包括:至少一个CAN_L接口和CAN_H接口; [0015] CAN_L接口与内部电路连接; [0016] CAN_H接口与内部电路连接; [0017] CAN_L接口和CAN_H接口之间连接有阻抗匹配模块; [0018] CAN_L接口适用于连接目标网络的CAN_L; [0019] CAN_H接口适用于连接目标网络的CAN_H。 [0020] 进一步地,所述阻抗匹配模块包括:继电器和终端电阻; [0021] 终端电阻一端连接继电器,另一端连接CAN_H接口; 33 CN 114253887 A 说明书第2/4页 [0022] 继电器 连接内部电路与CAN_L接口; [0023] 内部电路适用于控制继电器的开合,以调节CAN_H接口和CAN_L接口之间的电阻值。 [0024] 进一步地,所述终端电阻的阻值优选为120欧姆。 [0025] 进一步地,所述适配器还包括:与所述内部电路电连接的USB接口模块; [0026] USB接口模块与主机连接,用于接收主机的控制指令; [0027] 内部电路用于根据控制指令控制继电器的断开和闭合,内部电路用于通过USB接口模块反馈继电器状态。

[0028] 第二方面,本发明还提供了一种阻抗匹配系统,包括: [0029] 主机和适配器; [0030] 适配器适合连接目标网络; [0031] 适配器,适于接收主机发送的控制指令; [0032] 适配器用于根据控制指令调整与目标网络连接的两个接口之间的电阻值。 [0033] 第三方面,本发明还提供一种适配器阻抗匹配方法,包括: [0034] 调整适配器与目标网络连接之间的阻抗。 [0035] 进一步地,调整适配器与目标网络连接之间的阻抗的方法包括: [0036] 根据上位机发送的控制指令,连接或断开CAN接口模块的两个接口之间的终端电阻调节它们之间的界面电阻。 本发明的有益效果在于,本发明通过内部电路与CAN接口模块以及阻抗匹配模块电连接。 CAN接口模块适合连接目标网络; 阻抗匹配模块与CAN接口模块连接; 内部电路适合控制阻抗匹配模块来调节CAN接口模块两个接口之间的电阻值,使用户能够通过软件自动搭建硬件电路,实现阻抗可配置的总线适配器。 这种通用总线适配器的使用带来了效率的提高。

[0038] 本发明的附加特征和优点将在下面的描述中阐述,并且部分地从描述中将变得显而易见,或者可以通过本发明的实践而了解到。 本发明的目的和其他优点将通过在说明书和附图中特别指出的结构来实现和获得。 [0039] 为使本发明的上述目的、特征和优点更加明显易懂,下面列举优选实施例,并结合附图对本发明进行详细说明。 附图说明 [0040] 为了更加清楚地说明本发明的具体实施例或现有技术中的技术方案,在描述具体实施方式或现有技术时需要使用的附图将简单介绍一下。 显然,以下描述中的附图为本发明的一些实施例。 对于本领域普通技术人员来说,基于这些附图,在不付出创造性劳动的情况下,还可以得到其他附图。 [0041] 图。 附图说明图1是本发明的阻抗匹配适配器的示意图; [0042] 图。 图2为本发明的阻抗匹配适配器的功能框图。 具体实施方式 [0043] 为使本发明实施例的目的、技术方案和优点更加清楚、完整,将对本发明说明书44 CN 114253887 A说明书第3/4页的技术方案进行清楚、完整地描述。下面结合附图。 显然,所描述的实施例是本发明的部分实施例,而不是全部实施例。 基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1和图2所示,本实施例提供了一种阻抗匹配适配器,包括:内部电路、与所述内部电路电连接的CAN接口模块和阻抗匹配模块。 CAN接口模块适用于连接目标网络; 阻抗匹配模块连接至CAN接口模块; 内部电路适合控制阻抗匹配模块来调整CAN接口模块两个接口之间的电阻值,使得用户可以通过软件自动搭建硬件电路,实现阻抗可配置的总线适配器,给使用带来效率的提升的通用总线适配器。 本实施例中,CAN接口模块包括:至少一个CAN接口,即至少一个CAN_L接口和CAN_H接口。 CAN_L接口与内部电路连接; CAN_H接口与内部电路电路连接; CAN_L接口和CAN_H接口之间连接有阻抗匹配模块; CAN_L接口适合连接目标网络的CAN_L; CAN_H接口适合连接目标网络的CAN_H。 本实施例中,阻抗匹配模块包括:继电器和终端电阻。 终端电阻一端连接继电器,另一端连接CAN_H接口; 继电器连接内部电路和CAN_L接口,继电器的控制端连接内部电路,内部电路的逻辑决定继电器的打开和闭合; 内部电路适用于控制继电器的开合来调节CAN_H接口和CAN_L接口之间的电阻值。 将终端电阻连接到适配器上,并通过继电器 终端电阻的打开和关闭来连接或断开两个接口之间的终端电阻。 适配器原本需要使用者进行的手动操作可以完全由内部电路或主机中设定的软件程序来替代,提高了适配器的效率。 高效使用解决了适配器终端电阻动态匹配的难题。

[0047] 本实施例中,终端电阻的阻值优选为120欧姆,120欧姆的终端电阻可以方便地匹配所需的阻抗。 本实施例中,适配器还包括:与内部电路电连接的USB接口模块; USB接口模块与主机连接,用于接收主机的控制指令; 内部电路适用于根据控制指令控制继电器的开合,内部电路适用于通过USB接口模块反馈继电器状态; 上位机中的软件可以通过USB接口模块发出继电器的开合指令,也可以通过USB接口模块读取继电器的数据。 获取继电器状态。 在本实施例中,内部电路由能够处理USB信号的微控制器组成。 该单片机还可以通过控制其IO口来实现继电器的开合,软件程序可以提前在单片机中设置。 在装置中,内部电路本身直接控制继电器的断开和闭合。 实施例2 [0051] 本实施例2还提供了一种阻抗匹配系统,包括:主机和适配器; 该适配器适合连接到目标网络; 适配器适用于接收上位机发送的控制指令; 适配器用于根据控制指令调整与目标网络连接的两个接口之间的电阻值。 [0052] 本实施例的适配器适用于实施例一中的阻抗匹配适配器。

[0053]实施例三 [0054]本实施例三还提供实施例一中的适配器阻抗匹配方法,包括:调整适配器与目标网络连接之间的阻抗。 本实施例中,调整适配器与目标网络之间的阻抗的方法包括:根据上位机发送的控制指令,连接或断开CAN接口模块的两个接口之间的终端电阻,以调整适配器与目标网络之间的电阻值。接口。 55 CN 114253887 A 规格页4/4 [0056] 综上所述,本发明通过内部电路与内部电路电连接CAN接口模块与阻抗匹配模块。 CAN接口模块适合连接目标网络; 因此阻抗匹配模块连接到CAN接口模块; 内部电路适合控制阻抗匹配模块来调节CAN接口模块两个接口之间的电阻值,使得用户可以通过软件自动搭建硬件电路,实现阻抗可配置的总线适配器,这给使用带来了效率的提升。通用总线适配器。 [0057] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,还可以通过其它的方式实现。 上述装置实施例仅是示例性的。 例如,附图中的流程图和框图示出了根据本发明多个实施例的设备、方法和计算机程序产品的架构、功能和可能的实现方式。 操作。

就这一点而言,流程图或框图中的每个框可以表示包含用于实现指定逻辑功能的一个或多个组件的模块、段或代码部分。 可执行指令。 还应当注意,在一些替代实施方式中,方框中标注的功能可以不按照图中标注的顺序发生。 例如,两个连续的块实际上可以基本上并行执行,或者它们有时可以以相反的顺序执行,这取决于所涉及的功能。 还应当注意的是,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作的基于专用硬件的系统来实现。 ,或者可以使用专用硬件和计算机指令的组合来实现。 [0058] 另外,本发明各实施例中的各个功能模块可以集成在一起形成独立的部分,也可以各个模块单独存在,或者可以将两个或多个模块集成在一起形成独立的部分。 [0059] 所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。 基于这样的理解,本发明的技术方案本质上或者对现有技术做出贡献的部分或者技术方案的部分可以以软件产品的形式体现。 计算机软件产品存储在存储介质中,包括若干条指令,用于使计算机设备(可以是个人计算机、服务器、网络设备等)执行该程序的全部或部分步骤。本发明的各个实施例中描述的方法。

前述存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存储器(RAM,Random Access Memory)、磁盘或光盘等可以存储程序代码的介质。 [0060] 以本发明上述理想实施例为启发,通过上述描述,相关技术人员可以在不脱离本发明技术思想的范围内做出各种变化和修改。 本发明的技术范围不限于说明书中的内容,并且必须基于权利要求的范围来确定。 66 CN 114253887 A 使用说明书 图1/1页 图1 图277

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]