15. JavaScript 的 本地操作 都能干些啥?

130 阅读3分钟

JavaScript 的 本地操作 都能干些啥?

在 JavaScript 中,本地操作 主要涉及到 数据 在用户 本地设备(如浏 览器所在的 计算机 或 移动设备)上的 存储读取

这使得网页应用 能够在 不同的会话之间 记住 用户的 一些 信息 或者 设置,增强了 用户体验。主要的本地存储方式有 localStoragesessionStorage

localStorage 对象

localStorage 提供了一种 持久化 存储数据 的方式,数据存储在 用户的 浏览器中,即使 关闭浏览器窗口 或者 标签页,数据依然存在,除非 用户手动 清除浏览器缓存 或者 通过 JavaScript 代码清除 数据。

它是以 键 - 值 对key - value pair)的形式 存储数据的。

存储数据

// 示例代码 1
localStorage.setItem("userName", "John");
localStorage.setItem("userAge", 25);

可以存储 各种类型 的 数据,包括 字符串数字布尔值 等。不过,存储 非字符串 的 数据时,会先将其 转换为 字符串

上面代码中(示例代码 1),存储一个数字 25,- 实际上是将 数字 25 转换为 字符串 "25" 进行存储。

读取数据

// 示例代码 2
let userName = localStorage.getItem("userName");
console.log(userName); // "John"

如果要 读取 不存在 的键 对应的内容,会返回 null

删除数据 和 清空存储

可以使用 localStorage.removeItem() 方法 删除 指定键的 数据。

// 示例代码 3
localStorage.removeItem("userAge");

如果要清空 localStorage 中的 所有数据,可以使用 localStorage.clear() 方法。不过,要 谨慎使用 这个方法,因为它会删除 所有存储的 键 - 值对

sessionStorage 对象

sessionStorage使用方法 localStorage 类似,也是以 键 - 值对 的形式 存储数据。但是,sessionStorage 的数据 只在 当前会话session)中有效。会话是指 从用户 打开浏览器窗口 或者 标签页,到 关闭这个窗口 或者 标签页 的 这段时间

例如,存储一个 当前页面的 访问次数:

// 示例代码 4
if (sessionStorage.getItem("visitCount") === null) {
    sessionStorage.setItem("visitCount", 1);
} else {
    var count = parseInt(sessionStorage.getItem("visitCount"));
    sessionStorage.setItem("visitCount", count + 1);
}

本地文件操作(有限制)

浏览器环境 下,JavaScript 对本地文件的 直接操作 受到严格限制,这是出于 安全考虑。但是,在一些 HTML5 应用场景 下,通过 FileFileReader 等对象 可以在 用户授权 的情况下 对 本地文件 进行 有限的 操作

<input type="file" id="fileInput">
const fileInput = document.getElementById("fileInput");
fileInput.addEventListener("change", function() {
  let file = fileInput.files[0];
  let reader = new FileReader();
  reader.onload = function() {
      console.log(reader.result);
  };
  reader.readAsText(file);
});

当用户选择一个文件后,FileReader 对象 会读取 文件内容(这里是将 文件内容 作为文本 读取),并在onload 事件处理函数中 输出 文件内容。

本地文件上传

<!-- 创建一个文件选择的input元素 -->
<input type="file" id="fileInput">
<!-- 创建一个按钮用于触发上传操作(这里只是模拟,实际可能关联真正的上传逻辑) -->
<button onclick="uploadFile()">Upload File</button>
<!-- 用于显示上传结果的div -->
<div id="result"></div>
function uploadFile() {
    // 获取文件选择input元素
    const fileInput = document.getElementById('fileInput');
    // 获取用户选择的文件(files是一个类数组对象,这里取第一个文件,若允许多选可做循环处理)
    const file = fileInput.files[0];
    if (file) {
        // 获取文件名
        let fileName = file.name;
        // 获取文件大小(单位为字节)
        let fileSize = file.size;
        // 获取文件类型
        let fileType = file.type;
        // 在页面上显示文件相关信息(简单示例,实际可做更多复杂展示或上传等操作)
        const resultDiv = document.getElementById('result');
        resultDiv.innerHTML = `
            <p>文件名: ${fileName}</p>
            <p>文件大小: ${fileSize} 字节</p>
            <p>文件类型: ${fileType}</p>
        `;
    } else {
        alert('请选择要上传的文件');
    }
}