Лучший способ сохранить данные javascript в localstorage

Я хочу иметь возможность создавать объекты заметок JavaScript и динамически удалять их с помощью панели навигации.

var sel = window.getSelection();
var range = sel.getRangeAt(0);
var editor = { "startContainer": range.startContainer, "startOffset": range.startOffset, "endContainer": range.endContainer, "endOffset": range.endOffset };

Затем, используя сообщение, я передал бы местоположение и сообщение функции для добавления заметок:

Notes(editor, message);
function Notes(location, note) {
  this.location = location;
  this.note = note;
}

Я пытаюсь понять, как на самом деле сохранять данные локально.

function addNote() {
  // if (tyepof(Storage) !== "undefined"){
  //   if (localStorage.notes){
  //     localStorage.notes
  //   } else {
  //     localStorage.notes = 
  //   }

  localStorage.setItem()
}

Подходит ли localStorage? Я знаю, что sessionStorage хранит только сеанс.

На основе моего проекта codepen codepen.io/Zwienclaw/pen/wxGKEQ

Zaren Wienclaw 23.08.2018 21:15

Вы можете сохранить данные заметки в массиве объектов, а затем использовать localStorage для извлечения данных и перебирать каждый объект, чтобы создать заметку для каждого из них. Так что да, я бы сказал, что localStorage может быть подходящим вариантом.

justDan 23.08.2018 21:16

Возможно, у вас есть ссылки на ресурсы с примерами этого?

Zaren Wienclaw 23.08.2018 21:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
7 321
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы пытаетесь сохранить файлы .txt локально на компьютер? Я не верю, что в JavaScript есть такая функция, потому что это была бы огромная дыра в безопасности. Насколько я понимаю, вы можете создавать файлы cookie на локальном компьютере, но это все.

Если вам нужно экспортировать файлы, вы всегда можете использовать ASP.NET/PHP для создания файлов на сервере, тогда пользователь может щелкнуть ссылку, которая предложит вам сохранить динамически созданный файл.

На основании комментария ниже вы должны создать массив объектов.

var array = [];
array[array.length] = {name: 'NAME CONTENT', other: 'Other content', number: 1}
array[array.length] = {name: 'NAME CONTENT 2', other: 'Other content 2', number: 1}

Затем вы можете получить функцию для работы с вашим объектом, выполнив что-то вроде этого

PrintInfo(array[i]);

function PrintInfo(aSingleObject){
    console.info(aSingleObject.name);
    console.info(aSingleObject.other);
    console.info(aSingleObject.number);
}

Чтобы удалить объекты из массива с помощью команды splice

var array = [2, 5, 9];
console.info(array)
var index = array.indexOf(5);
if (index > -1) {
  array.splice(index, 1);
}
// array = [2, 9]
console.info(array);

Я пытаюсь создать локальные файлы для пользователя, возможно, хранящиеся в кеше.

Zaren Wienclaw 23.08.2018 21:34

У вас есть много способов сделать это. На самом деле так много, что невозможно объяснить их все. Это зависит от ваших реальных намерений. Если вам просто нужны заметки, которые вы можете потерять в корме, возможно, вам подойдет localStorage.

Но для большинства приложений вы обычно отправляете данные на сервер, который будет отвечать за их хранение. На сервере данные могут храниться в базе данных, в локальных файлах, есть много способов. Серверы могут быть Node.js (если вы хотите придерживаться только js) или любым другим языком, на котором есть возможности сервера. Практически все. Чаще всего используются Node, PHP, Python, Java и другие. Вы должны подготовить определенный URL-адрес для получения сообщения с данными, которые необходимо сохранить, а затем заставить клиента отправить с ним запрос ajax на этот URL-адрес. в этом вопросе вы можете получить несколько примеров того, как начать это делать:

Базовая отправка / получение Ajax с помощью node.js

часть сохранения сервера зависит от вас :)

редактировать

вот небольшой учебник по localStorage

https://www.taniarascia.com/how-to-use-local-storage-with-javascript/

просто помните, что каждый раз, когда вы перезагружаете страницу, вы теряете все. Чтобы сохранить данные, вам необходимо отправить их на сервер.

Другое дело: для этого не нужно покупать выделенный сервер. Вы можете реализовать сервер на своем собственном компьютере. Это относительно простая задача. Не все так сложно. Я советую вам взглянуть на вопрос SO выше о базовой отправке / получении ajax, прежде чем вы исключите это.

Я надеюсь временно сохранить объекты заметок с помощью localStorage. Поскольку это всего лишь небольшой независимый проект, я пока не хочу иметь выделенный сервер. Есть ли способ сохранить объект в localStorage?

Zaren Wienclaw 23.08.2018 21:37

Спасибо! Я посмотрю по предоставленным ссылкам!

Zaren Wienclaw 23.08.2018 21:47
Ответ принят как подходящий

Вот быстрый способ сгенерировать несколько элементов из вызова localStorage.getItem(), который, возможно, также может помочь вам здесь вместе с ответом Нельсона. Нажмите кнопку в скрипте, и вы увидите, как код захватывает объекты localStorage и использует их для создания простого <li>'s.

Рабочий пример: http://jsfiddle.net/kfrvdnux/

Пример кода:

HTML

<button id='save'>Click the save button...</button>
<div id='content'></div>

JS

var content = document.getElementById('content'),
    save    = document.getElementById('save'),
    output  = '<ul>',
    animals = [{
      name: 'bob',
      type: 'dog'
    }, {
      name: 'fred',
      type: 'lizard'
    }];

// set on load for testing
localStorage.setItem('animals', JSON.stringify(animals));

// grab localStorage data on click and create a list
save.addEventListener('click', function() {
    var ls = JSON.parse(localStorage.getItem('animals'));  
    for (var i = 0; i < ls.length; i++) {
      output += '<li>' + ls[i].name + ', ' + ls[i].type + '</li>';
    }

  output += '</ul>';
  content.innerHTML = output;
});

Спасибо! Это действительно помогает!

Zaren Wienclaw 24.08.2018 17:03

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