<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های امیر محمد نوری زاده</title><link>https://virgool.ir/feed/@amirmohamadnorizadeh</link><description>Programmer&#xA;💻☕</description><language>fa</language><pubDate>2026-11-12 05:55:31</pubDate><image><url>https://files.virgool.ir/upload/users/1721034/avatar/bj5aaN.jpg</url><title>امیر محمد نوری زاده</title><link>https://virgool.ir/@amirmohamadnorizadeh</link></image><item><title>Local Storage (JavaScript) — راهنمای کامل و کاربردی</title><link>https://virgool.ir/@amirmohamadnorizadeh/local-storage-javascript-—-راهنمای-کامل-و-کاربردی-vvyu9hvwo71n</link><description>Local Storage چیست؟Local Storage یکی از قابلیتهای Web Storage API در مرورگرهاست که به شما اجازه میدهد دادهها را بهصورت دائمی و بدون تاریخ انقضا در مرورگر ذخیره کنید.بر خلاف کوکیها، دادههای Local Storage به سرور ارسال نمیشوند و حجم بیشتری (حدود ۵ مگابایت) را پشتیبانی میکنند.ویژگیهای اصلی Local Storage✔ دائمی بودن دادههابا بستن مرورگر، ریفرش کردن صفحه یا حتی خاموش کردن سیستم دادهها حذف نمیشوند.✔ حجم بیشتر نسبت به کوکیکوکیها حدود 4KB ظرفیت دارند، اما Local Storage معمولاً تا 5MB فضا میدهد.✔ عدم ارسال به سروردر هر درخواست HTTP دادهها ارسال نمیشوند، بنابراین امنتر و سریعتر هستند.✔ استفاده بسیار راحتتمام دادهها به صورت key / value ذخیره میشوند و فقط متن (string) ذخیره میشود.• روشهای اصلی کار با Local Storage1. ذخیره دادهlocalStorage.setItem(&#34;username&#34;, &#34;amir&#34;);2. خواندن دادهlet user = localStorage.getItem(&#34;username&#34;);console.log(user);3. حذف یک دادهlocalStorage.removeItem(&#34;username&#34;);4. پاک کردن تمام دادههاlocalStorage.clear();• کاربردهای مهم و واقعی Local Storage1. ذخیره وضعیت کاربری2. ذخیره اطلاعات فرم3. ساخت To-Do List4. ذخیره وضعیت سبد خرید در فروشگاه اینترنتی5. ذخیره تنظیمات سایت• نکات امنیتی مهمLocal Storage برای ذخیره اطلاعات حساس مثل رمز عبور مناسب نیستچون:قابل خواندن توسط JavaScript استدر برابر XSS آسیبپذیر است• بریم با هم دیگه یک مثال کامل بزنیم. ساخت --&gt; To-Do ListHTML&lt;!DOCTYPE html&gt;&lt;html lang=&#34;en&#34;&gt;&lt;head&gt;&lt;meta charset=&#34;UTF-8&#34;&gt;&lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;&lt;title&gt;To-Do List&lt;/title&gt;&lt;link rel=&#34;stylesheet&#34; href=&#34;styles.css&#34;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&#34;container&#34;&gt;&lt;h1&gt;Task Manager&lt;/h1&gt;&lt;div class=&#34;input-container&#34;&gt;&lt;input type=&#34;text&#34; id=&#34;taskInput&#34; placeholder=&#34;What needs to be done?&#34;&gt;&lt;button id=&#34;addTaskBtn&#34;&gt;Add Task&lt;/button&gt;&lt;/div&gt;&lt;ul id=&#34;taskList&#34;&gt;&lt;/ul&gt;&lt;/div&gt;&lt;script &gt;&lt;/body&gt;&lt;/html&gt;CSS* {margin: 0;padding: 0;box-sizing: border-box;}body {font-family: &#39;Roboto&#39;, sans-serif;display: flex;justify-content: center;align-items: center;min-height: 100vh;background-color: #e8f4f8;}.container {background-color: #ffffff;border-radius: 12px;padding: 30px;box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1);width: 500px;}h1 {font-size: 2.2rem;margin-bottom: 20px;font-weight: 700;color: #1a73e8; /* Updated to a calming blue tone */text-align: center;}.input-container {display: flex;justify-content: space-between;align-items: center;margin-bottom: 20px;}input[type=&#34;text&#34;] {width: 70%;padding: 12px;font-size: 1rem;border-radius: 8px;border: 2px solid #1a73e8;outline: none;transition: 0.3s;}button {padding: 12px 20px;background-color: #1a73e8;color: #fff;border: none;border-radius: 8px;font-size: 1rem;cursor: pointer;transition: 0.3s;}button:hover {background-color: #0056b3;}ul {list-style: none;padding: 0;}li {display: flex;justify-content: space-between;align-items: center;padding: 10px 0;border-bottom: 2px dashed #787a7b38;font-size: 1rem;}li button {background-color: transparent;color: #34a853;font-size: 1.5rem;border: none;cursor: pointer;margin-right: 10px;transition: 0.3s;}li button:hover {color: #000000;}li .remove-btn {background-color: #ea4335;color: #fff;border: none;border-radius: 5px;padding: 10px 10px;cursor: pointer;font-size: 0.9rem;transition: 0.3s;}li .remove-btn:hover {background-color: #b71c1c;}.completed {text-decoration: line-through;color: #6c757d;}JSlet tasks = [];const btnAddTask = document.getElementById(&#39;addTaskBtn&#39;);btnAddTask.addEventListener(&#34;click&#34;, function(){addTask();});= function () {const saved = localStorage.getItem(&#34;tasks&#34;);if (saved) {tasks = JSON.parse(saved);renderTasks();}};function addTask() {const taskInput = document.getElementById(&#39;taskInput&#39;);const taskText = taskInput.value.trim();if (taskText === &#39;&#39;) {alert(&#39;Please enter a task&#39;);return;}tasks.push({ text: taskText, completed: false });saveTasks();renderTasks();taskInput.value = &#39;&#39;;}function saveTasks() {localStorage.setItem(&#34;tasks&#34;, JSON.stringify(tasks));}function renderTasks() {const taskList = document.getElementById(&#39;taskList&#39;);taskList = &#34;&#34;;tasks.forEach((task, index) =&gt; {const listItem = document.createElement(&#39;li&#39;);const taskSpan = document.createElement(&#39;span&#39;);taskSpan.textContent = task.text;if (task.completed) taskSpan.classList.add(&#39;completed&#39;);const completeButton = document.createElement(&#39;button&#39;);completeButton = &#39;✔&#39;;completeButton.onclick = () =&gt; {task.completed = !task.completed;saveTasks();renderTasks();};const removeButton = document.createElement(&#39;button&#39;);removeButton.textContent = &#39;Remove&#39;;removeButton.className = &#39;remove-btn&#39;;removeButton.onclick = () =&gt; {tasks.splice(index, 1);saveTasks();renderTasks();};listItem(completeButton);listItem(taskSpan);listItem(removeButton);taskList(listItem);});}خروجیTo-Do List• جمع بندیLocal Storage یک ابزار قدرتمند در JavaScript است که به شما امکان ذخیره دادههای پایدار را با سرعت و سادگی بالا میدهد.اگر پروژههایی مثل To-Do، فرم ثبتنام، تنظیمات کاربری یا سبد خرید میسازی، استفاده از این قابلیت کار تو را بسیار ساده و حرفهای میکند.</description><category>امیر محمد نوری زاده</category><author>امیر محمد نوری زاده</author><pubDate>Tue, 25 Nov 2025 21:40:43 +0330</pubDate></item></channel></rss>