首页 文章 精选 留言 我的

精选列表

搜索[js框架],共10000篇文章
优秀的个人博客,低调大师

这8个JS 新功能,你应该去尝试一下

摘要:本文主要介绍几个已经进入stage4的提案,这几个提案有望在2022年逐步纳入标准。 本文分享自华为云社区《2022 年你应该尝试的 8个 JavaScript 新功能》,作者:前端picker。 1995年12月4日,Netscape 公司与 Sun 公司联合发布JavaScript 以来,JavaScript从推出就开始了飞速的发展,2015年6,ES6正式发布,此后JavaScript正式进入新阶段,成为企业级大规模开发语言,并仍以高速度不断发展。 下面的表格对应这版本变化: 本文主要介绍几个已经进入stage4的提案,这几个提案有望在2022年逐步纳入标准。(请注意:纳入标准并不等同于浏览器支持) PS:科普-Javascript的新语法,从提出到纳入标准一共经历下面几个stage stage-0:新语法还是一个设想,(只能由TC39成员或TC39贡献者提出) stage-1::提案阶段,比较正式的提议,只能由TC39成员发起,这个提案要解决的问题必须有正式的书面描述。 stage-2:草案,有了初始规范,必须对功能语法和语义进行正式描述,包括一些实验性的实现。 stage-3:候选,该提议基本已经实现,需要等待实验验证,用户反馈及验收测试通过。 stage-4:已完成,必须通过 Test262 验收测试,下一步就纳入ECMA标准。 .at() TC39建议在所有基本可索引类,例如:数组、字符串、类数组(arguments)中添加.at()方法。 例如 lat arr=[1,2,3,4,5] 之前我们想获取数组中的第二位 arr[1] //2 最后一位的话,可能就是 arr[4] // 5 但是如果arr长度是动态的呢?我们要如何让取出最后一位? 通常的写法是: arr[arr.length-1] 但是有了.at()方法就很简单了,.at()支持正索引和负索引。 例如 arr.at(-1) //5 arr.at(-2) //4 具体提案:https://github.com/tc39/proposal-relative-indexing-method Object.hasOwn(object, property) Object.hasOwn(object, property)主要是用来替代Object.prototype.hasOwnProperty()。 目前我们想要判断对象是否具有指定的对象,主要写法如下: if (Object.prototype.hasOwnProperty.call(object, "fn")) { console.log('有') } 而Object.hasOwn的写法: if (Object.hasOwn(object, "fn")) { console.log("有") } 具体提案:https://github.com/tc39/proposal-accessible-object-hasownproperty 目前来看,V8引擎的9.3版本已经开始支持,所以说chrome应该会很快支持。 类的私有方法和getter/setter 类是所有支持面向对象语言的基本,而Javascript虽然支持使用class定义类,但是并没有提供 定义私有属性/方法的的 方案。本提案提出使用**#**来定义私有属性/方法 class Person{ name = '小芳'; #age = 16; consoleAge(){ console.log(this.#age) } } const person = new Person(); console.log(person.name); //小芳 console.log(button.#value); //报错 button.#value = false;//报错 具体提案:https://github.com/tc39/proposal-private-methods 检查私有属性和方法 因为新的标准会支持私有属性和方法,当我们访问不存在的私有属性/方法会报错,而在新标准中也考虑了这个情况,提供了in来检查私有属性和方法是否存在 class C { #brand; #method() {} get #getter() {} static isC(obj) { return #brand in obj && #method in obj && #getter in obj; } } 具体提案:https://github.com/tc39/proposal-private-fields-in-in Top-level await(顶层await) 目前,我们使用await必须是在申明async的函数中,本提案,主要是支持在没有async的情况下使用await 例如下面几种使用场景: 动态引入依赖 const strings = await import(`/i18n/${navigator.language}`); 这允许模块使用运行时值来确定依赖关系。这对于开发/生产拆分、国际化、环境拆分等非常有用。 资源初始化 const connection = await dbConnector(); 这允许模块表示资源,并在模块永远无法使用的情况下产生错误。 加载依赖 let jQuery; try { jQuery = await import('https://cdn-a.com/jQuery'); } catch { jQuery = await import('https://cdn-b.com/jQuery'); } 具体提案:https://github.com/tc39/proposal-top-level-await 正则匹配索引 该提案提供了一个新的/d,用来获取每个匹配的开始位置和结束位置信息。 const str = 'The question is TO BE, or not to be, that is to be.'; const regex = /to be/gd; const matches = [...str.matchAll(regex)]; matches[0]; 具体提案:https://github.com/tc39/proposal-regexp-match-indices new Error()抛出异常的具体原因 new Error(),可能大家第一反应是,这不是已经存在的语法嘛,是的,没错!只是新的提案:将错误与原因相关联,,向具有属性的Error() 构造函数添加一个附加选项参数cause,其值将作为属性分配给错误实例。 async function doJob() { const rawResource = await fetch('//domain/resource-a') .catch(err => { throw new Error('Download raw resource failed', { cause: err }); }); const jobResult = doComputationalHeavyJob(rawResource); await fetch('//domain/upload', { method: 'POST', body: jobResult }) .catch(err => { throw new Error('Upload job result failed', { cause: err }); }); } try { await doJob(); } catch (e) { console.log(e); console.log('Caused by', e.cause); } // Error: Upload job result failed // Caused by TypeError: Failed to fetch 具体提案:https://github.com/tc39/proposal-error-cause 类static初始化块 本田针对静态字段和静态私有字段的提供了一种在 ClassDefinitionEvaluation 期间执行类静态端的每个字段初始化的机制-static blocks.例如官方提供的例子: 在没有static blocks之前,我们想给静态变量初始化(非直接赋值,可能是表达式赋值)的话,可能是放在外部实现: // without static blocks: class C { static x = ...; static y; static z; } try { const obj = doSomethingWith(C.x); C.y = obj.y C.z = obj.z; } catch { C.y = ...; C.z = ...; } 有了static block的情况下:我们可以直接在static blocks中初始化变量: class C { static x = ...; static y; static z; static { try { const obj = doSomethingWith(this.x); this.y = obj.y; this.z = obj.z; } catch { this.y = ...; this.z = ...; } } } 点击关注,第一时间了解华为云新鲜技术~

