0
マイフォルダ構造は、私が リングを使用してHTMLページへのパスとのGradle
(ns com.lapots.platform.web.core
(:use ring.adapter.jetty)
(:use com.lapots.platform.web.router.core)
(:require [ring.middleware.reload :refer [wrap-reload]])
(:import [org.eclipse.jetty.server.handler StatisticsHandler])
(:gen-class))
(def a-minute 60000)
(defn conf
[server]
(let [stats-handler (StatisticsHandler.)
default-handler (.getHandler server)]
(.setHandler stats-handler default-handler)
(.setHandler server stats-handler)
(.setStopTimeout server a-minute)
(.setStopAtShutdown server true)))
(def app
(-> routes
wrap-reload))
(defn -main [& args]
(run-jetty app {:port 3000 :configurator conf :join? false}))
router/core.clj
桟橋
main
関数は、このコード
(ns com.lapots.platform.web.router.core
(:require [compojure.core :refer [defroutes GET ANY]]
[liberator.core :refer [defresource resource]]
[ring.util.response :as resp]))
(defresource rest-handler
:handle-ok "rest response"
:etag "fixed-etag"
:available-media-types ["text/html"])
(defn wrapped-file-response [request]
(println "Attempt to read index.html")
(resp/resource-response "index.html" {:root "resources"}))
(defroutes routes
(GET "/" request rest-handler)
(GET "/home" request wrapped-file-response))
を持っている必要があり、私の
core.clj
でこの
src
main
clojure
.../core.clj
webapp
WEB-INF
index.html
のように見えます
私はjetty
のサーバを典型的に開始しますgradle
タスク
task startServer(dependsOn: classes, type: JavaExec) {
main = 'com.lapots.platform.web.core'
classpath = sourceSets.main.runtimeClasspath
}
しかし、index.html
ファイルを解決することができません。 (/
は正しいrest response
メッセージを返します)。
html
ページへのパスを指定する方法routes
の場合は?
はい私はデフォルトを使用していました。うわー、それは動作します。しかし、 'clojurescript'に依存しない' web'ベースのアプリケーションのベストプラクティスは何ですか? – lapots
通常は、あなたのHTTPサーバが提供する資産をクラスパスのサブディレクトリ(通常は '$ {rootDir}/src/main/resources/public')に置くことです。 HTTP経由では使用できません。 –