Я исследовал пакет Node fs , когда Andres предоставил отличную отправную точку для этого в браузере. Эти два похожих ответа StackOverflow ( 1 , 2 ) побудили меня:
Мне все еще интересно выяснить, как использовать пакет Node fs, но большое спасибо Андресу за то, что он направил меня в правильном направлении.
const DOMOptions = document.querySelectorAll('#country-select option');
const downloadBtn = document.getElementById("link-download");
const option = {};
let textFileURL = null;
const countriesList = Array.from(DOMOptions).map(DOMOption => {
option['data-code'] = DOMOption.dataset.code
option['name'] = DOMOption.text
option['value'] = DOMOption.value
return option;
})
const makeTextFile = (text) => {
var data = new Blob([JSON.stringify(text, null, 2)], {
type: 'application/json'
});
// If we are replacing a previously generated file we need to
// manually revoke the object URL to avoid memory leaks.
if (textFileURL !== null) {
window.URL.revokeObjectURL(textFileURL);
}
// creates a URL you can use as a href or src
textFileURL = window.URL.createObjectURL(data);
downloadBtn.href = `${textFileURL}`;
//HTML5 "download" attribute enables download
downloadBtn.download = 'countries.json';
return option;
};
makeTextFile(countriesList)
<a id="link-download">download countries</a>
<select id="country-select">
<option diabled value="">Select a Country</option>
<option data-code="US" value="USA">United States</option>
<option data-code="AU" value="Australia">Australia</option>
<option data-code="CA" value="Canada">Canada</option>
<option data-code="GB" value="United Kingdom">United Kingdom</option>
</select>