5

I'm wondering (actually I know there definitely is such a way to run js in command line, because when I watch google I/0 presentations, they use a command like d8, maybe it's part of V8 engine) is there any way to run/debug my javascripts in command line? such as d8 myJsfile.js --prof etc.?

Does anybody have any idea about this?

4

2 回答 2

5

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

获得 D8

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

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

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

$ d8 myscript.js

使用 D8

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

如果你想调试启动 d8 --debugger。当脚本遇到代码中的语句或在 d8 shell 中debugger;键入时,脚本将中断。debugger;(您可以通过以 d8 开头来获得 shell 。)当 shell 提示符从变为--shell时,您知道您正在调试。在提示符处获取有关调试器类型的帮助。d8>dbg>helpdbg>

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”的新调试配置,为连接参数设置 host:localhost 和 port: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.*or document.*or DOM!

于 2013-06-14T02:16:21.487 回答
2

Node.JS非常适合这一点。

您将无法测试浏览器的东西,例如window.location和什么不是,但对于运行直接脚本,它是有帮助的。

于 2012-08-23T13:28:54.060 回答