Как сделать File I / O в Opa? - PullRequest
5 голосов
/ 05 июля 2011

После прочтения (почти) всей книги и изучения API
я все еще спрашиваю себя, как реализовать "традиционное" поведение веб-сервера с помощью opa.

Я понимаю (по крайней мере, я так считаю), что опа связывает внешние ресурсы, указанные в
скомпилируйте время в исполняемый файл, сделав его неизменным и постоянным.

Но что, если, скажем, я захочу изменить таблицу стилей приложения, не перекомпилировав ее?
В stdlib, кажется, есть несколько методов ( apidoc ), но они не охватывают к чему я привык из других языков программирования.

Возможное решение, о котором я мог подумать, - это использование внутренней базы данных,
но это выглядит немного излишним для чего-то простого, например, для традиционного файлового ввода-вывода.

Ответы [ 2 ]

6 голосов
/ 05 июля 2011

Редактировать: В этом блоге объясняется больше о работе с внешними ресурсами в 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 вам это понадобится гораздо меньше, чем с традиционными веб-языками), тогда взгляните на stdlib.io и,для расширенного использования - модуль BslFile с привязками к функциям Ocaml для манипулирования файлами.

2 голосов
/ 05 июля 2011

Я думаю, что этот модуль для вас: http://opalang.org/resources/doc/index.html#file.opa.html/!/value_stdlib.io

import stdlib.io
my_css = File.content("css/file.css")

Я не вижу способа записать файл, но я думаю, что если вам нужно написать, вы должны использовать БД.Но читать, я думаю, что это решение:)

...