ES6 有用于“默认”导入的特殊语法,而在使用导入的 ES6 代码时 CLJS 目前没有等效功能。
`
import * as 名称 from "模块名称";
(:require ["模块名称" :as 名称])
import { 导出 } from "模块名称";
(:require ["模块名称" :refer (导出)])
import { 导出 as 别名 } from "模块名称";
(:require ["模块名称" :refer (导出) :rename {导出 别名}])
import 默认导出 from "模块名称";
import 默认导出, { 导出 [ , [...] ] } from "模块名称";
import 默认导出, * as 名称 from "模块名称";
;; 无法轻松访问默认导出
`
我建议在 {{:require}} 中添加 {{:default}}。
(:require ["模块名称" :as mod :default foo])
这使得从 CLJS 使用重写的 ES6 代码变得更加方便。如果 "模块名称" 有默认导出,您目前必须在每处都写 {{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