用 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)) %>))))
    %>))))

运行效果:

目录
相关文章
|
JavaScript 前端开发 Python
CGI编程完全手册
一.基本原理 CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。
3006 0
|
4月前
|
SQL 自然语言处理 安全
探索研究Ruby CGI 编程
【9月更文挑战第1天】
54 6
|
4月前
|
开发框架 应用服务中间件 Apache
探索研究Perl CGI编程
【9月更文挑战第19天】
32 8
|
3月前
|
SQL 网络安全 UED
深入探索研究Ruby CGI 编程
【10月更文挑战第1天】
39 0
|
6月前
|
IDE 开发工具 开发者
Emacs有什么优点,用Emacs写程序真的比IDE更方便吗?
Emacs有什么优点,用Emacs写程序真的比IDE更方便吗?
|
Shell
shell基础学习(命令解释器)
1.echo输出命令 语法:echo [选项] [输出内容]
72 0
|
编译器 PHP
关于PHP编译器phpStorm找不到解释器的问题
关于PHP编译器phpStorm找不到解释器的问题
245 0
|
机器学习/深度学习 Go Apache
如何在windowsXP下运行用c 编写cgi
如何在windowsXP下运行用c 编写cgi
104 0
如何在windowsXP下运行用c 编写cgi
|
安全 Unix Java
Ruby之父松本行弘谈Emacs和Vi
即使是黑客,也不是千人一面。黑客也有各种各样的。把那些只做坏事的「自称黑客」除开不算,黑客中也存在着各种兴趣、各种文化。而且他们往往因自己的意见和文化而产生争论。像这样的争论主题有很多典型的有:「哪个编程语言最优秀啊?」「哪个操作系统最好啊?」「最厉害的编辑器究竟是Emacs还是Vi啊?」等。这回我就以最后问的那个「Emacs还是Vi」为例来眺望一下黑客文化圈吧。
452 0
|
C++ Windows Apache
如何在windowsXP下运行用c 编写cgi?
如何在windowsXP下运行用c 编写cgi? 前提是安装apache服务器,apache服务器的conf里面在里面配置好。然后只要把exe文件放到cgi-bin下面就大功告成了。
329 0