The problem
Need convenient browser cookie operations
The solution
const cookies = {
set(name, value, days = 7) {
const expires = new Date();
expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000));
document.cookie = `${name}=${encodeURIComponent(value)};expires=${expires.toUTCString()};path=/`;
},
get(name) {
const nameEQ = name + "=";
const ca = document.cookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) === ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) === 0) {
return decodeURIComponent(c.substring(nameEQ.length, c.length));
}
}
return null;
},
remove(name) {
this.set(name, '', -1);
},
getAll() {
const cookies = {};
const ca = document.cookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i].trim();
const [name, ...valueParts] = c.split('=');
cookies[name] = decodeURIComponent(valueParts.join('='));
}
return cookies;
}
};Put it to work
// Set cookie, expires in 7 days
cookies.set('username', 'JohnDoe', 7);
// Get cookie
const username = cookies.get('username');
console.log(username); // "JohnDoe"
// Get all cookies
const allCookies = cookies.getAll();
console.log(allCookies);
// Remove cookie
cookies.remove('username');