当前位置:  开发笔记 > 编程语言 > 正文

在Lisp中进行(严肃的)Web开发是否可行?

如何解决《在Lisp中进行(严肃的)Web开发是否可行?》经验,为你挑选了6个好方法。

显然几乎可以用任何编程语言编写几乎任何类型的应用程序,尤其是像Lisp这样强大的应用程序(无论是Scheme还是Common Lisp).但是将它用于Web开发是否可行?如果是这样,什么应该是一个很好的起点?哪里可以找到这种性质的项目的适当资源(工具,库,文档,最佳实践,示例等)?



1> David Lichte..:

是的,Web开发是Common Lisp今天的优势之一.

作为Web服务器,使用Hunchentoot,原名tbnl,埃德蒙博士韦茨.

您可以使用mod_proxy作为反向代理或作为独立服务器将其作为Apache的后端运行.

提供各种HTML生成解决方案,从PHP风格的模板到Lisp宏黑客到XSLT.请随便挑选.

HTML-TEMPLATE就是一个例子.

Closure XML可用于XML解析,序列化,XPath 1.0,XSLT 1.0.还有用于HTML标签汤解析的Closure HTML.

(完全披露:我是Closure XML和Closure HTML的维护者.)

如果您愿意,Parenscript可以让您的JavaScript体验更加轻松,但您当然也可以自己编写简单的旧JavaScript.

jwacs中另一个很酷的JavaScript增强解决方案,它使用Common Lisp编写并转换JavaScript以添加延续支持.

除服务器外,Web服务项目可能还需要HTTP客户端.

Drakma是今天使用的图书馆.

PURI对URI操作很有用.

还有更多!一个起点是cliki,例如cliki.net/web.

在网上,没有人知道你的服务器是用Common Lisp编写的:-)


[在互联网上,没有人知道你是一只狗](http://petersmagnusson.files.wordpress.com/2007/09/dogoninternet.jpg?w=380&h=422) - 对吗?

2> Leslie P. Po..:

Common Lisp中的Web开发既有效又有趣.

一些例子:

CL-WHO允许您在不忘记结束标记的情况下编写HTML.

Weblocks允许您使用内置验证以声明方式定义表单:

(defview signup (:type form :caption "Sign up")
  (username :satisfies #'valid-username)
  (password :present-as dual-password :parse-as dual-password)
  (receive-newsletter-p :present-as checkbox :parse-as predicate))

它还以全自动方式支持AJAX,如果浏览器不支持,则回退到普通链接.

cl-prevalence是一种非常简单的SQL替代方案.

最近有很多人将这些技术用于任务关键型应用程序 - 并取得了成功.

事实上,最重要的CL开源项目确实有很好的社区支持.



3> d4nt..:

有一些用于Web开发的Web框架.看一下:

Weblocks(Common Lisp)

Compojure(Clojure)

如果您需要得到良好支持的lisp工具,那么您需要为它们付费.围绕开源工具并没有一个非常大的社区,因此他们没有与Python上的Django相同级别的文档/采用.

以下是一些商业lisp产品:

Lispworks

Franz Allegro CL

值得注意的是,Reddit最初是在Lisp中构建的,但作者后来迁移到Python,理由是缺乏使用良好且文档化的库.(链接)


我是一个很好的Lisp粉丝,它正在为我取代Python.但我在C++工作.我可以找到其他熟悉Python原型的Python程序员,但是直到现在的Lisp复兴取得更大的成功,我无法在工作中使用它而没有无穷无尽的问题"你为什么不使用Python或Ruby?"

4> Chris..:

我不能和其他框架说话,但是我很幸运使用Hunchentoot作为网络服务器(它本身可以正常工作,或者你可以把它放在Apache之后).真正令它闪耀的是(这可能会让一些人震惊)是图书馆!

使用CL-WHO以lisp风格的语法编写轻松的HTML

Parenscript允许您编写编译为javascript的代码

对于数据库连接,使用Postmodern与PostgreSQL交谈

我真正喜欢在网络上使用CL的是你可以在运行时调整它.您总是有一个REPL并运行您的服务器代码,然后您可以连接到该REPL并更改或检查代码的工作方式,所有这些都无需停止任何操作.我在网站运行时重新定义了函数,下次调用函数时,它只是选取新代码并运行.



5> vsedach..:

为了进一步帮助消除没有Lisp Web框架的神话,这里有一些尚未提及的:

UnCommon Web

BKNR

AllegroServe的Webactions

显然很多人似乎认为Lisp足以编写很多Web框架.

我不使用或认可任何Web框架.我更喜欢通过将正交工具(David Lichteblau提到一些好的工具)结合在一起来构建Web应用程序,使用的设计模式实际上适合您正在构建的应用程序,这就是我推荐的方法.Common Lisp提供了大量此类工具,以及无与伦比的组合能力.

亚当·彼得森(Adam Petersen)去年发表了一篇关于如何以这种方式开始构建Lisp Web应用程序的优秀入门教程:

http://www.adampetersen.se/articles/lispweb.htm



6> Friedrich..:

我想没有多少人就可以说是的.

    第一个HTTP服务器之一是cl-http

    DrScheme周围的计划人员花费了大量时间:

    www.franz.com运行在他们自己的Webserver(AllegroServer)和webframework(webactions)上

    如果您有疑问,请查看Edi Weitz的常见lisp包.他们通常工作.

所以是的,可以使用Common Lisp进行"严肃"的网络编程.我个人目前尚未决定遵循一些Common Lisp路线或Ruby on Rails.我更喜欢任何.NET ....

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有