如何使用串烧模式?


19

我目前正在努力在Emacs中使用串烧模式。

我通过MELPA下载并安装了skewer-mode,因此所有依赖项都应就位。

出于测试目的,我什至下载了boidsjs 演示

我将打开boids.js,然后键入M-xrun-skewer(使用URL打开浏览器http://127.0.0.1:8080/skewer/demo),然后最终运行M-xskewer-mode(启用-> skewer-mode)。

但是在浏览器中什么也没有发生。

我究竟做错了什么?


据我了解,skewer提供了一个用于评估javascript的接口...您实际上在评估boids.js缓冲区的内容吗?
T. Verron 2014年

我正在使用<kbd> Cx Ck </ kbd>(“ boid.js loading”)加载当前缓冲区,并尝试使用<kbd> Cx Ce </ kbd>进行评估。但这给了我一个错误,它无法解析“ $”符号。那是因为它没有从相应的HTML文件(example.html)中加载jQuery
JacksGT,2014年

2
您需要以skewer-html-mode评估html文件。
Jordon Biondo

怎么样?C-x C-k无法使用skewer-html-mode
JacksGT

Answers:


16

TLDR;您必须启动http服务器(simple-http)并通过它加载HTML文件。

例如,假设您在文件夹中有一个名为HTML文件hello.html和一个JS脚本文件。script.js/home/user/Documents/javascript

hello.html

<!doctype html>
<html>
<head>
    <!-- Include skewer.js as a script -->
    <script src="http://localhost:8080/skewer"></script>
    <!-- Include my script.js file -->
    <script src="script.js"></script>
</head>
<body>
    <p>Hello world</p>
</body>
</html>

script.js

alert('hey!');

init.el(或.emacs):

(require 'simple-httpd)
;; set root folder for httpd server
(setq httpd-root "/home/user/Documents/javascript")

现在该启动服务器了:M-x httpd-start,并index.html通过访问在浏览器中打开文件http://localhost:8080/hello.html。您应该在浏览器中收到警报,然后致电skwer-repl

您可以通过repl进一步与浏览器进行交互。因此,您在repl中评估的所有内容都将传输到浏览器。例如,如果键入console.log('hey!')repl,您将在浏览器的控制台中收到此消息。

如果要交互式修改HTML(例如,从emacs实时更新HTML标签),请添加到 init.el(或.emacs)中:

(add-hook 'html-mode-hook 'skewer-html-mode)

现在,当您进入.html文件时,您可以使用C-M-xskewer-html-eval-tag)评估标记,这些标记将在浏览器中立即更新。

相反,请记住,这也适用于CSS和CSS文件。


1
这真的是一个很好的答案,感谢您的发布。如果您不想httpd-root在配置中对代码进行硬编码,那么可以随时M-x eval-expression (setq httpd-root "/path/to/files")在emacs中运行,这可能也一文不值。
Cody Reichert 2014年

示例html中无用的“ \” <script src="http://localhost:8080/skewer"></script>\ (无法编辑-编辑必须为> = 6个字符)
kai-dj

8

无需运行演示,只需执行以下最少的步骤即可确保一切正常。

  1. 打开名为myskewer.js的新缓冲区
  2. 启用JS2模式(串的依赖性)
  3. 启用串流模式
  4. M-xrun-skewer (将打开一个浏览器,返回到myskewer.js)
  5. 输入alert("hello");并点击C-xC-e该行的末尾
  6. 返回浏览器。

您应该在页面上看到一个警告框。


谢谢您的回答!不幸的是,我被提示错误“在点处找不到
可折叠的

抱歉,是我的错。C-x C-e是实际按下的键。将编辑我的答案
Gambo 2014年

可行!但是:如何告诉Skewer也加载HTML?(如演示中所示)
JacksGT 2014年

1
@JacksGT将下载的文件放入其中,~/public_html然后按照链接上“手册版本”的说明进行操作。完成后,在浏览器中访问localhost:8080
Gambo 2014年

1

如果端口8080已被使用

您可以通过自定义httpd-port变量将skewer / simple-httpd配置为使用其他端口。(M-x customize-variable<ret>httpd-port

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.