优秀的个人博客,低调大师

ECharts 5.1.2 发布,JS 实现的交互式图表可视化库

ECharts 是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。 ECharts 5.1.2 正式发布,本次更新内容如下: [Feature] [geo/map] 在变换和 svg 解析器中支持倾斜 skew; [Feature] [tree] 在工具提示回调的参数中添加 treeAncestors 属性; [Feature] [i18n] 增加斯洛文尼亚语翻译 [Fix] [canvas] 当 dirty rect 被启用时,修复额外的ctx.save调用; [Fix] [path] 在优化 line segments 时,修复小的子路径可能被忽略; [Fix] [tooltip] 当组件 tooltip.formatter 没有指定时,使用特定的默认 formatter,而不是使用全局 tooltip.formatter 作为默认; [Fix] [resize] 修复了在使用 lazyUpdate: true 调用 setOption 之后在调用 resize 时会抛出错误的问题; [Fix] [treemap] 使用差异数据运行 setOption 两次时出错; [Fix] [tree] 使用差异数据运行 setOption 两次时出错; [Fix] [option] 在合并主题之前检查缺少的组件; [Fix] [text] 修复渐变文字背景导致渲染错误的问题; [Fix] [clip] 当 clip 设置为 false 时,线形图会出现错误; [Fix] [legend] 移除意外的语法以确保更好的兼容性; [Fix] [dataZoom] startValue 和 endValue 的类型修复; [Fix] [label] 确保临时符号的标签在线条和区域多边形的前面; [Fix] [dataZoom] 当 toolbox.feature.dataZoom 未声明时,不应该有 dataZoom 过滤; [Fix] [line] 避免 linearMap util 中的无限值; [Fix] [timeline] 当播放到结束时触发timelineplaychange事件; [Fix] [custom] 修复自定义系列中的渐进式渲染; [Fix] [label] 修复标签不在顶部的错误; [Fix] [toolbox] 自定义工具箱按钮的 show 选项不起作用; [Fix] [type] 将 LineEndLabelOption.valueAnimation 更改为可选; [Fix] [type] 导出 cbs 及其参数类型; [Fix] [type] 修复位置回调的返回类型; [Fix] [type] 从 PatternObject 中删除非必须的属性,并修正一些类型问题; 更多详情可查看:https://github.com/apache/echarts/releases/tag/5.1.2

优秀的个人博客,低调大师

ECharts 5.1.0 发布,JS 实现的交互式图表可视化库

ECharts 是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。 ECharts 5.1.0 正式发布,本次更新内容如下: 地理组件和地图系列支持 SVG 格式来源#14571 默认图例设计更直观 #14497 添加捷克语翻译#14468 在调整大小中添加动画配置#14553 为 effectScatter 添加 clip #14574 优化缺少组件或系列时的错误日志#14568 提高工具提示的性能#14246 修正标签可能有错误的 z,以及不在前面的问题#14542#14417 修正 CanvasPatttern#setTransform 可能不存在的错误#738 修正使用时间轴时格式错误#14471 使 symbolOffset 在所有使用符号的组件上使用#14375 修正 markArea 背景颜色消失的 bug 修正字符串类型数据在 markLine 中可能无法使用的问题#14300#14314 修正检查选中状态时的空访问错误#14293#14413 修复 dataZoom 设置无效果 #14388 修正动画之间NaN值可能存在的问题#730 使用 itemSymbol 作为默认符号类型 #5719#14243 修正加载的文字不在前面,被其他元素覆盖的问题#14191 修正自定义系列上的系列标签不能正常使用#14092#14254 修正地图标签在使用 labelLayout 时不会更新位置#14578 修正日标漂移的问题#11508#13902 修正线条动画可能会有多余的点,以及混乱的问题#13638 在扩展中导出更多必要的类型以生成声明#14289 增加 LegendComponentOption.icon 属性类型#14263 删除遗留的转换用法#14357 更多详情可查看:https://github.com/apache/echarts/releases/tag/5.1.0

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册