Где я должен использовать файлы с кодами, которые я пишу себе в приложении Clojure luminus? И как я могу экспортировать функцию из нее и импортировать ее в другой файл? Скажем, я создал файл «helper1.clj», как я могу получить доступ к функциям из него в «src/clj/my_app/routes/home.clj»? И где я должен поместить файл «helper1.clj»?Пользовательские файлы в luminus
ответ
Посмотрите на файл project.clj
. Вы увидите строку:
:source-paths ["src/clj"]
Это означает, что каталог src/clj
будет корнем всех пространств имен. Пространство имен - это путь к каталогу, разделенный точками, причем конечная часть пространства имен является именем файла. Пример:
File name: my_app/src/clj/dirone/dirtwo/myfile.clj
Namespace in this file: (ns dirone.dirtwo.myfile ...)
С, что в настоящее время установлено, вы, вероятно, следует поместить новые файлы в src/clj/my_app
на данный момент. Пространство имен для helper.clj
будет выглядеть:
(ns my-app.helper ...)
Вы можете создавать новые каталоги в src/clj
, например, src/clj/newdir
. Файл в этой директории под названием anotherfile.clj
будет иметь пространство имен:
(ns newdir.anotherfile ...)
Посмотрите в файле my_app/routes/home.clj
и смотреть сверху, и вы увидите, где :require [my-app.layout :as layout]
. Вы бы добавили следующее, чтобы ссылаться на свою функцию myfunc
в свой файл helper.clj
:
;... list of items under :require
[my-app.helper :as h]
;...
(def something (h/myfunc ...))