ClojureScript: 将 "goog.dom query" 作为 q 引入

3
我对import和require的语义有些困惑。
我正在尝试在Google的Clojure库的dom部分中使用查询功能。
(import '(goog.dom query))
(def q query)

很不幸,它不能与 require :as : 一起使用。

(require '(goog.dom [query :as q]))

通过这个机会,我发现查询功能已被弃用。我不太明白为什么会这样。我只是在寻找一种简单、无花俏的抽象化(相当方便的简化),以便进行dom操作/选择。我知道有很多类似的工具,但我只需要一个快捷方式,不必为每个小项目编写像按id选择器这样的帮助程序。

1个回答

3

你走对了路。在这种情况下,你应该使用require。而import是用于构造类的。

(ns foo
  (:require [goog.dom :as dom])
  (:import [goog History]))

(dom/getElement "app")
(History.)

如果你在使用Figwheel REPL,你可以这样做

(require 'goog.dom)
(goog.dom/getElement "app")

或者

(require '[goog.dom :refer [getElement]])
(getElement "app")

或类似的功能。

query 已不再可用,但有许多有用的函数,如 getElement、getElementByClass、getElementsByTagNameAndClass 等等。

对于 REPL 交互,建议使用 querySelector https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector 替代:

(js/document.querySelector ".myclass")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接