Estoy trabajando en mi propio proyecto en el que quiero crear una aplicación, que se ejecuta en Android e iOS. Decido usar HTML, CSS y JavaScript para crear una PWA. La aplicación debe permitir al usuario administrar recetas para tarta incl. Cálculo de costo. Mi problema es que quiero guardar las recetas/ingredientes en forma de tabla. Los datos deben almacenarse localmente de forma permanente en el dispositivo. Con el método "almacenamiento local" los datos solo se guardan temporalmente. No quiero alojar un servidor web/base de datos. Los datos no deben perderse cuando el usuario elimina el caché local del navegador. ¿Es posible almacenar datos generales con java script, por ejemplo, en un archivo de texto, fuera del caché del navegador?
Es posible. pero no es sencillo, el usuario debe hacerlo manualmente. Puede generar su base de datos como un archivo descargable, por ejemplo. .txt o .csv , y proporcione el enlace de descarga para el usuario o simplemente descárguelo automáticamente. Aquí hay un ejemplo.
function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } // Start file download. document.getElementById("dwn-btn").addEventListener("click", function(){ // Start the download of yournewfile.txt file with the content from the text area var text = document.getElementById("text-val").value; var filename = "yournewfile.txt"; download(filename, text); }, false);para cargar los datos, puede crear un botón de importación que reciba los datos y complete la tabla. así es como puede leer datos de archivos
function readImage(file) { // Check if the file is text. if (file.type && !file.type.startsWith('text/')) { console.log('File is not an textfile.', file.type, file); return; } const reader = new FileReader(); reader.addEventListener('load', (event) => { img.src = event.target.result; }); reader.readAsDataURL(file); }Recomiendo usar este enfoque con indexedDb o almacenamiento local.