在命名空间中找出 `:require` 的名称

时间:2020-12-27 11:04:03

标签: clojure package leiningen

我正在学习本教程:https://practicalli.github.io/blog/posts/web-scraping-with-clojure-hacking-hacker-news/ 并且我很难处理 :require 宏的 ns 部分。本教程展示了如何使用名为 enlive 的库来解析 HTML 并从中提取信息,并且要使用它,我首先必须将

   ...
  :dependencies [[org.clojure/clojure "1.10.1"]
                 [enlive "1.1.6"]]
   ...

在我的 project.clj 中,并要求 core.clj 中的库如下:

(ns myproject.core
  (:require [net.cgrand.enlive-html :as html])
  (:gen-class))

我花了很多时间找出名称 net.cgrand.enlive-html,因为它与包的名称本身不同(只是 enlive),而且我无法通过任何 lein 找到它{1}} 命令(我最终通过谷歌搜索找到了它)。

如何轻松找出require的名称?

2 个答案:

答案 0 :(得分:4)

实用方法

如果您的编辑器/IDE 有助于自动完成和 docs,这可能是第一条路线。

除此之外,图书馆通常在网上有一些自述文件,他们会在那里炫耀 他们做什么(需要什么,如何使用)。

严格的做法

如果你真的对某个库一无所知,你会发现下载的 您 ~/.m2/repository 目录中的库。注意没有命名的 deps “组/工件”的约定只会在工件名称上加倍,接下来是 版本。所以你可以在这里找到你的库 JAR 文件: .m2/repository/enlive/enlive/1.1.6/enlive-1.1.6.jar

JAR 文件只是 ZIP 文件。在 JAR 文件中,您通常会找到 库的源文件。目录结构反映了包 结构体。例如。一个文件有 net/cgrand/enlive_html.clj(注意使用 _ 而不是 -,这是由于 JVM 的名称修改)。然后是你 可以在您的 REPL 中要求该文件并使用 docdir 等进行探索。或者您 打开这个文件,在一块中查看文档和源代码。

答案 1 :(得分:1)

通常我从图书馆的文档/教程中得到这个。

https://github.com/cgrand/enlive 查看快速教程,从所需的要求开始。

相关问题