2017-11-01 13 views
1

Clojure에서 리 프레임을 사용하여 자체 체크 아웃 프로세스를 구현하려고합니다. 제품 목록이 전달되고 제품 세부 정보의 요약이 표시되며, 개인 정보 (예 : 이메일 및 배달 주소)를 입력해야하며 결과 주문은 주문 관리 구성 요소의 끝점으로 전달됩니다.HTTP GET을 통해 전달 된 상태로 리 프레임 애플리케이션 초기화하기

구조는 제품 목록 구성 요소가 체크 아웃 구성 요소 (지속성에서 UI까지)와 동일한 방식으로 포함되도록 의도적으로 선택되었습니다.

현재 체크 아웃이 완료되기 전에 제품 목록을 유지할 필요가 없기 때문에 체크 아웃에 대한 HTTP GET이 통합 (제품 ID 또는 더 많은 제품 데이터 전달)의 가장 좋은 방법이라고 가정합니다.

re-frame templateindex.html과 같이에서 응용 프로그램 시작 : 그러나, 나는 다시 프레임을 사용하는 것을 달성하기 위해 고군분투

<div id="app"></div> 
<script src="js/compiled/app.js"></script> 
<script>myproject.core.init()</script> 

을 ... 그리고 대한 정적 index.html를 반환하는 링 핸들러를 정의 "방문 페이지"일반적으로

(GET "/checkout" [] (resource-response "index.html" {:root "public"})) 

, 기본적 데이터 또는 지속 상태에 대한 몇 가지 백엔드 호출을 "처음부터"응용 프로그램-DB를 초기화 할 것이다 init() 기능; UI 구성 요소를 div#app에 추가하십시오. 그러나 내가 초기화하려고하는 제품 목록이 일시적이며 외부에서 제공되기 때문에 그렇게 할 수 없습니다. GET 호출을 매개 변수로 사용합니다. 내가 그들을 얻기 위해

(GET "/checkout" {qs :params} (resource-response "index.html" {:root "public"})) 

에 대한 경로를 수정할 수 있지만 내가 어떻게 내 프런트 엔드에 qs에 포함 된 제품 ID를 전달합니까?

  1. 읽기 및 myproject.core.init(product-ids) 같은 것을 대체 myproject.core.init()에 호출 index.html에서 내용을 반환 : 내가 지금까지 발견 모든 가능성은 particulary 우아하지 않는 것.
  2. 경로 /checkout/checkout/*으로 바꾸고 프런트 엔드의 ID를 * -part에서 구문 분석하십시오.
  3. 어쨌든 제품 ID를 유지하고 세션과 연결하십시오. app-db를 초기화 할 때 서버에서 검색하십시오.

해결책 아이디어 중 하나를 개선 할 수있는 더 좋은 방법이나 가능성이 있습니까?

답변

1

index.html 파일을 별도로 사용하는 대신 서버에서 hiccup을 사용하여 기본 페이지를 만들 수 있습니다. 그런 다음 초기화 호출에 제품 ID 목록을 삽입하는 것은 문제가되지 않습니다. 그러나 이것은 성능에 영향을 미칠 수 있습니다.

+0

이것을 올바른 해결책이라고 생각 하시겠습니까? 아니면 제가 잘못 추적하고 있습니까? 성능에 미치는 영향에 관해서 : 어떻게 동적으로 딸꾹질에서 정적 HTML을 생성 할 수 있습니까? (빌드 중), 매개 변수화되지 않은 호출? 물론 – notan3xit

+1

; 딸꾹질 결과를 변수에 저장하십시오. 또한 매개 변수에 대해 일부 캐싱 전략이 작동하는지 여부를 확인할 수 있습니다. – Svante

+0

첫 번째 질문에 관해서 : 누가 말해야합니까? – Svante