我想知道(实际上我知道肯定有这样一种在命令行中运行 js 的方法,因为当我观看 google I/0 演示时,他们使用像 d8 这样的命令,也许它是 V8 引擎的一部分)有什么方法可以在命令行中运行/调试我的 javascripts?比如 d8 myJsfile.js --prof 等?

有人对此有任何想法吗?

最佳答案

是的,D8 是一个命令行工具,允许您运行和调试 Javascript 脚本。它配备了 V8。

获得 D8

在您的机器上安装 V8 并不难。请按照以下说明操作:
https://developers.google.com/v8/build

(带有 GYP 的部分看起来有点乱,但我在 Linux 机器上轻松完成了它。)

安装 V8 后,您现在拥有 d8,它允许您从命令行运行 javascript。

$ d8 myscript.js

使用 D8

查看 d8 --help 以获取分析选项。这些与您想在 Chrome 上使用分析时可以使用的选项非常相似。

如果要调试,请使用 --debugger 启动 d8。当脚本在您的代码中遇到 debugger; 语句时,或者当您在 d8 shell 中键入 debugger; 时,脚本将中断。 (您通过使用 --shell 启动 d8 来获得 shell。)当 shell 提示符从 d8> 变为 dbg> 时,您就知道您正在调试。要获得有关调试器的帮助,请在 help 提示符下键入 dbg>

d8 调试器是一个老式的命令行调试器,如果您习惯了 GUI 调试器,那么在大型复杂脚本上使用它会很痛苦。

在 D8 中使用 GUI 调试器

如果您想使用 GUI 调试器,您可以使用 Chrome DevTools for Java,其中包括一个 Eclipse 调试器:

https://code.google.com/p/chromedevtools/

让它工作:
  • 安装 Eclipse
  • 安装 ChromeDevTools 插件(我从这个视频中得到了帮助:http://www.youtube.com/watch?v=_uzSw_fb7NQ)
  • 创建一个新的“Standalone V8 VM”类型的调试配置,为连接参数设置主机:本地主机和端口:5858。

  • 要调试在 D8 中运行的代码:
  • 使用您的脚本和 --debugger_agent 启动 D8,必要时根据您的配置使用 --debugger_port; D8 的默认端口是 5858。
  • Eclipse 中的
  • 启动您在上面创建的调试配置。脚本将显示在
  • 界面中
  • 在 Eclipse UI 中设置断点并进行处理。 (您的代码中不需要 debugger; 语句。)

  • 笔记! D8 只监听本地主机上的调试器。所以如果你在一台单独的机器上,那么这将不起作用。没有标志可以让它监听另一个 IP。看:
    https://code.google.com/p/v8/issues/detail?id=1855

    在 D8 中运行 Javascript 的陷阱

    请注意,D8 中的 Javascript 环境与浏览器窗口中的环境不同。有许多功能您不能使用:
  • setTimeout 及其表亲
  • XMLHttpRequest
  • 等等。检查 ECMA 规范以了解您实际可以使用的内容。

  • 请记住,没有 window.*document.* 或 DOM!

    关于javascript - 如何在命令行中运行/调试 javascript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12092641/

    10-13 07:57