gpt4 book ai didi

clojurescript - 在高级模式下编译 clojurescript 和 angularjs

转载 作者:行者123 更新时间:2023-12-04 05:02:46 26 4
gpt4 key购买 nike

我在获取一个简单的 clojurescript 程序以在高级模式下正确编译时遇到问题。例如,这是一个简单的程序

(ns cljs-basics.core)

(.write js/document "hello, cljs")

(def basicsApp (.module js/angular "basics" (array)))

(def testController
(.controller basicsApp "TestCtrl" (fn [$scope])))
(aset testController "$inject" (array "$scope"))

和 html 文件:
<!doctype html>
<html ng-app="basics" lang="en">
<head>
<meta charset="utf-8">
<title>Simple CLJS</title>
<script src="components/angular/angular.js"></script>
<script src="js/basic.js"></script>
</head>
<body ng-controller="TestCtrl">
{{testvar}}
</body>
</html>

代码在 :simple 上运行良好,但是当我打开 :advanced 时,它不起作用。 .controller.module调用被编译为符号,所以我得到
Uncaught TypeError: Object #<Object> has no method 'Uf' basic.js:5105
Uncaught Error: No module: basics

有没有办法以某种方式包含 angular.js 文件,以便编译器可以将所有内容一起缩小?

最佳答案

如果包含适当的“externs”文件,:advanced 模式编译将不会重命名在外部库中定义的符号。可以在以下位置找到 angular 的 externs 文件:

https://code.google.com/p/closure-compiler/source/browse/contrib/externs/angular.js

如果您使用 cljsbuild,Leiningen 编译器配置如下所示:

:cljsbuild {
:builds [
{
:source-paths ["src"]
:compiler {
:output-to "target/main.js"
:optimizations :advanced
:externs ["externs/angular.js"]
}
}
]
}

关于clojurescript - 在高级模式下编译 clojurescript 和 angularjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15918258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com