Articles of clojurescript

使用Aleph / Laminaasynchronous访问MongoDB

我一直在阅读Clojure一段时间,我正在考虑它作为Node.js(我已经用于另一个项目)的替代品。 最有希望的图书馆似乎是Aleph / Lamina,遗憾的是没有像Node那么多的例子。 我的问题是: 我如何处理asynchronous操作链的请求,如从MongoDB读取文档,做一些计算,保存新文档并将其发送到响应中? 我无法从Lamina wiki页面中的示例中编写它。 这听起来像一个相当常见的用例,我很惊讶没有发现任何代码显示它。 如果你能给我看一些示例代码,那将是非常好的。 这种设置是否适合于重负载的服务器(比如每秒几万个请求)? 我无法为每个新请求创build一个线程,所以我需要类似于Node方法的东西。 有没有使用这种方法的中型或大型公司的例子? 有没有更好的Clojure替代节点(除了Aleph / Lamina)? 也许Clojurescript目标节点? 我的客户端不是用Javascript编写的,所以在客户端和服务器端使用相同的语言在我的情况下不是一个优势。 谢谢!

Clojurescript + Node.js 0.12.7问题(错误“process.binding('evals')没有这样的模块:evals”)

我试图使用Node.js + ClojureScript,我find了一个文章。 http://www.mase.io/code/clojure/node/2015/01/24/getting-started-with-clojurecript-and-node/ 按照说明find这个错误: process.binding('evals').NodeScript.runInThisContext.call( ^ Error: No such module: evals at Error (native) 这个问题似乎是我需要使用旧版本的节点: https : //groups.google.com/forum/#!topic / clojurescript / VneLWVpwe6o和https://github.com/kanso/kanso/issues/422 矿是0.12.7 pow> node –version v0.12.7 在这种情况下,我可能需要使用旧版本的节点,但更好的方法是绕过这个问题吗? 如果不存在,如何在Mac OS X中使用旧版本的node.js? 编辑 在https://github.com/creationix/nvm之后,我可以安装0.10.32版本的node.js。 pow> nvm install 0.10.32 pow> node –version v0.10.32 但是,它给了我另一个错误信息: pow> node entrypoint.js Hello world! /Users/smcho/Desktop/clojurescript/pow/out/server/cljs/core.js:12133 var fixed_arity = f.cljs$lang$maxFixedArity; ^ TypeError: […]

我的ClojureScript翻译这个JS函数是否习惯?

我正在试图评估我的CLJS函数声明是否惯用。 这里是我尝试将JS函数转换为相应的CLJS函数。 (您可以忽略该function的实际内容)。 JavaScriptfunction: var dir = require('node-dir'); function jsFunc(path) { dir.files(path, function(err, files) { if (err) throw err; files = files.filter(function (file) { return file.endsWith('.dec'); }); console.log(files); }); } 我的翻译成ClojureScript: (defn cljs-func [input-path] (let [dir (node/require "node-dir")] (.files dir input-path (fn [err files] (println (.filter files (fn [file] (.endsWith file ".dec")))))))

如何添加Reagent到Node JS API

我有一个简单的节点JS应用程序提供API。 我可以node main.js来运行服务器,并调用localhost:3000/api/names来成功获取名称列表。 我想用Reagent / Cljsbuild立在这个基础上。 我可以在localhost:3030上运行一个试剂应用程序localhost:3030 。 我的问题是,我如何从试剂应用程序API调用Node应用程序? 还是我的架构都错了? 我应该结合这两个应用程序,如果是的话,如何? 我已经尝试过将它们结合起来,但Reagent想要在Ring上运行,而Node应用程序想要在节点服务器上运行。 所以我还是没有沟通。 我已经试过了快速入门指南,但这不完全相同的情况。 我也给了这个方法无济于事。 将这些组件放在一起以便我可以将Node应用程序的API响应数据带到Reagent应用程序的最简单方法是什么? 或者有没有一种方法可以从我缺less的Reagent应用程序中调用API调用?

从Clojurescript中创build一个NodeJS可运行的单个JavaScript文件

使用Lumo和下面提到的文件,我可以运行$ node main.js和presto! “你好,世界!”。 这很好,但是使用Lumo有一些缺点,我想知道这是否可以用cljs.jar 。 我如何使用可以由NodeJs运行的ClojureScript编译器(cljs.jar)从clojurescript创build一个JavaScript文件。 core.cljs (ns hello-world.core (:require [cljs.nodejs :as nodejs])) (nodejs/enable-util-print!) (defn -main [& args] (println "Hello world!")) (set! *main-cli-fn* -main) node.cljs (require '[lumo.build.api :as b]) (b/build "src" {:main 'hello-world.core :output-to "main.js" :optimizations :advanced :target :nodejs}) 目标是拥有一个包含所有内容的单个文件,不需要导入/需要外部文件。 我为什么要这个? 有许多网站在创build和/或增强algorithm方面遇到开发人员的挑战。 问题是,这些网站大部分不是所有你使用clojure,也clojurescript。 但他们确实让你使用JavaScript。 这些网站通常允许你使用Java以及…所以如果有另一种方式可能得到一个“java”文件,而不是一个类文件,这也将工作的出口。 我怀疑这可能,但我想问问。

