在clojurescript中调用自定义javascript函数
我的项目.clj如下:在clojurescript中调用自定义javascript函数,javascript,interop,clojurescript,Javascript,Interop,Clojurescript,我的项目.clj如下: (defproject cljsbuild-example-simple "0.3.2" :description "A simple example of how to use lein-cljsbuild" :source-paths ["src-clj"] :dependencies [[org.clojure/clojure "1.5.1"] [compojure "1.0.4"] [
(defproject cljsbuild-example-simple "0.3.2"
:description "A simple example of how to use lein-cljsbuild"
:source-paths ["src-clj"]
:dependencies [[org.clojure/clojure "1.5.1"]
[compojure "1.0.4"]
[hiccup "1.0.0"]]
:plugins [[lein-cljsbuild "0.3.2"]
[lein-ring "0.7.0"]]
:cljsbuild {
:builds [{:source-paths ["src-cljs"]
:compiler {:output-to "resources/public/js/main.js"
:libs ["src-js/jsfuncs.js"]
:optimizations :whitespace
:pretty-print true}}]}
:ring {:handler example.routes/app})
jsfuncs.js包含以下代码:
function calculate(a,b,c) {
d = (a+b) * c;
return d;
}
如何从clojurescript文件中调用此js函数?我试图通过以下方式调用此函数:
(js/calculate 4 5 6)
但这并不奏效。谢谢。主要问题是谷歌闭包编译器需要阅读JavaScript并能够理解它。普通JS代码缺少编译器所需的一些提示(JSDoc标记)和名称空间 JSDoc标记是可选的(它们帮助编译器捕获额外的错误并更好地优化代码),但是需要添加名称空间部分。这就是:
goog.provide('jsfuncs');
/**
* @param {number} a
* @param {number} b
* @param {number} c
* @return {number}
*/
jsfuncs.calculate = function(a, b, c) {
d = (a+b) * c;
return d;
};
另一种方法是为闭包编译器提供一个描述JS代码的外部文件。我不是100%确定如何做到这一点,但有一些。还有一些大型外部文件,包括jQuery、Angular和其他公共库
执行以下方法之一后,可以使用以下方法调用calculate:
(ns some.namespace
(:require [jsfuncs :as jsf]))
(console/log (jsf/calculate 1 2 3))
主要问题是Google闭包编译器需要读取JavaScript并能够理解它。普通JS代码缺少编译器所需的一些提示(JSDoc标记)和名称空间 JSDoc标记是可选的(它们帮助编译器捕获额外的错误并更好地优化代码),但是需要添加名称空间部分。这就是:
goog.provide('jsfuncs');
/**
* @param {number} a
* @param {number} b
* @param {number} c
* @return {number}
*/
jsfuncs.calculate = function(a, b, c) {
d = (a+b) * c;
return d;
};
另一种方法是为闭包编译器提供一个描述JS代码的外部文件。我不是100%确定如何做到这一点,但有一些。还有一些大型外部文件,包括jQuery、Angular和其他公共库
执行以下方法之一后,可以使用以下方法调用calculate:
(ns some.namespace
(:require [jsfuncs :as jsf]))
(console/log (jsf/calculate 1 2 3))