leiningen插件式无花果或靴子的对应物是否可以在任意网页中使用?我认为它是浏览器内置开发者控制台的替代品。
以下是我想象这个工作流程的简单方案:
您在浏览器中打开任意网站。除此之外,您在终端窗口中有一个浏览器repl,它由上面提到的工具之一提供。 (我猜他们都为此使用'weasel'。)
在终端内部,可以访问weppages的DOM的当前状态。
例如:(set! (.. js/window style backgroundColor) "green"))
我想这不应该存档太麻烦。但是,我遇到了以下问题:
这两个工具实际上只是将一堆JavaScript注入到用户的HTML页面中。它基本上是:用户的ClojureScript编译为JavaScript以及通过websockets进行热重新加载机制的额外实现。当项目投入生产时,第二个被省略。
我的想法是将整个捆绑包注入另一个页面。
我尝试使用boot。 在设置了引导的ClojureScript REPL之后,我在浏览器中打开了localhost:port。它的初始资源看起来像这样:
<!doctype html>
<html>
<head>
<title>Hello, World!</title>
</head>
<body>
<script src="js/main.js"></script>
</body>
</html>
after main.js已在页面加载时执行,许多(超过100个)其他javaScript标记被注入页面。我最初的想法是现在只打开另一个页面,比如duckduckgo.com,并向其注入一个脚本标记,并使用localhost的绝对路径进行扩充。 所以,在duckduckgo.com页面上,在开发者控制台内我做了这个:
tag = document.createElement("script");
tag.src = "http://localhost:3000/js/main.js";
document.body.appendChild(tag);
正如预期的那样,脚本被注入,这总是导致其代码的立即执行。我期待所有其他脚本标签现在自动注入。最后,webSockets应该连接到ClojureScript repl。
但是,浏览器控制台中存在以下错误:A call to document.write() from an asynchronously-loaded external script was ignored.
实际上,已经注入了许多其他脚本标签。但不是全部。实际上,套接字连接没有建立。
所以,看起来有些脚本标签是由我自己使用的机制注入的(通过appendChild),其他的应该由document.write("<script...
完成。后来会导致问题。
有人知道存档的方法吗?