Создание файла.eml из динамических веб-компонентов (React/Vue/Angular) [строка скомпилированного html]

Название может вводить в заблуждение, поэтому позвольте мне рассказать немного подробнее:

Моя цель состоит в том, чтобы иметь интерфейсную среду /(библиотеку), такую ​​как React, Vue или Angular, которая имеет обычные элементы пользовательского интерфейса, такие как пользователь, вводящий данные или загружающий изображение на сервер.

Затем я хочу, чтобы веб-приложение создавало электронную почту в формате HTML. Итак, я думаю, что лучший способ - это создать текстовый файл HTML, но он будет иметь формат .eml вместо.txt, так что легко открывать в почтовых клиентах и ​​отправлять электронную почту.

Мой вопрос: - Как я могу создать строку динамического HTML, которая затем сохраняется в виде файла для загрузки пользователем. динамическое значение, иногда это может быть только 1 или 2 элемента, иногда это может быть 15, но дело в том, что переменная изменится, и цикл будет запущен для столько объектов, сколько существует, так что будет создано соответствующее количество HTML,

Я спрашиваю, потому что мы все знаем, как отобразить view в React / others, но как мы можем получить программный псевдо-вид в логическом коде. То есть, как мы можем получить строковое представление результатов представления итогового HTML, если это имеет смысл. А затем создать .eml файл, содержащий этот HTML, чтобы пользователь мог загрузить.

Возможно ли это даже в операциях современных популярных фреймворков?

====

РЕДАКТИРОВАТЬ

Просто идея, которую я получил из исследований, для создания файла, кажется, Blob может быть лучше.

var file = new Blob([html_string], {type: 'text/plain'})

Некоторые, для React, некоторый код будет выглядеть следующим образом (благодаря ответу Криса на этот SO вопрос).

class MyApp extends React.Component {
_downloadTxtFile = () => {
    var element = document.createElement("a");
    var file = new Blob([document.getElementById('myInput').value], {type: 'text/plain'});
    element.href = URL.createObjectURL(file);
    element.download = "myFile.txt";
    element.click();
}

render() {
    return (
    <div>
        <input id="myInput" />
        <button onClick={this._downloadTxtFile}>Download txt</button>
    </div>
    );
}
}

ReactDOM.render(<MyApp />, document.getElementById("myApp"));

Что оставляет вопрос о том, как создать строку HTML. Может быть шаблонные литералы ES6 со встроенными выражениями? Но это не совсем JSX, так что я не знаю, как бросить for Цикл там. Я продолжу исследование или, если кто-то знает, как все это бросить.

0 ответов

Другие вопросы по тегам