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

  • [2025-02-07 Fri 12:31] 알려준 정보를 바탕으로 전체 그림을 그려본다면?!

관련 리포지토리

[2025-02-07 Fri 12:32]

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

이 예제는 다음과 같은 유사점을 가집니다:

  1. Ring을 사용한 HTTP 서버 구축
  2. Reitit을 이용한 라우팅
  3. Malli를 사용한 데이터 스키마 정의
  4. 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를 사용하는 방법에 대해 설명하고 있습니다:

  1. Reagent: ClojureScript에서 React를 더 쉽게 사용할 수 있게 해주는 라이브러리입니다. Reagent는 React 컴포넌트를 ClojureScript 스타일로 작성할 수 있게 해줍니다.

  2. UIx: React 컴포넌트를 ClojureScript에서 직접 사용할 수 있게 해주는 라이브러리입니다. 이를 통해 기존 React 라이브러리나 컴포넌트를 ClojureScript 프로젝트에서 쉽게 활용할 수 있습니다.

  3. React 인터롭: UIx를 통해 React와 ClojureScript 간의 상호운용성(interoperability)을 제공합니다.

  4. 프론트: 이 조합으로 프론트엔드 개발을 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는 비슷한 목적을 가지고 있지만 약간 다른 역할을 합니다:

  1. Reagent: ClojureScript에서 React를 더 쉽게 사용할 수 있게 해주는 라이브러리입니다. Clojure 스타일로 React 컴포넌트를 작성할 수 있게 해줍니다.

  2. 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 주소는 다음과 같습니다:

  1. Ring (HTTP 서버): https://github.com/ring-clojure/ring

  2. Reitit (라우팅): https://github.com/metosin/reitit

  3. 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