首页
学习
活动
专区
圈层
工具
发布

如何制作自己的原生 JavaScript 路由

但实际上,这些库和框架仍然使用 vanilla JavaScript。那么该怎么实现呢? 我希望这个“JavaScript 路由教程”能够帮你了解如何用原生 JS 写出自己的路由。...每当在浏览器的地址栏中输入新的 URL,但我们不想刷新页面时,就会发生这种情况,我们只是想通过加载新内容来刷新视图。 你可以选择将路由存储在 routes[] 数组中。...基于 History API 的 Vanilla JS 路由设置 先让我们仔细研究构建 URL 切换器所需的最少代码(而无需刷新页面),然后我会向你展示其的工作方式的 GIF 动图。...我们只需将存储在元素的 id 属性中的 clicked 元素的 id 传递给它即可:home,about,gallery 等。它们应与你要导航到的实际页面一致。...实施完毕后,你的路由就完成了。你如何选择重新加载 #content 元素中的内容完全取决于你自己和你的后端设计。

5.5K20

Vue.js入门系列(十八):利用浏览器本地存储实现TodoList数据持久化

在本篇博客中,我们将首先介绍Vue.js中如何使用浏览器的本地存储,然后将这一功能集成到我们的TodoList应用中。 一、浏览器本地存储 1.1 什么是本地存储?...它的特点是: 持久化:数据存储在浏览器中,除非被手动删除,否则不会丢失。 容量:本地存储的容量通常在5MB左右,足够存储较小的数据集。 简单易用:通过简单的API即可实现数据的存储、读取和删除操作。...二、TodoList应用中实现本地存储 2.1 保存任务列表到本地存储 为了使TodoList中的任务在页面刷新后仍然存在,我们可以在任务列表发生变化时将其保存到本地存储中。...task.completed; this.saveTasks(); } } 2.2 从本地存储加载任务列表 在应用启动时,我们希望能够从本地存储中读取之前保存的任务列表,并初始化应用的数据状态...应用中集成本地存储功能,我们使得应用的数据在页面刷新或关闭后仍能保持。

