随笔分类 - Web前端入门
Web前端入门入门笔记
摘要:HTML 版本不停的更新迭代,也导致浏览器支持的写法眼花缭乱,就拿 script 标签来说,刚刚入行的那会儿就只知道用来写内联的 js 代码,后来又学到了引入 js 文件,ES 模块规范化之后又知道能用来引入模块化的 js 代码,可这就是它的全部了吗?? 然而...并不是!!! 各种用法 看看 sc
阅读全文
摘要:setInterval 和 setTimeout 两者都是用于控制 JS 函数延迟执行,但是在执行机制和用途上还是有点儿差异。 虽然说两者功能上有区别,但在使用上却可以相互模拟各自的功能,大胆的猜测下:也许浏览器内核底层都是同一个方法,只是上层封装出的两个语法糖而已。 语法 两者在语法上极其相似,除
阅读全文
摘要:最初的 JS 执行代码都是一条线执行到底,当遇到比较耗时的操作时,比如大数组循环运算,就会导致页面卡着,就像假死一样。就像一个人在厨房烧菜一样,需要依次完成切菜、炒菜、装盘这些步骤,此过程中没办法同时做其他事情,必须按顺序执行每一个步骤。 Web Worker 赋予了 JS 分配任务的能力,在遇到复
阅读全文
摘要:在前端风风雨雨的混了多年,从没在项目中实际使用过 IndexedDB 这个浏览器端的数据库,所以今天就摸了下 MDN 的后门,写一个简单的入门示例。 页面大概长这样: 源码: 以下代码包含了一个数据库所有的 CRUD (增删改查)操作。 <div> <button id="js_add_btn">添
阅读全文
摘要:sessionStorage 与 localStorage 差不多可以算作一对兄弟,它俩的暴露的 API 方法一模一样。 但两者也有不同点: 1、sessionStorage 存入的数据在页面关闭后,会自动清除。 2、相同 URL 的每个 tab 页签的 sessionStorage 会被隔离,互不
阅读全文
摘要:本地存储除了 Cookie 外,还有 localStorage 和 sessionStorage,本文一探 localStorage。 localStorage 此 API 存入的数据会 永久 保存在浏览器中,除非用户手动删除。 localStorage 能用于同一浏览器同一域名跨标签页通信。 同一
阅读全文
摘要:面试时候经常会被问及 Cookie 大小限制,但一直没尝试写一些 demo 测试下溢出极限值会怎样~~ 本文就来看看各种极限情况! 英文 测试代码: (() => { const maxSize = 4 * 1024; // 4KB const name = 'name' // 最大出入的 valu
阅读全文
摘要:前端的 cookie 读写在 2020 年之前一直不存在一个官方的接口,每次需要使用 cookie 的时候,要么是引入三方插件,要么就需要自己封装一个公用的组件或函数。 npm 的 cookie 插件周下载量 6 千万左右,可以想象一下此功能在前端的应用场景有多么广泛~~ cookie 插件: ht
阅读全文
摘要:前端开发一直有种错觉,好像异常捕获都是后端的事,毕竟后端开发时如果不处理代码中的异常,有些资源得不到释放,极其容易导致内存泄漏。 前端由于 JS 的垃圾回收机制无需手动释放资源,反而不会怎么使用异常捕获代码中的错误。实际上任何编程语言,要写出一个健壮性的代码,都需要考虑异常处理。 本文分析下哪些地方
阅读全文
摘要:JS 中异步任务随处可见,比如: 1、用户交互的点击、输入 2、网络请求的 fetch、ajax、WebSocket 3、资源中的图片、脚本加载 4、定时任务 setTimeout、setInterval、动画 5、Web Worker 中的后台任务 以上这些地方都能见到 JS 异步任务使用场景。
阅读全文
摘要:在 ES6 之前,JS 的多行字符串一直是开发难题,在处理多行字符串时,各种各样的方案都有~~ 在 JS 中,如果直接这样写多行字符串: const str1 = '第一行 第二行'; 那浏览器转过来就打脸,分分钟报错: Uncaught SyntaxError: Invalid or unexpe
阅读全文
摘要:开发中经常会遇这样的需求:点击 A 元素的时候,需要触发 B 元素的事件,比如:点击一个 div 元素,然后触发 input:file 的 click 事件,用来选择文件上传。 click 方法 以上需求可通过元素的 click 方法触发: <style> .test2 { padding: 4px
阅读全文
摘要:题外话 在考察事件基础的时候,会经常被问及 click、mousedown、mouseup 它们三者执行的先后顺序是怎样的? 如果平时没太注意,这细节可能就会忽略,毕竟很少会在同一个元素上面同时绑定这三个事件~~ 直接上示例: <div class="c">测试点击事件</div> <script>
阅读全文
摘要:如今 Vue 大行其道,大部分开发场景直接使用 @click 就实现了事件绑定,可能都没思索过 JS 中的事件性能优化。 事件委托原理 事件委托 其主要是利用了事件冒泡这个特性。 以点击事件 click 为例:将事件绑定在父元素上,点击子元素会通过冒泡的方式触发父元素的点击事件。这种绑定事件的方式,
阅读全文
摘要:在讨论冒泡和捕获之前,先看这么一段代码: <style> .bd { border: 1px solid #000; padding: 8px; } </style> <div id="container1" class="bd"> 外层 <div id="container2" class="bd
阅读全文
摘要:网页上各种炫酷的交互效果离不开各种 DOM 事件 的支持,在写这篇文章之前,一度以为 JS 的事件绑定/取消方式就我知道的那几种,翻阅文档之后才发现,知识面还是有待提升,多翻翻文档,就像发现新大陆一样~~ 常用事件 鼠标事件: click:鼠标左键单击 dblclick:鼠标左键双击 mousedo
阅读全文
摘要:当项目的安全团队找上门告诉您,您开发的项目存在 XSS 安全漏洞,作为一个开发人员,就问您慌不慌?? HTML 内容写入的时候,如果稍不注意就会触发隐藏 BOSS 漏洞 XSS。 XSS 漏洞原理就是利用了网站上内容输入的地方,比如说常见的评论提交,老六 通过输入评论的地方,提交一些 包含 JS 代
阅读全文
摘要:有一个深有体会的事:发现现在很多前端同学,经常用 Vue 开发项目之后,在某些需求场景要操作 DOM 节点的时,就不知道咋办了~~ 以前接手过其他开发团队的项目,项目被漏洞扫描工具发现了异常,原因是用了一个 vue-video-player 插件用于播放视频,这插件又依赖了低版本的 video.js
阅读全文
摘要:虽然目前的开发场景基本都是使用 React/Vue/Angular 等框架,但是对于一些基础的 DOM 操作,还是需要了解学习。 曾经我们讨论过这样一个问题:Vue 这些开发框架,用它们渲染页面,真的就比不用开发框架快吗? 其实这个问题很好回答的,开发框架只是优化了项目的开发效率,对于浏览器的渲染速
阅读全文
摘要:Promise 这个 API 曾在 JS 领域掀起过血雨腥风,以前的大佬们都喜欢手搓一个自己的 Promise 用以理解 Promise 的原理。 Promise 的诞生,应该多少都有受到 jQuery 的异步方法 $.Deferred() 影响。 应用场景 Promise 唯一作用就是在处理异步耗
阅读全文