클로저 프로그래밍:프레임 워크 및 기타 도구

이 모든 라이브러리는 클로저 프로그래밍 작업을 단순화하는 것을 목표로하지만 초보자를 혼란스럽게 할 수 있습니다. 때때로,그것은 모두 함께 넣어 특정 작업에 대한 최적의 솔루션을 찾는 방법을 이해하기 어렵다. 그래서,지금 나는 당신에게 클로저에서 프로그래밍을위한 나의 마음에 드는 도구를 보여주고 싶어.

  • 웹 서버 및 엔드포인트 작업
  • 웹 서버 및 데이터베이스와의 상호 작용
  • 서버 라우팅
  • 모듈형 아키텍처 지원

클로저 프로그래밍 세계로 여행을 시작합시다!

참고:자바 및 기타 유사한 언어에서 이동할 때 클로저에는 전통적인 프레임 워크가 없다는 것을 알아야합니다. 모든 것은 라이브러리와 그 컬렉션을 기반으로합니다. 이 언어는 더 유연하고 다목적 있습니다.

클로저 생태계는 서로 다른 복잡성의 라이브러리를 포함한다. 그 중 일부는 추가 기능 세트(예:시간 작업을위한 라이브러리)일뿐입니다. 한편 시스템 라이브러리는 전체 프레임워크를 만들기 위한 플랫폼을 제공합니다. 이러한 라이브러리를 통해 프로그래머는 응용 프로그램을 구성 요소 집합으로 표시하고 이들 간의 연결을 설명하는 등의 작업을 수행 할 수 있습니다. 라이브러리 자체는 종속성 그래프 생성을 보장합니다. 예를 들어 구성 요소를 함수와 같이 더 이해하기 쉬운 것으로 변환 할 수 있습니다.

목적: 웹 서버 및 엔드포인트

코드로 편리하게 작업: https://github.com/ring-clojure/ring

서버 추상화는 클로저 웹 스택의 핵심 요소입니다. 성공적인 앱 개발에 필수적인 웹 서버 및 엔드 포인트로 간단한 작업을 수행 할 수 있습니다. 이것은 수학적으로 정확한 유형 계층구조인,강력한 타입을 정의합니다. 결과적으로 웹 개발자는 구성 요소로 구성된 모듈 식 시스템을 구축하고 다양한 서버 및 응용 프로그램간에 이러한 구성 요소를 공유 할 수 있습니다.

반지는 어떻게 작동합니까?

따라서 링은 소위 웹 응용 프로그램 프레임 워크가 아닙니다.

링 사용 이유

클로저 프로그래밍의 지배적 인 웹 라이브러리로,링은 초보자를위한 좋은 선택이 될 것입니다. 우선,그것의 주요 기능은 웹 서버의 넓은 범위에 대 한 편리한 인터페이스를 제공 하는. 이 관점에서이 기술은 매우 유용하며 완벽하게 작동합니다.

또 다른 링 기능은 모듈 세트(‘미들웨어’)를 제공하는 것입니다. 그래서,그것은 당신이 서로 호환되는 다른 미리 작성된 라이브러리를 사용할 수 있습니다.

대부분의 클로저 프로그래머는 미들웨어를 사용할 수 있기 때문에 엔드포인트용 링을 선택합니다. 이 패키지에는 디버깅 심볼이 들어 있습니다. 웹 개발자는 새로운 미들웨어를 쉽게 작성하여 생태계에 통합 할 수 있습니다. 예를 들어,세 메릭/친구 라이브러리를 사용하여 권한 부여 프로세스를 완전히 관리하고 다른 전략(로그인 및 비밀번호에서 시작하여 오우트로 끝나는)등을 적용 할 수 있습니다. 링 미들웨어는 프로세스를 편리하게 설명하고 시작하는 데 도움이됩니다. 그것은 권한이없는 사용자에 대해 금지 된 모든 끝점을 닫습니다.

링 사용 경험은 다른 클로저 기술 작업에 중요합니다. 그것은 당신이 응용 프로그램을 이동하는 데 사용할 수있는 첫 번째 일이다.

