BIBLIOGRAPHY
“Kit-Clj/Kit Lightweight, Modular Framework for Scalable Web Development in Clojure.” (2021) 2024. Kit Framework. https://github.com/kit-clj/kit.
“Metosin/Malli High-Performance Data-Driven Data Specification Library for Clojure/Script.” (2019) 2025. Metosin. https://github.com/metosin/malli.
“Metosin/Reitit a Fast Data-Driven Routing Library for Clojure/Script.” (2017) 2025. Metosin. https://github.com/metosin/reitit.
“Pitch-Io/Uix: Idiomatic Clojurescript Interface to Modern React.Js.” 2025. https://github.com/pitch-io/uix.
“Reagent-Project/Reagent a Minimalistic Clojurescript Interface to React.Js.” (2013) 2025. reagent-project. https://github.com/reagent-project/reagent.
“Ring-Clojure/Ring Clojure Http Server Abstraction.” (2012) 2025. Official Ring Repositories. https://github.com/ring-clojure/ring.
관련노트
clojure
History
- 알려준 정보를 바탕으로 전체 그림을 그려본다면?!
관련 리포지토리
pitch-io/uix: Idiomatic ClojureScript interface to modern React.js
(“Pitch-Io/Uix: Idiomatic Clojurescript Interface to Modern React.Js” 2025)
ring-clojure/ring Clojure HTTP server abstraction
(“Ring-Clojure/Ring Clojure Http Server Abstraction” [2012] 2025)
- Clojure HTTP server abstraction
reagent-project/reagent A minimalistic ClojureScript interface to React.js
(“Reagent-Project/Reagent a Minimalistic Clojurescript Interface to React.Js” [2013] 2025)
- A minimalistic ClojureScript interface to React.js
metosin/malli High-performance data-driven data specification library for Clojure/Script
(“Metosin/Malli High-Performance Data-Driven Data Specification Library for Clojure/Script” [2019] 2025)
- High-performance data-driven data specification library for Clojure/Script.
metosin/reitit A fast data-driven routing library for Clojure/Script
(“Metosin/Reitit a Fast Data-Driven Routing Library for Clojure/Script” [2017] 2025)
- A fast data-driven routing library for Clojure/Script
2025-02-07 W05
@user 다음의 정보를 바탕으로 클로저 풀스택을 어떻게 구성할 수 있을까?
클로저 개발 시 프레임워크는 따로 쓰지 않고 사용중인 라이브러리를 말씀드리면
- ring (server)
- reitit (router)
- malli (data schema)
- uix + reagent (react 인터롭 + 프론트)
@assistant 클로저 풀스택 구성은 다음과 같이 할 수 있습니다:
백엔드:
- Ring을 사용하여 HTTP 서버 구축
- Reitit으로 라우팅 처리
- Malli로 데이터 스키마 정의 및 검증
프론트엔드:
- UIx와 Reagent를 활용하여 React 기반 UI 구현
- ClojureScript로 컴파일하여 브라우저에서 실행
이 구성은 프레임워크 없이 필요한 라이브러리만 조합하여 유연하고 가벼운 풀스택 애플리케이션을 만들 수 있게 해줍니다. 백엔드와 프론트엔드 모두 클로저를 사용하므로 코드 재사용성이 높고 개발 효율성도 좋습니다.
Citations: [1] https://green-labs.github.io/start-your-clojure-project-now-2/ [8] https://green-labs.github.io/start-your-clojure-project-now-1/
@user 혹시 유사한 구성을 가진 코드 베이스를 찾아봐줄래?
@assistant 네, 유사한 구성을 가진 코드 베이스를 찾아보았습니다. 주어진 검색 결과 중 [2]번 링크의 GitHub 저장소가 가장 유사한 구성을 보여줍니다:
https://github.com/metosin/reitit/blob/master/examples/ring-malli-swagger/src/example/server.clj
이 예제는 다음과 같은 유사점을 가집니다:
- Ring을 사용한 HTTP 서버 구축
- Reitit을 이용한 라우팅
- Malli를 사용한 데이터 스키마 정의
- Swagger UI 통합
이 예제는 당신이 언급한 라이브러리들(ring, reitit, malli)을 모두 사용하고 있으며, 풀스택 애플리케이션의 백엔드 부분을 구현하고 있습니다. 프론트엔드 부분(UIx + reagent)은 포함되어 있지 않지만, 백엔드 구조는 매우 유사합니다.
Citations: [1] https://www.gdsanadevlog.com/planguages/swift/aboutswift/about-swift-%ED%81%B4%EB%A1%9C%EC%A0%80-closure/ [2] https://github.com/metosin/reitit/blob/master/examples/ring-malli-swagger/src/example/server.clj [3] https://geundung.dev/125 [4] https://github.com/metosin/reitit/blob/master/doc/ring/default_middleware.md [5] https://green-labs.github.io/is-clojure-hard-to-read/ [6] https://www.youtube.com/watch?v=SMd-a8yJ13U [7] https://green-labs.github.io/start-your-clojure-project-now-2/ [8] https://front-to-fullstack.tistory.com [10] https://www.youtube.com/watch?v=4hhlfq3Uy6U
@user 위에서 다음 부분은 어떤 이야기지? reagent로 react를 어떻게 한다는 말인지?
uix + reagent (react 인터롭 + 프론트)
@assistant 이 부분은 ClojureScript에서 React를 사용하는 방법에 대해 설명하고 있습니다:
-
Reagent: ClojureScript에서 React를 더 쉽게 사용할 수 있게 해주는 라이브러리입니다. Reagent는 React 컴포넌트를 ClojureScript 스타일로 작성할 수 있게 해줍니다.
-
UIx: React 컴포넌트를 ClojureScript에서 직접 사용할 수 있게 해주는 라이브러리입니다. 이를 통해 기존 React 라이브러리나 컴포넌트를 ClojureScript 프로젝트에서 쉽게 활용할 수 있습니다.
-
React 인터롭: UIx를 통해 React와 ClojureScript 간의 상호운용성(interoperability)을 제공합니다.
-
프론트: 이 조합으로 프론트엔드 개발을 ClojureScript로 할 수 있다는 의미입니다.
즉, UIx와 Reagent를 함께 사용하면 ClojureScript로 React 기반의 프론트엔드를 개발할 수 있으며, 기존 React 생태계의 이점도 활용할 수 있습니다.
Citations: [1] https://ko.legacy.reactjs.org/docs/conditional-rendering.html [2] https://www.learn-clojurescript.com/section-5/lesson-28-using-react-via-reagent/ [3] https://reagent-project.github.io [4] https://github.com/reagent-project/reagent/blob/master/doc/InteropWithReact.md [5] https://ko.legacy.reactjs.org/docs/reconciliation.html [6] https://groups.google.com/g/clojure-kr/c/rgTZyOdiZTA [7] https://groups.google.com/g/clojure-kr/c/Psl4U1LTE4A
@user 왜 UIx와 Reagent가 둘다 필요한거야? 같은 목적의 라이브러리가 아닌가 싶어서
@assistant UIx와 Reagent는 비슷한 목적을 가지고 있지만 약간 다른 역할을 합니다:
-
Reagent: ClojureScript에서 React를 더 쉽게 사용할 수 있게 해주는 라이브러리입니다. Clojure 스타일로 React 컴포넌트를 작성할 수 있게 해줍니다.
-
UIx: React 컴포넌트를 ClojureScript에서 직접 사용할 수 있게 해주는 라이브러리입니다. 기존 React 라이브러리나 컴포넌트를 ClojureScript 프로젝트에서 쉽게 활용할 수 있게 해줍니다.
두 라이브러리를 함께 사용하면 Clojure 스타일의 개발과 기존 React 생태계의 이점을 동시에 활용할 수 있습니다. Reagent로 ClojureScript 스타일의 컴포넌트를 작성하면서, UIx를 통해 필요한 React 컴포넌트를 직접 가져와 사용할 수 있습니다.
Citations: [1] https://inis.iaea.org/records/k9ky6-t2760/files/29052730.pdf?download=1 [2] https://patents.google.com/patent/KR20160083849A/en [3] https://inis.iaea.org/records/cjq5e-08009/files/30045457.pdf?download=1 [4] https://ksgd.org/file/forum/vol03.pdf [5] https://www.ust.ac.kr/prog/ustProfsr/campus/sub49_04/view.do;jsessionid=D65616DC42A954BD62299F1792C5FF6C [6] https://patents.google.com/patent/KR20220149716A/en [7] https://koreascience.kr/article/JAKO199713464517290.pdf [8] https://djtp.or.kr/attachFiles/board/0101/23fc6859b29de942f02dbfd01e9ffde7.pdf [9] https://app.jove.com/t/58079/dynamic-proteomic-and-mirna-analysis-of-polysomes-from-isolated-mouse-heart-after-langendorff-perfusion?language=Korean [10] https://blog.naver.com/PostView.nhn?blogId=chembychem&logNo=222142421493
@user 다음에서 말하는 클로저 라이브러리의 깃허브 주소를 알려줄래?
- Ring을 사용하여 HTTP 서버 구축
- Reitit으로 라우팅 처리
- Malli로 데이터 스키마 정의 및 검증
@assistant 각 라이브러리의 GitHub 주소는 다음과 같습니다:
-
Ring (HTTP 서버): https://github.com/ring-clojure/ring
-
Reitit (라우팅): https://github.com/metosin/reitit
-
Malli (데이터 스키마): https://github.com/metosin/malli
이 링크들을 통해 각 라이브러리의 공식 문서와 예제 코드를 확인할 수 있습니다.
@user 위에서 말한 풀스택을 kit-clj/kit 활용할 수 있는가?
@assistant 네, kit-clj/kit을 활용하여 위에서 언급한 풀스택을 구성할 수 있습니다. kit-clj는 Clojure 프로젝트 템플릿으로, Ring, Reitit, Malli 등을 포함한 다양한 라이브러리를 쉽게 통합할 수 있도록 설계되었습니다. kit-clj를 사용하면 초기 설정 시간을 크게 단축할 수 있으며, 위에서 설명한 풀스택 구조를 빠르게 구축할 수 있습니다.
Citations: [1] https://github.com/kit-clj/kit [2] https://github.com/kit-clj/kit-template [3] https://github.com/kit-clj/kit-docs [4] https://github.com/kit-clj/kit-clj.github.io [5] https://github.com/kit-clj/kit-clj.github.io/blob/master/content/docs/tutorials/basic-tutorial.md [6] https://github.com/kit-clj/kit-clj.github.io/blob/master/content/docs/tutorials/advanced-tutorial.md [7] https://github.com/kit-clj/kit-clj.github.io/blob/master/content/docs/tutorials/deployment.md [8] https://github.com/kit-clj/kit-clj.github.io/blob/master/content/docs/tutorials/testing.md [9] https://github.com/kit-clj/kit-clj.github.io/blob/master/content/docs/tutorials/clojurescript.md [10] https://github.com/kit-clj/kit-clj.github.io/blob/master/content/docs/tutorials/clojurescript-advanced.md
@user UIx와 Reagent는 kit에서 통합할 수 있는가?
@user
kit-clj/kit Lightweight, modular framework for scalable web development in Clojure :2024
(“Kit-Clj/Kit Lightweight, Modular Framework for Scalable Web Development in Clojure” [2021] 2024)
- Lightweight, modular framework for scalable web development in Clojure