13710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    轻量级工具Vite到底牛在哪, 一文全知道

    这些工具在进行本地调试的时候会把模块预先打包成浏览器可读的js bundle格式,为了进行这一过程的优化,就出现了懒加载这种方式,但懒加载并不能解决构建的问题,Webpack依旧需要提前构建异步路由需要的模块...此外,Vite还能提供热模块替换,这意味着我们在开发过程中,可以在浏览器中看到代码刷新,甚至可以使用它来编译项目的精简版本,并直接用于生产。...选择vanilla后会生成一个目录(基于项目名称),其中包含一些文件,包括index.html,main.js,style.css,favicon.svg,和NPM和Git。...在实际使用中Vite令人惊叹,我们可以在一两分钟内就建立一个非常高级的堆栈,并且能够轻松完成从JavaScript到TypeScript的转换以及从CSS到Sass的转换。...开发人员经验 在以往的开发经验中,无论我们使用的是Grunt,Gulp,Rollup还是Webpack,这种大型复杂的项目都会花费不短的时间来调试并确保所有工具和插件都能正常运行。

    5.1K40

    怎样编写更好的 JavaScript 代码

    TS 在 vanilla JS 体验之上增加了一个全面的可选类型系统。很长一段时间里,整个 JS 生态系统对 TS 的支持不足以让我觉得应该推荐它。...在 TS 出现之前,也存在解决这个问题的其他方案,但是没有一个能够真正的解决它,并且还需要你做额外的工作。...总的来说,TS 已经发展成为一种成熟且更可预测的 vanilla JS替代品。肯定仍然需要 vanilla JS,但是我现在的大多数新项目都是从一开始就是 TS。...这并不意味着存储在该引用中的内容永远不会改变。对于原始类型(数字,布尔等),const 确实转化为不变性(因为它是单个内存地址)。...文字模板(字符串模板) 字符串是最常见的编程结构之一。这就是为什么它如此令人尴尬,以至于本地声明字符串在许多语言中仍然得不到很好的支持的原因。在很长一段时间里,JS 都处于“糟糕的字符串”系列中。

    1.8K30

    使用Vite创建一个动态网页的前端项目

    笔者还记得以前写前端代码的时候,只使用文本编辑器,然后在浏览器中刷新就可以了。对于纯前端项目,其实这样也是很方便的。...接下来,选择一个文件夹,在终端中运行以下命令来创建项目: npm create vite@latest my-native-js-app 这时,终端会让你选择一个框架: > npx > create-vite...一般来说,如果你开始一个新的项目,这一步是必须的。当然依赖库安装完成后,如果后续依赖库没有变动,就不需要执行这一步了。...npm run preview发布经过构建后的代码项目。 3. 解析 这个示例JS项目不仅仅是个欢迎页面,甚至还是个动态页面:可以对鼠标点击的次数计数。那么我们就来稍微解析一下其中的代码。...在main.js中则进行导入: import { setupCounter } from '.

    62110

    外网爆火的“量子纠缠”前端代码已开源,抢鲜体验!

    作者的推文: 从视频中可以看出,当我们打开两个窗口时,两个量子之间竟然还存在相互纠缠,简直把前端代码发挥到了极致,如此奇妙的效果到底是如何实现的呢?...下载项目 GitHub仓库地址:https://github.com/bgstaal/multipleWindow3dScene 从项目简介中得知作者是使用three.js和localStorage实现在同一源上跨窗口设置...推荐使用Live Server插件,在扩展商店中搜索Live Server并点击安装: 安装完成后,右下角就会出现一个Go live的按钮,点击按钮,就能给项目开启一个5500的端口: 在浏览器中访问项目...它就会计算窗口内生成的立方体的位置信息并添加到本地存储里,其他窗口监听到storage的改变就会刷新渲染立方体的位置: 我们再来看看localStorage里面到底存了哪些数据: 每个窗口唯一的id标识...) 然后就是通过beforeunload方法监听窗口是否关闭,关闭就删除本地存储里面那个对应立方体的数据: 更新立方体位置和数量 updateNumberOfCubes()更新当前页面立方体的数量和位置

    3.4K70

    如何创建、读取和删除?

    Cookie,更恰当地称为 HTTP Cookie,是在浏览器上存储为文本文件的一小部分数据。Cookie 将数据位与特定用户相关联。...即使在 Web 浏览器关闭后,它们仍会继续运行。例如,他们可以记住登录详细信息和密码,因此网络用户无需在每次使用网站时重新输入。...它们旨在永久存储在用户的计算机上。即使在用户的网络浏览器中删除了所有 cookie 之后,这些类型的 cookie 仍会保留在用户的设备上。...使用 Vanilla JavaScript 创建 Cookie 注意:要使下面的代码起作用,您的浏览器必须启用本地 cookie 支持。...惊人的! 安装 在根文件夹中运行以下命令以安装 js-cookies。 npm install js-cookie --save Cookie 属性 Expire:定义 cookie 将被删除的时间。

    5.3K42

    PHP网络技术(五)——cookie及记住用户名功能实现

    2)有效时间 如果设定cookie时,有设置expire,则关闭浏览器后再次打开浏览器,cookie还会存在。但是如果没有设定expire,则会被存入浏览器的内容,当浏览器关闭时cookie失效。...因此当有大量内容需要存储在本地时,需要使用本地存储技术,此技术使用javascript可以实现。...1)浏览器支持 用一段js代码可以判断浏览器是否支持本地存储:window.localStorage,如果是true则是支持,否则不支持。...3)其他注意事项 任何格式的存储会被转换成字符串,因此如果需要存储数组等信息时,可以先用json将内容转换成特定格式的字符串,在取出时在转回去。...当每次重新刷新或加载页面,则去获取cookie,如果存在则赋值给输入框,如果不存在则将输入框制空。 设置保存用户名按钮,保存2小时。关闭浏览器再次打开仍然会存在。 设置取消保存,再次刷新则获取到空。

    2.5K50

    构建Vue项目-身份验证

    TokenService在services / storage.service.js文件中,它负责封装和处理localStorage本地存储,访问,检索令牌的逻辑。...这样,我们就可以安全地从localStorage迁移到Cookie,而不必担心会破坏其他直接访问本地存储的服务或组件。这是一个很好的做法,可以避免将来出现麻烦。...' /** * 管理访问令牌存储和获取,从本地存储中 * * 当前存储实现是使用localStorage....我们将在main.js中初始化ApiService,以确保如果用户刷新页面后,重新设置header,并设置baseURL属性。...: login - 准备请求并通过API服务从API获取令牌 logout - 从浏览器存储中清除用户资料 refresh token - 从API服务获取刷新令牌 如果您注意到了,您会发现那里有一个神秘的

    8.5K20

    每个前端开发者都可以拥有属于自己的命令行脚手架

    是因为最近一直在搞Strve.js生态,在自己捣鼓框架的同时也学到了很多东西。所以就本篇文章给大家介绍一种更加方便灵活的命令行脚手架工具,以及如何发布到NPM上。...之前,我也写过类似的开发命令行工具的文章,但是核心思想都是通过代码远程拉取Git仓库中的项目模板代码。有时候会因为网速的原因导致拉取失败,进而会初始化项目失败。 那么,有没有比这个更好的方案呢?...那么,我们就在根目录下面建一个template-demo文件夹,里面再放一个index.js文件,作为示例模板。 我们在执行初始化项目时发现,需要选择对应的模板,那么这些选项是从哪里来的呢?...虽然,我们成功在本地创建了自己的一个模板,但是,我们只能本地创建。也就是说你换台电脑,就没有办法执行这个创建模板的命令。 所以,我们要想办法去发布到云端,这里我们发布到NPM上。...首先,我们重新新建一个项目目录,将其他模板删除,只保留我们自己的模板。另外,将数组中的其他模板对象删除,保留一个自己的模板。 我以自己的模板create-strve-app为例。

    1.4K30

    使用leancloud给简历加数据库,实现留言功能

    使用leancloud给简历加数据库,实现留言功能 这篇博客的源代码是我的正在写的在线简历 完整代码(项目暂未完成) 预览地址 在本地预览项目的时候用的http-server 前端的两大块: 操纵DOM...买个服务器,带数据库 数据必须存在服务器上,这样任何设备访问服务器都可以得到数据,如果存在客户端的本地,那么其他客户端设备无法读取到.所以数据必须存储在服务器的数据库上 我们必须买一个服务器,在上面安装数据库...拥有: 登录注册、手机验证码功能(收费) 存储任意信息 读取任意信息 搜索任意信息 删除任意信息 更新任意信息 等功能。...第四步: 测试,看看是否能够成功存储到服务器中的数据库.这一步仍然拷贝文档中的代码,按照文档中的提示做 ? ? Hello Word!...就是在数据库中新插入的数据 测试代码的详细解读 CRM学习代码法中C(拷贝)和R(运行)完毕,接下来实行M(修改),修改代码 下面用我的项目再重新看一下整个过程: 首先引入SDK,再引入一个message.js

    1.3K50

    《前端工程化》完结篇

    正常情况下,webpack构建产出的文件会存储在output配置项指定的硬盘目录中。...在业务代码中编写假数据的方式虽然简单方便,但是无论是从代码逻辑的严谨度,还是产品的质量保障角度考虑,这种方案都存在难以忽视的弊端。...可以将客户端Mock的代码集中写入一个单独的js文件,一方面便于统一维护,另一方面在接口完成之后直接把引用Mock的js文件删除即可。...即便客户端Mock提供了诸多便利,Mock相关的代码或文件仍然必须存在于业务代码中,而部署上线之前需要将其删除,这对于产品质量保障始终存在一定的隐患。...3)Mock Server 将Mock作为一种服务集成到前端工程体系中的工作流程如图: 在开发阶段使用Mock Server提供的与真实接口规范和逻辑一致的本地接口进行开发; 开发完成后,在构建阶段将

    62810

    如何让web网站支持MCP服务?50行代码即可让网站支持MCP,让AI助手与Web应用进行交互:WebMCP

    本篇博客将带你从原理到实战,深度剖析如何使用 WebMCP(又名 MCP-B)在几分钟内让站点 AI 化。...动态工具:可在页面生命周期中注册/注销工具 Schema 校验:基于 Zod 定义输入输出,保证调用正确性 核心代码:50 行搞定 MCP 服务 下面是一段在任意 Web 项目(Vanilla JS/...在 Chrome 中安装 MCP-B 扩展。 访问您的页面,点击扩展 -> “Tools” 即可见到 getPageInfo 工具;使用聊天框发起调用。.../mcp" } 此时,无需扩展即可让本地 AI 客户端调用浏览器标签页中的 MCP 工具。...,遵循同源策略 仓库结构 WebMCP/ ├── examples/ # 示例项目(vanilla-ts, react-shop, vue-demo…) ├── packages/

    1.1K10

    H5 和移动端 WebView 缓存机制解析与实战

    正文 在web项目开发中,我们可能都曾碰到过这样一个棘手的问题: 线上项目需要更新一个有问题的资源(可能是图片,js,css,json数据等),这个资源已经发布了很长一段时间,为什么页面在浏览器里打开还是没有看到更新...他们通常还会告诉你:ctrl+F5强刷一下,但是本文下面的内容将会说明为什么强制刷新在去除缓存上不总是能奏效的,更何况对于线上项目而言,总不能让所有已经访问过的用户撸起袖子岔开两个手指都强制刷新一下吧?...Web SQL》,这里就不展开了,需要注意的是,若使用本地存储,想要清理缓存,除了清理本地存储文件外,还需要重启APP,以消除内存中的备份。...NSURLRequestReturnCacheDataElseLoad 只有在cache中不存在data时才从原始地址下载。...同时,在移动端webView层,对html缓存机制做了支持(从笔者接触过的手游和相关APP来看,目前使用默认缓存机制的比较多),项目开发过程中缓存更新和清理方式也需要有针对性地选择使用。

    4.3K40

    福利|评价超高的《精通以太坊》丛书免费送,还包邮!手慢无

    在返回的结果中,可以从result里拿到余额,需要注意的是JSON里的数字是十六进制编码。...在应用中使用Web3.js 另一种方式是,在我们开发的应用中引入Web3.js库来和智能合约交互。 项目引入Web3.js 首先你需要将Web3引入到工程中,根据项目的不同,使用不同的方式。...vanilla,dist./Web3.min.js。...在浏览器中打开index.html,输入名字和年龄后刷新一下,就可以看到前面贴出的效果图了。 合约加入事件 在上面的案例中,只有在刷新浏览器后才能看到数据的变化。...初始化Web3 编辑app.js修改initWeb3()函数,删除注释。 ? ? 同样,在代码中优先使用Mist或MetaMask提供的Provider,如果没有则从本地环境创建一个。

    1.4K20

    Wasm Client SDK 架构介绍

    1.3 数据存储:SQLite + sql.js + IndexedDB​• 使用 sql.js(JavaScript 版 SQLite)在浏览器中模拟本地数据库。...• 底层将数据存储在浏览器的 IndexedDB 中,但对开发者而言完全透明,仍然以原生 SQL 形式进行读写。...2.2 SQLite 虚拟化​为什么需要本地存储?即时通讯场景中,客户端往往需要将聊天记录、用户信息、会话列表等存储在本地,以便在断网或刷新后能快速恢复、离线查看。...• IndexedDB: 由于浏览器环境无法直接访问本地文件系统,sql.js 会将所有数据储存在内存或浏览器原生数据库 IndexedDB 中,并持久化。...稳定的本地缓存• 通过 sql.js + IndexedDB 的本地缓存,用户可以在刷新、断网后仍能访问聊天记录和会话列表,提高了可用性与用户体验。

    39710

    使用 SCF 自动刷新被 CDN 缓存的 COS 资源

    本实践将引导您在使用腾讯云对象存储 COS 上传对象时,借助云函数 SCF 实现自动刷新在 CDN 上指定的缓存文件,让其自动获取到更新后的资源。...一、创建 SCF 函数 注意:您创建的函数所属地域需与 COS 存储桶的地域保持一致。 登录 SCF 控制台,在左侧导航菜单中,单击【函数服务】。 选择与静态内容相同的地域,单击【新建】创建函数。...解压所有文件,找到其中的 index.js 文件并打开。 在代码里修改替换成您的具备调用 CDN 刷新接口权限的 SecretId、SecretKey 和需要刷新的域名。如下图所示: ?...在 SCF 控制台 中,选择【函数代码】页签,将 "提交方法" 设置为 "本地上传 zip 包",单击【上传】,选择此压缩的 zip 格式文件。如下图所示: ? 3....添加触发方式 在 SCF 控制台 中,选择【触发方式】,单击【添加触发方式】。

    3.8K51

    HTTP 缓存机制

    验证:验证缓存中的过期内容是否仍然有效,验证通过的话刷新过期时间。 失效:失效就是把内容从缓存中移除。当内容发生改变时就必须移除失效的内容。...) 缓存的内容将在 xxx 秒后失效,失效前可以直接使用本地缓存,失效后必须向服务器确认资源是否已经改变。...2)缓存过期策略 缓存过期策略决定了客户端存储在本地的缓存数据是否已过期,如未过期则可以直接使用本地存储的数据,否则就需要发请求到服务端尝试重新获取数据。...Expires 表示缓存数据有效的绝对时间,告诉客户端到了这个时间点后本地缓存就失效了,在这个时间内客户端可以不请求服务器而直接从本地缓存中使用已存储的结果。...其次, 缓存数据过期只是告诉客户端不能再直接从本地读取缓存了,而是需要再发一次请求到服务器去确认。具体什么情况下本地存储的数据还可以继续使用就与缓存对比策略有关了。

    1.1K20

    IndexDB实现一个本地数据库的增删查改

    ,可以支持存储任何类型的数据 支持键检索,查询,新增,删除操作 在客户端浏览器可以存储大数据量,适用于离线应用 所有接口都是基于事件 在与lcoalStorage或者seesionStorage来说,IndexDB...,在applcation/Storage/IndexDB中就会保存一条数据 当我们刷新时,数据页面仍然会保留上一次的数据 在我们新增操作,然后刷新的过程中主要发生了什么呢 其实IndexDB主要做了以下几件事情...更新后 我们可以刷新右侧的刷新按钮现实对应的数据 删除 ... // 删除 const del_indexDB = (id, callback) => { db.user.where('id...删除前 删除后 当我们删除后,又可以重新添加 但是我们发现,每次只能添加一次,如果重复添加,那么此时会添加不了 主要原因是store中的key重复了,无法重复添加,但是你把上一条删除了,你就可以重复添加了...而且你删除后,当你刷新页面,那条数据就真的没有,当你新增一条数据,只要你不删除,那么打开页面数据就会一直在页面中。

    1.6K20
    领券