키트

목적:서버 시작

코드: https://github.com/http-kit/http-kit

이 라이브러리는 그러한 문제를 표준화된 프로그래밍 인터페이스를 제공함으로써 해결합니다.

키트는 어떻게 작동합니까?

적절한 웹 서버 상호 작용을 구성하기위한 라이브러리입니다. 키트는 동시성이 높은 비동기 또는 동기 응용 프로그램에 적합합니다. 웹 소켓 및 긴 폴링/스트리밍에 관해서는 통합 된 기능을 사용하는 것이 좋습니다.

유연한 솔루션

동기화 및 비동기 시스템 모두에서 작업할 수 있는 기회를 제공합니다. 첫 번째 옵션은 간단하고 두 번째 옵션은 더 빠르게 작동합니다. 그래서,당신은 당신의 특정 목적에 따라 선택을 할 수 있습니다. 또한,당신은 링 라이브러리를 사용할 수 있습니다. 그것은 거의 부두 어댑터처럼 작동합니다.

편리한 사용

라이브러리는 웹 소켓에 대한 지원뿐만 아니라 장기 보유 웹 사이트 요청의 완벽한 처리를 보장합니다. 따라서 실시간 앱을 만드는 것이 더 쉬워집니다. 무엇보다,그것은 오픈 소스 프로젝트입니다. 이 라이브러리는 아파치 라이선스 버전 2.0 에 따라 깃허브에서 사용할 수 있습니다.

우수한 결과

키트는 높은 성능을 보여 주며 큰 부하에도 불구하고 빠르게 작동합니다. 동시에 각 연결에는 몇 킬로바이트의 메모리 만 필요합니다. 처음부터 작성된 클라이언트/서버는 0 종속성과 명확한 코드의~3 천개 라인 단일~90 킬로바이트 항아리로 사용할 수 있습니다.

많은 소프트웨어 개발자들은 키트를 클로저 프로그래밍의 기본 도구로 간주한다.

컴포저 및 양방향

목적:서버 라우팅

코드: https://github.com/juxt/bidi, https://github.com/weavejester/compojure

컴포저 및 양방향 모두 웹 앱에서 라우팅하는 기술입니다. 첫 번째 라이브러리는 커뮤니티 사이에서 매우 인기가 있으며 두 번째 라이브러리는 클로저 스크립트로 작성하기위한 편리한 솔루션으로 알려져 있습니다.

콤포쥬어와 바이디는 어떻게 작동하나요?

이 작은 라이브러리는 웹 서버에서 라우팅을 보장합니다. 따라서 소프트웨어 개발자는 여러 개의 개별 부분으로 구성된 응용 프로그램을 작성할 수 있습니다.

그들 사이의 차이점은 무엇입니까?

두 라이브러리는 동일한 기능을 수행합니다. 그러나,달리 Compojure,Bidi:

  • 를 모두 지원합 clj 에와 cljs
  • isomorphic 및 확장 가능

주요 차이점은 쌍방향 노선은 데이터 구조입니다. 여기에 매크로가 없습니다. 따라서 라이브러리는 편리한 양방향 접근 방식 및 기타 장점을 제공합니다. 일부 웹 개발자는 특정 핸들러의 각 경로를 보여주기 때문에 바이디를 선호합니다. 또한,구성 파일에서 경로를 읽고,생성하고 기능 및 성찰에 의해 그들을 변환 할 수있는 기회가있다. 처리 된 요청과 독립적으로 작동합니다. 따라서 개발자는 반드시 처리기가 아닌 것(예:키워드)을 일치시킬 수 있습니다.

라시니아

목적:클로저 프로그래밍의 그래프 구현

코드: https://github.com/walmartlabs/lacinia

이것은 수학적으로 정확한 유형 계층구조인,강력한 타입을 정의합니다.

라시 니아는 어떻게 작동합니까?

