用 Emacs Lisp 开发 CGI 程序

简介: Emacs Lisp 作为编程语言也是非常强大的。尤其 Emacs 作为一款编辑器,自带了很多处理文本的函数,用起来很方便。我一直希望用 Emacs Lisp 作为服务端脚本语言来开发 Web 程序。在网上搜索了很久,还真有人做过类似的事情:http://www.emacswiki.org/emacs/cgi.el。但他封装的还不够彻底,用起来还是挺麻烦,于是自己动手写了一个。目前支持:

Emacs Lisp 作为编程语言也是非常强大的。尤其 Emacs 作为一款编辑器,自带了很多处理文本的函数,用起来很方便。

我一直希望用 Emacs Lisp 作为服务端脚本语言来开发 Web 程序。在网上搜索了很久,还真有人做过类似的事情:http://www.emacswiki.org/emacs/cgi.el。但他封装的还不够彻底,用起来还是挺麻烦,于是自己动手写了一个。目前支持:

  1. script-let,即可在 <% %> 或 <%= %> 之中插入 lisp 代码;
  2. 原生 s-exp 生成 html 文档;
  3. GET/POST 请求支持;
  4. 存取 Cookie。

程序作为 CGI 运行于 Apache 下,这里提供一个简单的求斐波那契数的例程作为演示。

BTW,这也是我第一次使用 Github 托管代码:https://github.com/redraiment/emacs-cgi

#!/usr/local/bin/emacs --script

(require 'cgi)

(cgi/cookie "n"
 (or (cgi/param "n")
     (cgi/cookie "n")
     "15"))

(html
 (head
  (title "Fabonacci 1 -> n")
  (meta (http-equiv . "Content-Type")
        (content . "text/html; charset=UTF-8")))
 (body
  (form (method . post)
   (span "n = ")
   (input (type . text) (name . n))
   (button (type . submit) "Submit"))
  (table (border . 1) (width . "100%")
   (thead
    (caption "Fabonacci")
    (tr
     (th "#")
     (th "Value")))
   (tbody
    <%
    (let ((a 0) (b 1) x)
      (dotimes (i (string-to-number
                   (cgi/cookie "n")))
        (tr
         (td <%= (1+ i) %>)
         (td <%= (setq x a a b b (+ x b)) %>))))
    %>))))

运行效果:

目录
相关文章
|
2月前
|
应用服务中间件 Apache nginx
深入探索研究Ruby CGI方法
【10月更文挑战第2天】
35 4
|
3月前
|
SQL 自然语言处理 安全
探索研究Ruby CGI 编程
【9月更文挑战第1天】
50 6
|
JavaScript 前端开发 Python
CGI编程完全手册
一.基本原理 CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。
2957 0
|
2月前
|
SQL 网络安全 UED
深入探索研究Ruby CGI 编程
【10月更文挑战第1天】
34 0
|
3月前
|
应用服务中间件 Apache nginx
探索研究Ruby CGI方法
【9月更文挑战第2天】
48 4
|
开发框架 物联网 开发者
Ruby vs Elixir | 2022 该选哪个?
Ruby vs Elixir | 2022 该选哪个?
Ruby vs Elixir | 2022 该选哪个?
|
安全 Unix Java
Ruby之父松本行弘谈Emacs和Vi
即使是黑客,也不是千人一面。黑客也有各种各样的。把那些只做坏事的「自称黑客」除开不算,黑客中也存在着各种兴趣、各种文化。而且他们往往因自己的意见和文化而产生争论。像这样的争论主题有很多典型的有:「哪个编程语言最优秀啊?」「哪个操作系统最好啊?」「最厉害的编辑器究竟是Emacs还是Vi啊?」等。这回我就以最后问的那个「Emacs还是Vi」为例来眺望一下黑客文化圈吧。
441 0
|
开发工具
我也说说Emacs吧(7) - lisp基础
lisp的基础:变量和表处理
1710 0
|
开发工具