请在2024年Clojure状态调查!分享您的想法。

欢迎!请参阅关于页面以了解更多关于此工作方式的信息。

0
ClojureScript

$ cat deps.edn
{:deps {org.clojure/clojure {:mvn/version "1.9.0-RC2"}
        org.clojure/clojurescript {:mvn/version "1.9.946"}}
$ touch hello.xml
$ clojure -m cljs.browser.repl &
$ curl localhost:9000/hello.xml
<html><body><h2>页面未找到</h2>未在此服务器上找到页面/hello.xml。</body></html>


在cljs.repl.browser/ext->mime-type中添加条目表面上解决了这个问题。

1) 目前使用的MIME类型识别非常简单,并且对于大多数文件不返回正确的MIME类型。相反,这应该委托给宿主


(ns cljs.repl.browser
  (:import [java.nio.file Files Paths]))

(defn get-content-type [path]
  (Files/probeContentType (Paths/get path (into-array String []))))


2) 由于文件和套接字都是字节的高级抽象,cljs.repl.server/send-and-close应该对文件编码无感知,并且只需发送文件中的任何内容。目前这是通过cljs.repl.browser/mime-type->encoding处理的。

我将在明天准备好补丁。

9 个答案

0

评论由:yegortimoshenko

我不同意这是一个小的缺陷。目前大多数文件都无法由内置的HTTP服务器提供,这意味着无法开发包含HTML/CSS/JS之外文件的程序。

0

评论由:dnolen

内置的Web服务器不是ClojureScript的重要组件。它存在只是为了帮助教程。

0
by

评论由:yegortimoshenko

我非常喜欢它,比figwheel简单,除了这个故障之外,似乎没有其他功能不完整。而且,新clojure工具出现时,这是首先想到的在浏览器中的REPL。

此外,这个补丁的先前版本没有正确计算Content-Length,改变了send-and-close函数的arity,且不适用于favicons。我附上一个新补丁,这次应该是完整且不会引起任何破坏的。

新补丁称为0001-CLJS-2433-use-JVM-to-deduce-MIME-type-send-files-via.patch,在上面的附件中。链接:https://dev.clojure.org/jira/secure/attachment/17586/0001-CLJS-2433-use-JVM-to-deduce-MIME-type-send-files-via.patch

以下是GitHub链接(用于代码审查/解释):https://github.com/hackberryhike/clojurescript/commit/ea8336da3a779cb5982875d243dc6d40abd0d3ba

0
by

评论由:yegortimoshenko

此外,如果您对这段补丁有不满之处,请告诉我,我会立即修复它。我非常希望将其合并。

0
by

评论者:ncg

请允许我为这一点进行辩护。尽管有些边缘,我花了相当多的时间
今天找出为什么cljs.main -s 不会为我提供我的WebAssembly文件,而其他一切工作得很好。
尤其是在新clj工具提供的优秀体验中,必须为一次性实验使用单独
的服务器,这有点恼人。

0
by

评论由:dnolen

我们可以得到一个重新生成后的补丁吗?

0
by

评论由:yegortimoshenko

当然,将在周一完成。

0

评论者:ncg

感谢。如果我可以提供帮助,请告诉我。

0
参考:[https://clojure.atlassian.net/browse/CLJS-2433](https://clojure.atlassian.net/browse/CLJS-2433)(由 yegortimoshenko 报告)
...