원래는 자바스크립트로 작성되었습니다. 라시 니아 이 구현에 대한 공식 참조입니다. 그것은 초기 사양과 유추에 기록됩니다. 이 프로그램은 자바 바이트코드 프로그램의 갯수를 카운트하고,스크립트의 메인 형식을 합계냅니다,그리고 확인되지 않은 실행 텍스트 파일을 찾습니다.. 이 라이브러리는 그러한 문제를 표준화된 프로그래밍 인터페이스를 제공함으로써 해결합니다.당신은 쉽게 더 풍부하고 복잡한 웹을 얻을 수 있습니다. 이것은 수학적으로 정확한 유형 계층구조인,강력한 타입을 정의합니다.이 라이브러리는 그러한 문제를 표준화된 프로그래밍 인터페이스를 제공함으로써 해결합니다. 그것은 안틀러 4 에 내장되어 있습니다. 라시 니아는 풍부한 효율적인 비동기 쿼리 실행에 도움이됩니다. 이것은 수학적으로 정확한 유형 계층구조인,강력한 타입을 정의합니다.

허니스큘 및 허그스큘

목적:성공적인 데이터베이스 상호 작용

코드: https://github.com/jkk/honeysql, https://github.com/layerware/hugsql

많은 웹 프로그래머가 더 편안하게 작업 할 수 있습니다. 쿼리 작성기에서는 쿼리 작성기를 사용하여 데이터베이스에 대한 안정적인 액세스를 제공합니다.

허니스클과 허그스클은 어떻게 작동하나요?

두 라이브러리 모두 클로저 프로그래밍을 수용합니다. 그래서,당신은 심지어 클로저 웹 응용 프로그램에서 데이터베이스 명령을 작성할 수 있습니다.

그들 사이의 차이점은 무엇입니까?응용 프로그램을 사용하여 응용 프로그램에 파일을 넣는 것으로 시작합니다. 이 프로그램은 자바 바이트코드 프로그램의 갯수를 카운트하고,스크립트의 메인 형식을 합계냅니다,그리고 확인되지 않은 실행 텍스트 파일을 찾습니다.. 이것은 수학적으로 정확한 유형 계층구조인,강력한 타입을 정의합니다. 허그스클은 적극적으로 유지되고 있습니다. 여러 데이터베이스 라이브러리를 지원하는 프로토콜 기반 어댑터가 있습니다.

:

  • 쿼리는 필요한 각 함수에 대해 하나의 쿼리로 직접 작성됩니다.이 예제에서는 다음과 같은 기능을 사용할 수 있습니다.
    1. 우리는 클로저에서해야 할 일을 설명합니다.

    (가져 오기 사용자 이메일 별 사용자 이름”알렉산드르 페트 로브”) ;->

    1. 이 작업을 수행하는 방법에 대해 설명합니다

    — :이름 가져 오기 사용자 이메일 별 사용자 이름:? :*

    사용자 _메일을 선택합니다.사용자 _메일에서 보낸 이메일은 어디 사용자 _메일입니다.따라서 클로저 코드를 다시 작성하지 않고 데이터를 직접 가져오는 논리를 변경할 수 있습니다. 데이터베이스 스키마가 변경되고 이전 쿼리가 필요한 구조를 반환하지 않는 경우에 유용합니다.

    또한,데이터베이스 자체는 특정 데이터베이스 작업을 위한 훨씬 더 강력한 도구이다. 그것은 클로저에서 매우 어려울 수있는”조인”,집계 및 창 기능으로 큰 복잡한 쿼리를 작성할 수 있습니다.이 예제에서는 다음과 같은 이점을 사용할 수 있습니다. 데이터베이스가 변경되지 않을 것이라고 확신하는 경우 중요합니다.

      많은 요청을 확인하고 구문 지원 및 특정 출력을 신중하게 테스트해야합니다.
  • 매개 변수를 쿼리에 전달할 수 있습니다. 그러나 경우에 따라 쿼리의 일부가 특정 조건에 의존해야 합니다. 이 작업을 완료 할 수 있지만 더 자주 클로저를 사용하여이 작업을 수행해야합니다.그러나,이 경우,그 이유는 다음과 같습니다. 당신은 맵으로 쿼리를 볼 수 있습니다.이 예제에서는 특정 구현에 대해 독립적이며 일반적으로 직접 쿼리를 피할 수 있습니다. 그들 대신에,그것은 특정한 것을 사용합니다.
  • 클로저 쪽에서 중간 요청을 저장하는 쿼리 작성기를 만들 수도 있습니다. 예를 들어,아이디 또는 다른 복잡한 논리로 사용자를 정의해야 하는 경우,허니큘 구조의 일부를 저장할 수 있습니다. 그것은 우리가 정확히 사용자가 아닌 상품 또는 기타 데이터가 필요하다는 것을 보여줍니다. 이”조각”은 필요한 쿼리로 대체 될 수 있습니다. 결과적으로 더 짧은 코드를 얻을 수 있습니다.
  • 클로저 프로그래머는 데이터를 검색하기 위한 코드와 이 데이터를 처리하기 위한 코드를 분리해야 한다. 분리는 리팩토링에 대한 추가 작업으로 이어집니다.

