ClojureScript 可以实现像使用 Emacs 的方式一样在浏览器控制 Web 应用吗?

有一天在想如果能使用 Lisp 操作浏览器就好了, 后来突然想起来还有一个 ClojureScript。ClojueScript 可以用来构建 Web 应用,原理是编译 Clojure 源码到 JavaScript。据官方文档所说 ClojureScript 和 JavaScript 的 function 等是可以在两个语言间互相调用的,听起来很不错。

但是我没有搞清楚几个方面的联系,网上查了一下资料,发现本地启动 ClojureScript 应用工程的时候可以在终端 REPL 敲 Clojure 代码来控制 Web 应用。

如果应用已经部署在服务器,在客户端浏览器有没有办法找到 cljs 源码文件?有没有办法直接在浏览器的 Console 执行 Lisp 代码和应用交互?我在一些 ClojureScript 实现的应用中只看到了 .js 文件,而且试了很多办法无果,想请教下一大家

1 个赞

http://clojurescript.net/ 原理上就是个编译到了 js 的 cljs 编译器。

想在浏览器的 console 直接执行的话,需要浏览器的插件才可以做的到,比如 dirac。但是这个是开发的时候用的。

但是这不是个典型的使用场景,最好不这么干。因为 Release 的时候代码会被压缩,访问不到的内容会被删掉,函数和变量名字会被替换,只调用一次的东西会被内联。所以就算你可以执行 cljs 代码,你也不知道你想访问的东西是什么名字。

2 个赞

感觉楼主没有区分服务端和客户端,终端 REPL 敲 Clojure 代码来控制 Web 应用,这个是服务器端控制web应用,你用任何语言都是可以的,lisp也可以。

浏览器的 Console这个是web应用客户端就只有js能用。即使用其它语言写了也只是语法糖,虽然你不直接写js,实际代码还是转成js运行。相当于你在使用一个js代码生成器。

2 个赞

感觉这样不好玩了。比如有一个变量存储了最近访问的页面,只要开发者不暴露这个变量,我想写一个插件没法直接拿到。JavaScript 不好玩

我在想会不会在 JavaScript 背后运行了一层,Lisp 可以访问所有的变量。如果可以这样做的话真得很好玩。Github 好像有人做了一个 Lisp 浏览器,但是只是实验性的,等一个成熟的 Lisp 浏览器……

浏览器的数据都是页面内的数据, 其实没有啥好玩的事能做. 开发的时候 cljs 倒是很方便. scittle 可以让你在浏览器里面用 script 标签写 clojure.

浏览器的数据当然不只是页面内的数据,现在很多 Web 应用,在浏览器上跑的都是软件。想象一下如果日常使用的 GUI 桌面软件是全部自由控制、自由编程的会是什么体验……

而且我发现老外已经实现了一个基于 Lisp 的浏览器哈哈,也是一个 Emacs 用户,和我的想法完全一样。我下载下来试试

忽然想起来和我这个帖子提的需求不太一样哈哈。这是一个浏览器,不是控制 Web 应用。就是 macOS 安装太费劲了。。

这个的性能不太好, 也不太稳定. 很容易崩溃.

一个东西自由编程并不会有什么用, 所谓的自由编程,比如 emacs 只是提供了多个层级的接口让你觉得自由. 并不会因为你使用了什么方案而自由.

换句话说, 如果只写了个普通的应用, 没考虑接口的问题, 那这个应用接什么技术也没有办法自由编程…