предисловие
Всем привет, я Линь Сансинь,Простыми словами расскажите о самых сложных пунктах знаниймой девиз,Основа является предпосылкой передовыхЭто мое первоначальное намерение.Сегодня я дам вам чат и расскажу о том, как его использовать.localStorage、sessionStorage
, чтобы быть более стандартизированным, высоким и привлекательным.
полезность
При нормальном развитииlocalStorage、sessionStorage
Применений много, и они играют очень важную роль в нашем развитии:
- 1. После входа в систему
token
место хранения - 2. Хранение некоторой пользовательской информации, такой как
昵称、头像、简介
- 3. Хранение общих параметров некоторых проектов, таких как
某个id、某个参数params
- 4. Постоянство управления состоянием проекта, например
vuex的持久化、redux的持久化
- 5. Общее хранилище состояния переключения проекта, например
主题颜色、icon风格、语言标识
- 6 и т. д.,
общего пользования
Затем, я считаю, что мы все используем это так (возьмитеlocalStorage
пример)
1. Основные переменные
// 当我们存基本变量时
localStorage.setItem('基本变量', '这是一个基本变量')
// 当我们取值时
localStorage.getItem('基本变量')
// 当我们删除时
localStorage.removeItem('基本变量')
2. Ссылочные переменные
// 当我们存引用变量时
localStorage.setItem('引用变量', JSON.stringify(data))
// 当我们取值时
const data = JSON.parse(localStorage.getItem('引用变量'))
// 当我们删除时
localStorage.removeItem('引用变量')
3. Очистить
localStorage.clear()
В чем проблема?
1. Название слишком простое
- 1. Например, когда мы храним информацию о пользователе, мы будем использовать
user
хранить как ключ - 2. Используйте при сохранении тем
theme
хранить как ключ - 3. Используйте при хранении токенов
token
хранить как ключ
На самом деле это очень проблематично.Все мы знаем, что два проекта одного происхождения, ихlocalStorage
совместимы.
Приведу пример, например, у меня сейчас два проекта, они в одном ориджинеhttps://www.sunshine.com
Далее оба проекта нужно перейти вlocalStorage
хранить ключ какname
значение, то это приведет кname
Явление замены друг друга, т.互相污染现象
:
2. Своевременность
мы все знаемlocalStorage、sessionStorage
Жизненные циклы этих двух
- localStorage: сохраняется, если не очищается вручную
- sessionStorage: конец жизни при закрытии текущей вкладки или закрытии браузера
На самом деле, в обычном использовании нет проблем, но очень важно добавить конкретную своевременность в некоторые назначенные кэши! Например, один день:
- Бэкенд: «Брат, я дам тебе токен, как только ты войдешь в систему»
- Фронтенд: "Хорошо, тогда вы должны судить, кстати, срок действия токена истек?"
- Бэк-энд: «Нет, поместите это на свой интерфейс, чтобы определить дату истечения срока действия»
- Фронт-энд: "Хорошо..."
В настоящее время, поскольку нам нужно судить об истечении срока действия на переднем конце, мы должны датьtoken
установить своевременность или1天
,или7天
3. Секретность
На самом деле это легко понять, вы вдумайтесь, когда мы кладем то, что хотим кэшировать, естьlocalStorage、sessionStorage
В процессе разработки это действительно полезно для нашего развития.Когда мы хотим увидеть это, это ясно с первого взгляда.НажмитеApplication
ты можешь видеть.
Однако, как только продукт находится в сети, пользователи также могут видеть вещи в кеше, и мы должны думать: некоторые вещи могут видеть пользователи, а некоторые вещи я не хочу, чтобы вы видели.
или мы делаем状态管理持久化
Когда данные должны существовать в первую очередьlocalStorage
В это время необходимо зашифровать кеш.
решение
1. Соглашение об именах
Моё личное мнение такое项目名 + 当前环境 + 项目版本 + 缓存key
, если у вас есть другие правила, вы можете сообщить Линь Сансиню в области комментариев, и пусть Лин Сансинь выучит
2, время истечения срока действия
Идея: установить кешkey
когда будетvalue
Упакованный в объект, объект имеет соответствующие时效时段
, в следующий раз, когда вы захотите получить кэшированное значение, оцените, есть ли тайм-аут, и получите его без тайм-аута.value
, удалить кеш после тайм-аута
3. Криптографическое шифрование
Шифрование простое, используйте напрямуюcrypto-js
Для шифрования данных используйтеencrypt、decrypyt
провести加密、解密
упражняться
На самом деле, это относительно просто на практике, это не что иное, как четыре шага.
- 1. Обсудите с командой
key
формат - 2. Обсудите с командой
expire
длина - 3. Обсудить с командой какую библиотеку использовать для шифрования кеша (личная рекомендация
crypto-js
) - 4. Реализация кода (не сложно, писать не буду)
Эпилог
Некоторые люди могут подумать, что в этом нет необходимости, но на самом деле необходимо быть строгим к себе, чтобы гарантировать, что каждая компания, в которую вы пойдете, сможет лучше справиться с проблемой обратной совместимости.
Если вы считаете, что эта статья вам немного поможет, поставьте лайк и поддержите Линь Сансиня, ха-ха.
Если вы хотите изучать интерфейс или рыбачить вместе, вы можете добавить меня, присоединиться к моей группе по изучению рыбы, нажмите здесь. --->коснуться точки кипения рыбы
Если у вас есть другие цели, не добавляйте меня, я не хочу с вами дружить, я просто хочу освоить фронтенд, я не хочу заниматься некоторыми вещами! ! !