Elm:
Створення текстового файлу
Як це зробити:
Elm не має прямого способу запису файлів на диск через браузер. Однак, ви можете генерувати файл та пропонувати завантажити його користувачу. Приклад коду:
module Main exposing (main)
import Browser
import Html exposing (Html, button, div, text)
import Html.Attributes exposing (style)
import Html.Events exposing (onClick)
import File.Download
main =
Browser.sandbox { init = init, update = update, view = view }
type alias Model = String
init : Model
init =
"Текст для запису у файл."
type Msg
= Download
update : Msg -> Model -> Model
update _ model =
model
view : Model -> Html Msg
view model =
div []
[ button [ onClick Download ] [ text "Завантажити файл" ] ]
subscriptions : Model -> Sub Msg
subscriptions _ =
Sub.none
port module Ports exposing (..)
port download : String -> Cmd msg
sendTextToFile : String -> Cmd msg
sendTextToFile textData =
port download textData
-- Підключення JS для завантаження файлу
-- Погляньте на секцію "See Also" для посилання на інструкцію.
update msg model =
case msg of
Download ->
( model, sendTextToFile model )
Ваш JS-файл, який взаємодіє з Elm через порти:
app.ports.download.subscribe(function (data) {
var file = new Blob([data], {type: 'text/plain'});
var anchor = document.createElement('a');
anchor.href = URL.createObjectURL(file);
anchor.download = 'data.txt';
document.body.appendChild(anchor);
anchor.click();
document.body.removeChild(anchor);
});
Поглиблений огляд
Elm, з огляду на шахрайські дії, уникає прямого запису на диск. Історично, цю можливість надавали низькорівневі мови. Але сучасні інтерактивні веб-додатки використовують джейсон, бази даних та API для обміну та зберігання даних. Як альтернативу, можна використати серверний код (Node.js, Python, тощо) для запису файлів.