다니엘스/시스템

목적:모듈식 아키텍처 지원

코드: https://github.com/danielsz/system

클로저에서 고도로 모듈화된 애플리케이션 개발을 위한 유용한 기술. 이 프레임 워크는 모듈 간의 효과적인 상호 작용을 지원하며 다양한 클로저 생태계의 다른 부분과의 호환성이 우수합니다.

다니엘스/시스템은 어떻게 작동합니까?

이 라이브러리를 사용하면 웹 프로그래머가 구성 요소 기반 접근 방식을 사용할 수 있습니다. 따라서 모듈/구성 요소와 모듈 간의 연결을 사용하여 응용 프로그램을 빌드 할 수 있습니다. 각 구성 요소는 특수 객체입니다. 그것은 자신의 수명주기를 가지고 있습니다. 프로그래머는 시작 방법,시작해야할 사항 및 중지 방법에 대해 설명합니다.

예를 들어,우리의 응용 프로그램은 웹 서버와 데이터베이스로 구성되어 있습니다. 데이터베이스가 활성화되기 전에 웹 서버를 시작하는 것은 의미가 없습니다. 데이터베이스 구성 요소,서버 구성 요소 및 데이터베이스에 대한 서버의 종속성에 대해 설명합니다. 프로젝트를 시작할 때 우리는 웹 서버를 시작해야한다는 것을 나타냅니다. 라이브러리는 자동으로 데이터베이스를 활성화하려고합니다. 그런 다음 가능한 경우 서버를 시작하고 완료된 활성화된 데이터베이스 구성 요소를 웹 서버 구성 요소로 전송합니다. 그런 다음 필요한 경우 시스템이 중지됩니다.

다니엘즈/시스템 사용 이유

일반 클로저 기능 집합으로 전체 응용 프로그램에 대한 설명과 달리 프로젝트 설명을 구성 요소로 사용하면 한 구성 요소를 다른 구성 요소로 쉽게 교체 할 수 있습니다. 예를 들어 응용 프로그램을 테스트하거나 한 데이터베이스를 다른 데이터베이스로 바꾸거나 완전히 끌 때 현재 데이터로 바꿉니다.

함수의 경우 이전 함수를 새 함수로 변경합니다. 그들은 종종 버그를 일으키는 동일한 이름을 가질 것입니다. 시스템 구성 요소의 집합으로 구성(웹 서버,데이터베이스,그리고 훨씬 더)솔루션의 준비가 만든 세트입니다.

이제 클로저 사용 방법과 프로젝트에서 구현해야 할 기술 솔루션을 더 잘 이해할 수 있기를 바랍니다. 내 추가 기사는이 강력하고 아름다운 언어의 혜택뿐만 아니라 웹 응용 프로그램,서비스 및 아피스의 개발에 대한 몇 가지 팁을 포함 할 것이다. 당신이 클로저 프로그래밍 세계에 대한 자세한 내용을 보려면 그래서,신선한 코드 블로그에 가입.

답글 남기기

이메일 주소는 공개되지 않습니다.