Board logo

标题: 在 Bluemix 上编写 Clojure Web 应用程序(1) [打印本页]

作者: look_w    时间: 2018-11-21 20:12     标题: 在 Bluemix 上编写 Clojure Web 应用程序(1)

准备好尝试函数式编程了吗?或许  会说服您试一试。您可能想了解一种新的做事方式。或者想看看您能多大程度地抽象化您的代码和数据。
理想情况下,Web 应用程序需要高性能和高可用性,可通过在 Bluemix 服务器上运行来实现此目的。在本教程中,我将介绍如何使用 Node.js                运行作为 Bluemix Web 应用程序一部分的                  程序。
构建和部署您的 Clojure 应用程序需要做的准备工作
初识 Clojure  是一种 Lisp 方言,可在 JVM 或 JavaScript                中执行。要从 Node.js 应用程序运行它,可使用   包。
Clojure 函数的工作原理如果您已了解 Clojure 甚至一种不同的 Lisp                方言,那么您应该对本文感到熟悉。
在上面的第 3 步中,当定义一个 Clojure 函数时,cljs.eval                函数收到一个字符串并将它计算为 Clojure 代码。在本例中,该字符串使用撇号 (')                分隔,以便也可以使用引号 (")。
cljs.eval('




下面的 Clojure 语句将执行两个操作:
(ns app (:require clojure.string))




下面的 Clojure 语句是实际的函数定义。因为这是我们定义的第一个函数,所以让我们详细分析一下。第一部分定义一个名为                h2 的函数。
(defn h2




下面的部分指定该函数将拥有一个名为 str 的参数。请注意,此部分使用了方括号 ([ ])                而不是典型的括号。Clojure 与传统 Lisp                的区别在于,它使用不同括号类型来表示不同实体。方括号定义矢量,矢量充当着一个列表(放在普通的圆括号中的项的集合),但支持更快地访问中间元素和更快地在末尾插入项。
[str]




接下来,从库中调用函数的语法为                <library name>/<function>。这部分从                clojure.string 调用                join。该函数接收一个矢量并返回一个包含所有项的字符串。在本例中,它将该字符串放在 h2 标签中:
(clojure.string/join ["<h2>" str "</h2>"])




完整的函数定义是一个列表。它以最后的圆括号结束。
)




在上面的第 4 步中,app.get  调用中的 Clojure                代码更加简单。它首先将自己识为别 app 名称空间的一部分,然后调用之前定义的 h2                函数。cljs.eval 函数返回最后一个表达式(在本例中为 h2 调用)的结果。然后通过                res.send 将该值发送给用户。
res.send(cljs.eval('(ns app) (h2 "Hello, Clojure")'));




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0