ES6有特殊的语法用于使用"默认"导入,当在导入使用ES6代码的CLJS中时,没有等效功能。
`
import * as name from "module-name";
(:require ["module-name" :as name])
import { export } from "module-name";
(:require ["module-name" :refer (export)])
import { export as alias } from "module-name";
(:require ["module-name" :refer (export) :rename {export alias}])
import defaultExport from "module-name";
import defaultExport, { export [ , [...] ] } from "module-name";
import defaultExport, * as name from "module-name";
;; 无法轻松访问defaultExport
`
我建议在(ns :require)中添加{{:default}}。
(:require ["module-name" :as mod :default foo])
这使得从CLJS使用重写的ES6代码变得更加方便。如果"module-name"有一个默认导出,您目前必须在整个文档中使用{{mod/default}},因为没有简单的方式来为其设置别名。
`
(:require ["material-ui/RaisedButton" :as RaisedButton])
;; :as 是错误的,现在用户必须使用
RaisedButton/default
(:require ["material-ui/RaisedButton" :default RaisedButton])
;; 将允许直接使用
RaisedButton
`
内部,Closure编译器(以及由babel重写的ES6代码)将重写默认导出为{{.default}}属性,所以{{:default}}确实只是访问它的方便方式。
已经可以工作的长版本是
(:require ["material-ui/RaisedButton" :refer (default) :rename {default RaisedButton}])
当ES6变得更加普及时,我们应该有一种方便的方法来正确地引用"默认"导出。
(链接: 1) https://mdn.org.cn/en-US/docs/Web/JavaScript/Reference/Statements/import