<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های امیر محمد نوری زاده</title>
        <link>https://virgool.io/feed/@amirmohamadnorizadeh</link>
        <description>Programmer
💻☕</description>
        <language>fa</language>
        <pubDate>2026-06-16 17:48:50</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1721034/avatar/bj5aaN.jpg?height=120&amp;width=120</url>
            <title>امیر محمد نوری زاده</title>
            <link>https://virgool.io/@amirmohamadnorizadeh</link>
        </image>

                    <item>
                <title>Local Storage (JavaScript) — راهنمای کامل و کاربردی</title>
                <link>https://virgool.io/@amirmohamadnorizadeh/local-storage-javascript-%E2%80%94-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%DA%A9%D8%A7%D9%85%D9%84-%D9%88-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-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(&quot;username&quot;, &quot;amir&quot;);2. خواندن دادهlet user = localStorage.getItem(&quot;username&quot;);console.log(user);3. حذف یک دادهlocalStorage.removeItem(&quot;username&quot;);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=&quot;en&quot;&gt;&lt;head&gt;&lt;meta charset=&quot;UTF-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;&lt;title&gt;To-Do List&lt;/title&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;styles.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;container&quot;&gt;&lt;h1&gt;Task Manager&lt;/h1&gt;&lt;div class=&quot;input-container&quot;&gt;&lt;input type=&quot;text&quot; id=&quot;taskInput&quot; placeholder=&quot;What needs to be done?&quot;&gt;&lt;button id=&quot;addTaskBtn&quot;&gt;Add Task&lt;/button&gt;&lt;/div&gt;&lt;ul id=&quot;taskList&quot;&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: &#039;Roboto&#039;, 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=&quot;text&quot;] {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(&#039;addTaskBtn&#039;);btnAddTask.addEventListener(&quot;click&quot;, function(){addTask();});= function () {const saved = localStorage.getItem(&quot;tasks&quot;);if (saved) {tasks = JSON.parse(saved);renderTasks();}};function addTask() {const taskInput = document.getElementById(&#039;taskInput&#039;);const taskText = taskInput.value.trim();if (taskText === &#039;&#039;) {alert&#40;&#039;Please enter a task&#039;&#41;;return;}tasks.push({ text: taskText, completed: false });saveTasks();renderTasks();taskInput.value = &#039;&#039;;}function saveTasks() {localStorage.setItem(&quot;tasks&quot;, JSON.stringify(tasks));}function renderTasks() {const taskList = document.getElementById(&#039;taskList&#039;);taskList = &quot;&quot;;tasks.forEach((task, index) =&gt; {const listItem = document.createElement(&#039;li&#039;);const taskSpan = document.createElement(&#039;span&#039;);taskSpan.textContent = task.text;if (task.completed) taskSpan.classList.add(&#039;completed&#039;);const completeButton = document.createElement(&#039;button&#039;);completeButton = &#039;✔&#039;;completeButton.onclick = () =&gt; {task.completed = !task.completed;saveTasks();renderTasks();};const removeButton = document.createElement(&#039;button&#039;);removeButton.textContent = &#039;Remove&#039;;removeButton.className = &#039;remove-btn&#039;;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 20:40:43 +0330</pubDate>
            </item>
            </channel>
</rss>