我正在使用Clojure开发一个宠物项目,但想知道如何加快工作流程。
我目前的工作流程(使用Compojure)如下:
- 使用
lein swank
启动Swank。 - 转到Emacs,并使用
M-x slime-connect
连接。 - 逐个加载所有现有源文件。这也会启动Jetty服务器和应用程序。
- 在REPL中编写一些代码。
- 当实验满意时,编写我打算构建的结构的完整版本。对其进行评估(
C-c C-c
)。 - 将REPL切换到这个构造所在的命名空间并进行测试。
- 切换到浏览器并重新加载受影响的页面选项卡。
- 修改代码,评估它,在浏览器中检查。
- 重复上述任何步骤。
以下是其中一些问题:
- 我必须不断在Emacs和浏览器之间切换(如果我正在测试像多个浏览器之类的东西以获得模板),有没有常见的惯用语来自动化这个过程?我曾经有一小段JavaScript代码可以持续地重新加载页面,但显然当我需要与页面交互超过几秒钟时,它的效用就有限了。
- 当我试验和编写测试函数时,我的JVM实例变得“脏”。基本上,命名空间被污染了,特别是当我在不同的命名空间之间重构并移动函数时。这可能导致符号冲突,因此我需要重新启动Swank。我能否取消定义一个符号?
- 我会在重新启动Swank时逐个加载所有源文件(
C-c C-k
)。我怀疑我做错了什么。 - 在REPL和文件编辑器之间切换有点烦人,尤其是当我有很多Emacs选项卡打开时,以及浏览器。
我正在寻找改进上述问题和整个工作流程的办法,所以如果您能分享您的方法,我将不胜感激。
P.S.:
我以前也使用过Vimclojure,所以欢迎基于Vimclojure的工作流程。