Для строки и массива у меня есть «старое» состояние и «новое» состояние (после некоторых изменений).
Мне нужно часто отправлять на сервер (с AJAX / XMLHttpRequest
) изменения, если это возможно, эффективным способом (не отправляйте повторно 200 КБ данных, если только один элемент в массиве был изменен / был удален / был перемещен). Пример:
var oldstate1 = 'hello how are you? very good and you? thanks for asking! this text will be removed.';
var newstate1 = 'hello how are you? very good and you? new text here. thanks for asking!';
var oldstate2 = [[1732, "item1"], [1732, "will be deleted"], [23, "will be moved"], [23, "hello"]];
var newstate2 = [[23, "will be moved"], [1732, "item1"], [23, "hello"], [126, "new item"]];
Конечно, я мог бы вручную кодировать протокол между клиентом и сервером с такими событиями, как delete
, insert
, move
, update
и т. Д. c. и отправьте эти события с AJAX, и сервер соответствующим образом обновит свою базу данных. Но это довольно утомительно, чтобы делать правильно.
Вопрос: есть ли более умный способ кодировать изменения только между oldstate
и newstate
большой строки или массива с Javascript? таким образом, чтобы его можно было легко декодировать в бэкэнде, используя Python.
Нечто подобное алгоритму diff/patch
для строк или массивов, понимаемое между JS (на стороне клиента) и Python (back-end).
Примечание: