我经常用PHP,Ruby或Perl编写Web应用程序.我正在开始研究Scheme,我想用这种语言尝试一些web项目.但我找不到最适合这种情况的环境.
我正在寻找以下功能:
获取请求参数的简单方法(类似于:get-get #key,get-post #key,get-cookie #key).
Mysql访问.
HTML表单生成器,处理,验证器等.
用于过滤用户输入数据的助手(类似于htmlentities,用于放入查询的转义变量等).
FLOSS.
和GNU/Linux友好.
所以,提前感谢所有回复.
Racket拥有您需要的一切.请参阅Racket Web服务器教程,然后参阅文档.Web服务器已经存在了一段时间,它有很多功能.可能唯一没有包含的是mysql接口,但它作为PLaneT(Racket包分发工具)上的包存在.
更新:Racket现在提供数据库支持,可与包括mysql在内的多个数据库配合使用.
你可能想看一下Clojure:
Clojure是一种针对Java虚拟机的动态编程语言.[...] Clojure提供了对Java框架的轻松访问,具有可选的类型提示和类型推断,以确保对Java的调用可以避免反射.
Clojure是Lisp的一种方言,与Lisp共享代码为数据的哲学和强大的宏系统.
在Clojure中使用Java的Interop很简单,因此您可以根据需要重用任何现有的Java库.我确信有很多对Web开发有用的东西.
clojure-contrib有一个SQL API,还有ClojureQL,它应该涵盖你的数据库访问需求.
Clojure的Web框架正在开发中,名为Compojure.也可能有其他人.
Clojure的源代码可以在EPL下的github上找到.让它在Linux上运行很容易; 我只是克隆git repos并运行ant
.
您可以使用guile方案进行Web开发.它的标准库包括(sxml简单)模块,该模块对于html生成,操作和解析非常有用.该诡计www的库增加了对HTTP,CGI等支持诡计,DBI库提供访问MySQL等数据库.使用这些构建块,您可以实现从简单的cgi脚本到具有自己的HTTP服务器的Web应用程序的所有内容.
试试一下Common Lisp Web框架Weblocks:
http://weblocks.viridian-project.de/
我写了一篇关于这个主题的非常广泛的教程/电子书:http://lispwebtales.ppenev.com/
快速摘要:
它使用Common Lisp
它使用Restas框架
它提供了几乎所有基本Web开发的示例,包括数据库访问,身份验证,HTML生成和模板.
由于Restas文档已经过时,我的教程是最接近最新文档的.
显示一些更高级的功能,例如策略,允许您编写可插拔接口,例如,您可以编写数据存储层,并相对轻松地为不同的存储机制编写后端,模块系统允许您编写可重用的组件,如auth框架和类似的东西.
它涵盖了安装lisp,设置ASDF构建系统和quicklisp包管理器等内容.
它是免费在线的,一旦我完成它,它也将免费在leanpub上.源代码位于https://github.com/pvlpenev/lispwebtales,CC许可证下,源代码为MIT.并非所有内容都已发布,我正在修改过程中.
这可能就是你要找的东西.
http://www.plt-scheme.org/
http://docs.plt-scheme.org/web-server/index.html
http://common-lisp.net/project/cl-weblocks/
如果您对Common Lisp感兴趣并且不想使用weblocks路由,我建议您进行以下设置:
在Linux上使用SBCL但具有多线程支持
使用Hunchentoot作为Web服务器,它将为您提供所需的所有服务器处理,包括会话和cookie
使用ClSql与MySql通信它有足够的文档并且非常稳定.
对于HTM1代,您可以使用Edi Weitz Cl-WHO博士(记录完备).
注意以上所有都是GPL或类似的许可证(一个更适用于lisp程序)
Gambit Scheme也有自己的网络应用程序解决方案.它使用Spork框架,基于Black Hole模块系统(均由Per Eckerdal提供).
Andrew Whaley有一个关于如何使用mod_proxy让Gambit,Black Hole和Spork在Apache下运行Web应用程序的初步教程.你可能想看一下.
在一个(可能)相关的注释中,如果你有这种倾向,Gambit还会把你的东西编译成C然后编译成可执行文件.
Paul Graham(及其朋友)专门为编写基本的Web应用程序而制作了一个lisp方言.它被称为Arc,你可以在arclanguage.org获得它.
它可能不适合非常复杂的大型网站,我不确定它的数据库支持状态如何,但Paul Graham知道如何在lisp中编写Web应用程序,因此Arc会让您在花费最多的时候轻松使用HTTP/HTML部分你的大脑循环学习lisp方式.