npm 包 esprimaq 使用教程

介绍

ESprima是一个用JavaScript编写的ECMAScript解析器,其目标是支持ECMAScript 5.1+。esprimaq则是对于Esprima做了进一步扩展的版本,主要增加了诸如支持newline-tolerant indentations,propagating parenthesis, auto semicolon insertion等功能。

本文主要介绍如何在前端开发中使用npm包esprimaq以及如何应用其相关功能。

安装

使用npm安装即可:

--- ------- --------

用法

解析JavaScript代码

esprimaq.parse()方法可以解析JavaScript代码并生成AST(Abstract Syntax Tree)对象。

--- ------- - --------------------
--- ---- - ---- - - ----
--- --- - --------------------
-----------------

解析出来的ast可以方便我们进行静态代码分析或者生成代码等操作。

处理newline-tolerant indentations

esprimaq会自动处理newline-tolerant indentations,我们可以使用其中的源代码:

--- -------- - --------------------
--- ---- - --- -- -- --- -- ---- ---  --------------------- -------------
--- --- - ---------------------

------------------
------------------------------

输出为:

-- --
 --- --

 -
  --------------------- -------
--

代码中if、==、左右括号之间的空行被略过了。看到的输出应该是这样的:

-
  ------- -------------------
  ----------- ------
  ------- -
    ------- -------------
    ------- ---
  --
  -------- -
    ------- ----------
    -------- --
    ------ ---
  -
-

处理propagating parenthesis

ESprimaQ会自动处理propagating parenthesis:

--- -------- - --------------------
--- ---- - -------------------------- -- ----------------
--- --- - ---------------------
-----------------------------------------------------------------

解析出来的AST对象:

-
  ------- -----------------
  --------- -
    ------- -------------------
    ----------- ------
    --------- -
      ------- -------------
      ------- ---------
    --
    ----------- -
      ------- -------------
      ------- -----
    -
  --
  ------------ -
    -
      ------- -------------------
      ----------- ------
      --------- -
        ------- ------------------
        ----------- -
          -
            ------- ----------
            -------- ------
            ------ ---------
          --
          -
            ------- ----------
            -------- ------
            ------ ---------
          --
          -
            ------- ----------
            -------- ----
            ------ -------
          -
        -
      --
      ----------- -
        ------- -------------
        ------- --------
      -
    -
  -
-

处理auto semicolon insertion

esprimaq可以处理auto semicolon insertion:

--- -------- - --------------------
--- ---- - ---- - - -------------------
--- --- - ---------------------
----------------------

解析出来的AST对象:

-
  -
    ------- ----------------------
    -------- --
    ------ --
    --------------- -
      -
        ------- ---------------------
        -------- --
        ------ --
        ----- -
          ------- -------------
          -------- --
          ------ --
          ------- ---
        --
        ------- -
          ------- ----------
          -------- --
          ------ --
          -------- --
          ------ ---
        -
      -
    --
    ------- -----
  --
  -
    ------- ----------------------
    -------- ---
    ------ ---
    ------------- -
      ------- -----------------
      -------- ---
      ------ ---
      --------- -
        ------- -------------------
        -------- ---
        ------ ---
        ----------- ------
        --------- -
          ------- -------------
          -------- ---
          ------ ---
          ------- ---------
        --
        ----------- -
          ------- -------------
          -------- ---
          ------ ---
          ------- -----
        -
      --
      ------------ -
        -
          ------- -------------
          -------- ---
          ------ ---
          ------- ---
        -
      -
    -
  -
-

这便是auto semicolon insertion的奇妙,逐一分析代码后我们会发现,console.log(x)之前是没有分号的。但是在解释js时,auto semicolon insertion会将需要分号的地方自动加上分号,最终解析器的输出也有分号。

总结

esprimaq是ESprima的扩展版本,增加了newline-tolerant indentations, propagating parenthesis, auto semicolon insertion等功能。在前端开发中,我们可以使用esprimaq解析代码,并进行处理,充分发掘esprimaq的功能,优化代码的编写,提高代码质量。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/59711


