npm 包 @fsandbox/fsandbox 使用教程

阅读时长 5 分钟读完

介绍

@fsandbox/fsandbox 是一个可以在前端浏览器环境下使用的沙盒运行时。它允许你运行 JavaScript 代码并且在沙盒环境中执行,防止你的代码对于其他全局变量、函数名、浏览器 API 等造成影响。

@fsandbox/fsandbox 同时支持 ECMAScript 和 TypeScript 代码。它的底层实现基于 vm2

安装

你可以直接使用 npm 进行安装:

使用

要在你的代码中使用 @fsandbox/fsandbox,你可以通过如下方式引入它:

运行代码

你可以使用 fSandbox 来运行你的 JavaScript 代码。代码可以是 ECMAScript 或 TypeScript。

注入全局变量

当你需要向沙盒环境中注入全局变量时,你可以使用 globalVariables 参数:

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

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

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

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

配置选项

你可以使用一些配置选项来指定沙盒的行为:

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

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

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

-- ----

timeout

你可以通过 timeout 选项来指定代码的最长执行时间,以毫秒为单位。如果代码的执行时间超过了这个时间,那么运行时将会终止代码的执行。

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

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

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

compilerMode

你可以通过 compilerMode 选项来指定编译模式。目前支持两种编译模式:

  • strict - 使用 ECMAScript 的严格模式
  • loose - 使用 ECMAScript 的非严格模式
-- -------------------- ---- -------
----- ---- - -
  -------- ----- -
    ------ -----
  -
  -- ------- -
    ---------------- -- -------
  -
--

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

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

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

TypeScript 支持

@fsandbox/fsandbox 同时支持 TypeScript 代码。你只需要在配置选项中加入 filenamecompilerOptions 就可以开始使用 TypeScript 了。

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

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

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

-- ----

返回值

fSandbox.run 返回一个对象,它代表了代码的执行结果。这个对象可能包含以下字段:

  • stdout - 代码输出的字符串
  • result - 如果代码有返回值,则包含在这个字段中
  • exception - 如果代码抛出了异常,则包含在这个字段中
  • timeout - 如果代码因为超时而停止执行,则为 true

总结

@fsandbox/fsandbox 提供了前端 JavaScript 运行时的沙盒环境,使你可以在安全的环境下运行代码。它支持 ECMAScript 和 TypeScript 代码,并提供了一些配置选项来控制沙盒行为。如果你在前端开发中需要运行动态生成的 JavaScript 代码,那么 @fsandbox/fsandbox 可以是一个非常好的选择。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562de81e8991b448e0563

纠错
反馈