在编译.cljs的时候如何在编译时定义目标env?

我想编译浏览器和node.js环境的.cljs文件,以获得服务器端的渲染。 据我所知,没有办法在编译时使用读者macros条件来定义cljs env,例如: #?(:clj …) #?(:cljs …) 所以,我不能轻易地告诉编译器在node.js env中处理类似于#?(:cljs-node …)东西。 我在这里看到的第二个选项是开发一个在编译时定义env的macros文件。 但如何定义目前的构build是针对node.js? 也许,我可以通过一些参数不知何故编译器或得到:target编译器参数? 这里是我的启动文件: application.cljs.edn: {:require [filemporium.client.core] :init-fns [filemporium.client.core/init]} application.node.cljs.edn: {:require [filemporium.ssr.core] :init-fns [filemporium.ssr.core/-main] :compiler-options {:preamble ["include.js"] :target :nodejs :optimizations :simple}}

(node / enable-util-print!)做什么?

在一个针对nodejs的ClojureScript项目中,下面的通用语句幕后到底是怎么回事? (node/enable-util-print!)

使用Express.JS运行FIgwheel

根据我的理解,在我的系统上运行lein figwheel ,在lein figwheel启动一个简单的静态托pipe服务器(通过环)。 问题是我通过node.js在端口3000托pipe我自己的文件。 当我运行figwheel,然后启动我的express.js服务器,更改我的前端文件奇怪地影响两个端口相同(即更新文件导致两个页面立即重新渲染)。 问题:如果figwheel对express.js port 3000服务器没有任何了解,那怎么可能呢? 而且,在任何情况下,这是使用我自己的express服务器的最佳方式(即,有两个实例运行,一个默认为3449,而我自己的端口为3000)?

Clojurescript使用nodejs来读取stdin

我无法使用ClojureScript从NodeJs读取stdin。 理想情况下,最终的命令是java -cp cljs.jar:src clojure.main node.clj后跟node main.js Javascript版本正常工作,但我无法使用ClojureScript来使用它。 Clojurescript (ns hello-world.core (:require [clojure.string :as string] [cljs.nodejs :as nodejs])) (nodejs/enable-util-print!) (defn -main [& args] (let [readline (js/require "readline") rl (.createInterface readline js/process.stdin js/process.stdout)] (.on rl "line" (fn [line] (def lineVector (clojure.string/split line #" ")) (if (and (nil? lineVector) (< (get lineVector 0) 10) (< (get lineVector […]

ClojureScript + momentjs(node.js)以.format(“dddd,MMMM Do YYYY,h:mm:ss a”)失败

我试图显示当前date时间格式控制node.js + clojure部署momentjs 。 工作节点js代码: var moment = require("./lib/moment/moment.js"); console.log(moment().format("dddd, MMMM Do YYYY, h:mm:ss a")); 控制台输出: $ node app1 Friday, July 5th 2013, 9:57:07 am 所以,我尝试clojureScript代码如下: (ns rxcljs.core (:use [cljs.nodejs :only [require]]) ) (def log #(.log js/console %)) (def moment (require "./lib/moment/moment.js")) (->> (-> (moment) (.format "dddd, MMMM Do YYYY, h:mm:ss a") ) (log) ) […]