猜你喜欢

  • npm包lodash.noop使用教程

    简介 lodash是一款专注于提高JavaScript代码性能和开发效率的函数式JavaScript库。lodash.noop是lodash库中的一个基础工具函数,用于返回一个空的函数,既不执行任何操...

    6 年前
  • npm 包 lodash.negate 使用教程

    lodash.negate 是 lodash 库中的一个方法,它可以将给定的函数返回值取反。在前端开发中,我们时常需要根据条件来控制特定的行为与样式,这个方法可以使我们的代码更加简洁。

    6 年前
  • npm 包 lodash.mixin 使用教程

    lodash.mixin 是一个非常实用的 npm 包,可以通过它将常用的工具函数进行混合,形成一个新的自定义函数。本文将介绍如何使用 lodash.mixin,并提供一些示例代码。

    6 年前
  • npm 包 lodash.minby 使用教程

    简介 在前端开发中,我们常常需要对一系列数据进行排序并取得其中的最小值或最大值。如果手动编写排序代码,会显得非常繁琐而且难以维护。此时我们可以使用一个非常有用的 npm 包 —— lodash.min...

    6 年前
  • npm 包 lodash.ntharg 使用教程

    前言 在前端开发中,我们常常需要处理数组和对象。当数据结构比较复杂时,需要进行多层嵌套访问。此时,lodash.ntharg 可以帮助我们精简代码并提高开发效率。本文将介绍 lodash.ntharg...

    6 年前
  • npm 包 lodash.now 使用教程

    什么是 lodash.now lodash.now 是一个 JavaScript 库中的一个小工具,它的作用是返回当前时间戳。在前端开发中,我们经常需要获取当前时间戳,比如记录时间、计时等等,这时候就...

    6 年前
  • npm 包 lodash.oversome 使用教程

    在前端开发中,我们经常需要对数组中的每个元素进行某些操作,如过滤、排序、查找等。针对这些操作,lodash提供了很多强大的工具函数,其中之一就是oversome函数,它可以用来检查数组中是否有一个符合...

    6 年前
  • npm 包 lodash.overevery 使用教程

    简介 lodash.overevery 是 lodash 库中的一个函数,用于检查函数序列中的所有函数是否都返回 true 值。 -----------------------------------...

    6 年前
  • npm 包 lodash.overargs 使用教程

    什么是 lodash.overargs? lodash.overargs 是一个 Lodash 中的函数,它允许你将一个函数的参数按照指定的方式进行整理和转换。 通常情况下,我们需要将函数的参数做一些...

    6 年前
  • npm 包 lodash.over 使用教程

    在前端开发中,我们经常需要对数组或对象进行操作。lodash 是一个非常流行的 JavaScript 工具库,提供了丰富的操作函数,让开发更加便捷。 在 lodash 中,有一个非常实用的函数 _.o...

    6 年前
  • npm 包 lodash.orderby 使用教程

    在前端开发中,我们经常需要对数据进行排序。而 Lodash 是一个非常流行的 JavaScript 工具库,其中的 lodash.orderby 包提供了方便且灵活的排序功能。

    6 年前
  • npm 包 lodash.omitby 使用教程

    前言 在 Web 前端开发中,我们经常需要对 JavaScript 对象进行筛选和转换,以适应不同的需求场景。而在处理对象数据时,lodash.js 是一个非常适合使用的 JavaScript 工具库...

    6 年前
  • npm 包 lodash.parseint 使用教程

    简介 在前端开发中,很多时候我们需要将字符串转化为整型。而在 JavaScript 中,通常使用 parseInt() 函数来完成这个任务。然而,parseInt() 存在很多缺陷,比如对于值为 0 ...

    6 年前
  • npm 包 lodash.pad 使用教程

    简介 lodash.pad 是一个 npm 包,它提供了一个函数用于将字符串填充到指定长度。这个函数非常有用,我们可以使用它将字符串填充成指定长度,以便在某些情况下正确显示数据。

    6 年前
  • NPM包Lodash.Pull使用教程

    在前端开发中,尤其是在开发复杂的Web应用程序时,我们经常需要对数组进行操作。有时候我们需要从数组中删除指定的值,这时候就可以使用 Lodash.pull 包实现。

    6 年前
  • npm 包 lodash.propertyof 使用教程

    前言 在前端开发中,我们常常需要对一些对象进行操作,有时候需要得到对象某个属性的值,而 lodash.propertyof 就是一个非常实用的小工具,能够方便地获取对象中任意深度的属性值。

    6 年前
  • npm 包 lodash.property 使用教程

    lodash.property 是一个非常实用的 npm 包,它可以帮助我们快速地获取 JavaScript 对象中的嵌套属性值。在前端开发中,我们经常需要对从后台 API 返回的数据进行处理,而这些...

    6 年前
  • npm 包 lodash.pickby 使用教程

    在前端开发过程中,我们通常需要对对象进行过滤、拷贝等操作,对于这些操作,我们通常会使用 lodash 这个工具库,其中 lodash.pickby 是一个非常实用的工具函数,它可以在对象上执行过滤属性...

    6 年前
  • npm 包 lodash.rangeright 使用教程

    简介 lodash 是一个 JavaScript 工具库,提供了许多有用的函数,可以用来简化开发过程中的代码编写。其中,lodash.rangeright 是一个函数,用来生成指定范围内的数值数组。

    6 年前
  • npm包lodash.pullat使用教程

    npm是Node.js的包管理器,它可以让开发者方便的安装和管理第三方包。lodash.pullat是lodash中一个方便的函数,本文将介绍它的使用教程和一些示例。

    6 年前

相关推荐

    暂无文章