在ClojureScript单页面应用程序中设置资源URL的正确方法是什么

时间:2017-09-30 00:41:43

标签: url clojure single-page-application clojurescript

我正在开发一个Clojure / ClojureScript SPA,它基于http-kit,compojure和后端的微小打嗝,主要是前端的试剂。项目由leiningen完成,基于手工失事的栗子模板。

当我尝试制作比#34; /"更复杂的网址时以下设置给我带来了麻烦:

  • 当产生初始打嗝来提供HTML并添加包含CSS和JS文件时,我按照示例添加它们作为相对网址,如

    (include-css "css/style.css")
    ;and
    (include-js "js/compiled/out/goog/base.js")
    (include-js "js/compiled/myproject.js")
    

    (注意开头没有斜线)

  • 在栗子模板中,我得到了默认值:cljsbuild的asset-path选项设置为"js/compiled/out"

当然,当我尝试使用除http://my-domain/something之外的http://my-domain/网址向同一页面添加路由并加载它时,该东西无法获得我的任何资产(尝试在例如/something/js/compiled/myproject.js下获取它们。

我能够通过使这些url相对于root(在每个URL之前加上斜杠)来解决明确包含的资产的问题。它给我带来了与cljsbuild注入src="js/compiled/out/cljs_deps.js"的脚本标签相同的问题,但是这个我通过制作:相对于root的资产路径来修复。

这一切似乎现在都正常工作,但事实上我不得不做一些令人头疼的事和令人惊讶的大量谷歌搜索才能最终解决这个问题让我觉得这不是默认方法。因此问题:

  1. 我是否通过将所有资产网址转换为相对根网址来做正确的事情? (请记住,我正在使用SPA)
  2. 如果是,为什么这不是一种默认方法,为什么我会随时随地查看相对于当前位置的网址(包括网络上的所有示例以及lein模板)?
  3. 更新 我应用程序的组件路线的相关部分如下所示:

    (defroutes home-routes
    
      (resources "/")
    
      (GET "/" _
           (friend/authenticated
            (html-response
             (app-page))))
      (GET "/something*" _
           (friend/authenticated
            (html-response
             (app-page)))))
    

0 个答案:

没有答案