我正在尝试使用重新框架在Clojure中构建一个自包含的结帐流程,其中传递了产品列表,显示了产品详细信息的摘要,必须输入个人信息(例如电子邮件和递送)地址),结果订单将传递到订单管理组件的端点。
有意选择体系结构,以便产品列表组件以与结帐组件相同的方式自包含(从持久性到UI)。
目前,由于在结账结束之前无需保留产品列表,因此我认为结账时的HTTP GET是最佳的集成方式(传递产品ID或更多产品数据)。但是,我正在努力使用重新框架实现这一目标:
re-frame template在id
中启动应用程序,如下所示:
index.html
...并定义环处理程序以返回&#34;着陆页&#34;的静态<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"}))
函数现在将从头开始初始化app-db&#34;&#34;使用默认数据或某些持久状态的后端调用;然后将UI组件添加到init()
。但是,我不能这样做,因为我尝试初始化的产品列表是瞬态的,并且是从外部提供的,例如作为GET调用的参数。我可以修改路线到
div#app
为了获得它们,但如何将(GET "/checkout" {qs :params} (resource-response "index.html" {:root "public"}))
中包含的产品ID传递给我的前端?到目前为止,我发现的所有可能性都不是特别优雅:
qs
中的内容,并将index.html
调用myproject.core.init()
替换为<{1}}。myproject.core.init(product-ids)
替换为/checkout
,并从/checkout/*
- 部分解析前端的ID。有没有更好的方法或可能改进其中一个解决方案的想法?
答案 0 :(得分:1)
您可以使用服务器上的index.html
构建主页,而不是使用单独的hiccup
文件。然后,将产品ID列表插入初始化调用中不会有问题。但是,这可能会对您应该衡量的性能产生影响。