在阅读(几乎)整本电子书并查看 API 之后,
我仍然在问自己如何使用 opa 实现“传统”Web 服务器行为。
我理解(至少我相信)opa 将
编译时指定的外部资源链接到可执行文件中,使它们不可变和永久。
但是,如果我想在不重新编译的情况下更改应用程序的样式表怎么办?stdlib ( apidoc
)
中似乎有一些方法,但它们并没有涵盖我从其他编程语言中习惯的方法。
我能想到的一个可能的解决方案是使用内部数据库,
但对于像传统文件 I/O 这样简单的东西来说,这看起来有点矫枉过正。
在阅读(几乎)整本电子书并查看 API 之后,
我仍然在问自己如何使用 opa 实现“传统”Web 服务器行为。
我理解(至少我相信)opa 将
编译时指定的外部资源链接到可执行文件中,使它们不可变和永久。
但是,如果我想在不重新编译的情况下更改应用程序的样式表怎么办?stdlib ( apidoc
)
中似乎有一些方法,但它们并没有涵盖我从其他编程语言中习惯的方法。
我能想到的一个可能的解决方案是使用内部数据库,
但对于像传统文件 I/O 这样简单的东西来说,这看起来有点矫枉过正。
编辑:这篇博文解释了更多关于在 Opa 中处理外部资源的信息。
长话短说:你很少会在 Opa 中使用外部文件。
让我试着分解一下。Opa 确实会嵌入资源。但是对于开发模式,您确实只是希望能够调整它们(主要是 CSS)并立即看到更改。如果您在非发布模式下编译程序,那么它将支持这种操作(尝试--help
,下面是摘录)
Debugging Resources : dynamic edition:
[...]
--debug-editable-css
Export the CSS files embedded in the server to the file
system, so that they can be viewed and edited during
execution of the application
对于许多其他可编辑和更改的资源,人们确实会使用数据库。
如果您真的需要处理文件(再次重申:使用 Opa,您将比使用传统的 Web 语言需要它少得多),然后查看stdlib.io
并为高级用途,BslFile
使用绑定到 Ocaml 函数以进行文件操作的模块。
我认为这个模块适合你: http://opalang.org/resources/doc/index.html#file.opa.html/! /value_stdlib.io
import stdlib.io
my_css = File.content("css/file.css")
我没有看到一些写入文件的方法,但我认为如果你需要写入,你应该使用 db. 但是阅读我认为这是解决方案:)