ES6 的功能侦测库 ES-Checker

简介:

两周前,《ECMAScript国际标准(第6版)》正式通过,下一代 JavaScript 语言定案。

ECMAScript 6(以下简称 ES6)总共新增了20多项重大的语言特性。各种浏览器和 Node.js 都积极支持,但还有不少功能没实现。

上个周末,我读到了 Kyle Simpson 的文章《ES6: Features By Testing》,发现他开发了一组测试,可以侦测运行环境支持哪些 ES6 的功能。

我就在他的基础上 ,写了功能侦测库 ES-Checker ,用于查看 ES6 的支持情况。

今天,我把这个库提交到 Hacker News,结果居然进入了首页!虽然,名次不高,上榜时间也不长,但也算实现了一个人生愿望。

请看Demo,你的浏览器支持多少 ES6?

ES-Checker 可用于多种环境。

(1)命令行环境


$ npm install -g es-checker
$ es-checker

(2)Node环境

将 ES-Checker 安装在项目的根目录。


$ npm install es-checker

就可以在脚本中引用 ES-Checker 了。

 var Supports = require("es-checker"); if (Supports.letConst) { let x = 5; } else { var x = 5; } 

Supports 对象的属性清单,请见后文。

(3)浏览器环境

将 es-checker.js 插入页面。


<script src="http://ruanyf.github.io/es-checker/es-checker.js"></script>

然后在脚本中使用 Supports 对象,决定哪些功能可以使用。


<script>
if (Supports.letConst) {
 let x = 5;
} else {
 var x = 5;
}
</script>

附:Supports 的属性清单

  • letConst: let 和 const 命令
  • defaultParameter: 函数的默认参数
  • spreadRest: 扩展(...)运算符
  • destructuring: 解构赋值
  • parameterDestructuring: 函数参数的解构
  • templateString: 模板字符串
  • forOf: for...of循环
  • arrow: 箭头函数
  • generator: generator函数
  • conciseMethodProperty: 对象属性的简洁表示法
  • computedProperty: 对象属性名使用表达式
  • moduleExport: 模块的export命令
  • moduleImport: 模板的import命令
  • numericLiteral: 数值的八进制和二进制表示法
  • oldOctalLiteral: 八进制的前缀零表示法
  • symbol: Symbol类型
  • unicodeEscape: Unicode字符的大括号表示法
  • unicodeIdentifier: Unicode字符是否可用作标识名
  • unicodeRegExp: 正则表达式的u修饰符
  • stickyRegExp: 正则表达式的y修饰符
  • class: 类(class)
  • letTDZ: let命令的暂时性死区
  • constRedef: 不允许再次用const声明同一变量
  • objectProto: 对象的proto属性
  • objectSuper: 对象方法是否可以使用super
  • extendNatives: 原生类型的扩展
  • tco: 尾调用优化
  • symbolImplicitCoercion: Symbol值不能用于运算
  • functionNameInference: 匿名函数的name属性推断函数名
  • objectStatics: Object的静态方法
  • arrayStatics: 数组的静态方法
  • arrayMethods: 数组的实例方法
  • typedArrays: 类型化数组
  • typedArrayStatics: 类型化数组的静态方法
  • typedArrayMethods: 类型化数组的实例方法
  • stringMethods: 字符串的实例方法
  • numberStatics: Number对象的静态方法
  • mathStatics: Math对象的静态方法
  • collections: Map, Set, WeakMap, WeakSet
  • proxy: Proxy对象
  • promise: Promise对象

(完)

目录
相关文章
|
7月前
|
JavaScript 前端开发 应用服务中间件
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
160 0
|
11天前
|
JavaScript 前端开发 开发者
ES6模块系统
ES6 模块系统是 JavaScript 发展中的一个重要里程碑,它为开发者提供了更强大、更灵活和更高效的编程方式。你在使用模块系统时,是否遇到过一些具体的问题或有一些独特的见解呢?
20 1
|
3月前
|
存储 JavaScript 前端开发
[JS] ES Modules的运作原理
【9月更文挑战第16天】ES Modules(ECMAScript Modules)是 JavaScript 中的一种模块化开发规范,适用于浏览器和 Node.js 环境。它通过 `export` 和 `import` 关键字实现模块的导出与导入。模块定义清晰,便于维护和测试。JavaScript 引擎会在执行前进行静态分析,确保模块按需加载,并处理循环依赖。ES Modules 支持静态类型检查,现代浏览器已原生支持,还提供动态导入功能,增强了代码的灵活性和性能。这一规范显著提升了代码的组织和管理效率。
|
前端开发 JavaScript 开发者
为普通样式表通过 modules 参数启用模块化|学习笔记
快速学习为普通样式表通过 modules 参数启用模块化
为普通样式表通过 modules 参数启用模块化|学习笔记
|
Java Linux 开发者
Powershell教程(2)——自定义模块Module语法
Powershell教程(2)——自定义模块Module语法
710 0
Powershell教程(2)——自定义模块Module语法
|
前端开发 JavaScript
为普通样式表通过modules参数启用模块化
一、为普通样式表通过modules参数启用模块化 二、解决css样式表作用域冲突问题的方法 三、总结
为普通样式表通过modules参数启用模块化
|
存储 Java API
浅析Easy Rules规则引擎
Easy Rules是一个简单而强大的Java规则引擎,提供以下功能: 轻量级框架和易于学习的API 基于POJO的开发与注解的编程模型 定义抽象的业务规则并轻松应用它们 支持从简单规则创建组合规则的能力 支持使用表达式语言(如MVEL和SpEL)定义规则的能力
|
JavaScript
ES6中模块导入遇到的问题及其解决办法
今天遇到了一个小的问题,我们来看一下,情况是这样的:在没遇到过这个坑之前,如果需要引入一个模块,我通常的做法都是在HTML文件中内嵌一个script标签,并通过指定 type="module" 来实现;然而今天我却没有按照往常这样做,而是指定两个js文件,其中一个文件通过 export 暴露出需要的变量和函数,在另一个文件中通过 import 导入,结果就遇到了报错,来给各位看下报错信息:
ES6中模块导入遇到的问题及其解决办法
|
JavaScript 前端开发
nodejs ES6模块使用 以及 ES6代码转CJS兼容性处理
nodejs ES6模块使用 以及 ES6代码转CJS兼容性处理
nodejs ES6模块使用 以及 ES6代码转CJS兼容性处理