ClojureScript:要求 "goog.dom query" 作为 q

ClojureScript: require "goog.dom query" as q

我对导入有点困惑,需要语义..

我正在尝试使用 Google 的 clojure 库的 dom 部分中的查询函数。

(import '(goog.dom query))
(def q query)

不幸的是,它不能使用 require :as :

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

一次偶然的机会,我发现查询功能已被弃用。我不太明白为什么。我只是在寻找一个简单的不花哨的抽象(相当方便的简化)来制作 dom manipulations/selections。我知道有很多,我只需要一个快捷方式来避免为每个小项目编写像 by-id select 这样的助手。

你走在正确的道路上。在这种情况下你应该使用 require 。导入用于您要构建的 class。

(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")