前端一些知识点

这篇具有很好参考价值的文章主要介绍了前端一些知识点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

cookies & webStorage & indexedDB

cookies

  • 由来
    • cookie设计的初衷是用于维护HTTP状态
  • 原理
    • 浏览器首先发送一个无状态请求到服务端
    • 服务端带上cookie返回
    • 浏览器后面的请求都会带上cookie(如果客户端或者服务端对cookie没有操作的话)
  • 生成机制
    • 服务端生成,在Http Response Header 中 Set-Cookie
    • 客户端生成,通过 document.cookie设置
  • 缺陷
    • cookie大小限制4k
    • cookie附在HTTP请求上,如果数据过大,或导致http请求非常大

webStoreage

  • loaclStorage
    • 以域名为维度,浏览器持久化存储方案
    • 大小5Mb
    • 同步接口,占用线程的计算
    • 使用方法:
      • localStorage.setItem(key,value)
      • localStorage.getItem(key)
  • sessionStorage
    • 以域名为维度,浏览器基于会话级的存储方案(页面关闭后或者新开一个窗口之前存储的数据就会获取不到)
    • 大小5Mb
    • 同步接口,占用线程的计算
    • 使用方法:
      - sessionStorage.setItem(key,value)
      - sessionStorage.getItem(key)
  • indexedDB
    • 以域名为维度,浏览器大量结构化数据存储方案,运行在浏览器的非关系型数据库
    • 不会小于250Mb,支持二进制存储,理论无上限
    • 接口异步,支持事务机制(要不成功,要不失败)

数组方法

  • every
    • 遍历数组的每个元素,每个元素都满足指定的条件时返回true,否则返回false
  • some
    • 遇到数组中的满足条件的元素就会返回true(后面的元素不在参与运算),都不满足返回false
  • filter
    • 遍历数组,提取满足条件的元素,返回满足条件元素的数组
  • reduce
    • 遍历数组归并,((pre,cur)=>{return pre+cur}, x),第0次遍历时x赋值给pre。
    • reduce(归并方法(pre,cur), initValue), pre缓存值,cur当前元素的值
    • 累加:arr.reduce((pre,cur)=>{return pre + cur}, 0)
    • 找最大值:arr.reduce((pre,cur)=>{return Math.max(pre,cur)},)
    • 数组去重:arr.reduce((pre,cur)=>{if(pre.indexOf(cur) === -1) {pre.push(cur)} return pre}, [])
    • 归类:arr.reduce((preObj,curObj)=>{ const {city} = curObj; if(!preObj[city]){preObj[city]=[]}; preObj[city].push(cur); return preObj; }, {})
    • 字符串翻转:Array.from(str).reduce((pre,cur)=>{ return ${cur}${pre} },‘’)

RESTFul - API

  • representation state transfer Application Program Interface
  • 表示性状态转移接口, API设计规范:
      1. 将一切数据视作资源
      1. 利用 HTTP 请求方式,描述对资源的操作(增、删、改、查)
      1. 通过 HTTP 响应状态码, 描述对资源的操作结果。
  • 期望的效果是:
      1. 看url就知道是什么资源
      1. 看 method 知道对资源做了什么操作
      1. 看 Response Code 知道操作是否成功
  • Method 规范:
      1. GET 用于读取资源
      1. POST用于创建资源
      1. PUT用于更新资源
      1. Patch 用于局部更新
      1. Delete 用于删除
  • 示例:
    • 普通 API
      • /api/getUser
      • /api/createUser
      • /api/deleteUser
    • RESTFul API
      • GET /api/users/:user_id
      • POST /api/users
      • DELETE /api/users/:user_id
  • 好处:
    • 有效降低沟通成本
    • 前后端解耦更彻底
    • 前端业务更灵活

前端内存泄漏

  • 内存的生命周期:
    • 程序执行都先分配好内存(在js中是隐藏的操作)
    • 在内存中进行逻辑读/写
    • 垃圾清除,释放/回收内存(在js中是隐藏的操作)
  • 内存泄漏是指在程序中已经不在使用的变量,但垃圾回收机制认为还在使用,导致内存无法释放。
  • 场景1:意外定义全局变量,不如通过通过this定义变量时,this指向windows时,会导致变量都在windows对象中,即使组件的生命周期到了,定义的这些变量也有可能不会被回收。
  • 场景2:console.log,打印一些变量到控制台,比如对象,那这个对象是释放不了的,因为它需要一直显示在控制台
  • 场景3:没有控制好的闭包。比如闭包返回的function赋值给一个全局变量,但没有执行,如果这个全局变量没有置为null,那么这个function对象则一直会被GC认为在使用中
  • 场景4:DOM泄漏。比如通过document.createElement创建的元素,再被插入到dom中后,删除对应的的父节点,怎创建的元素不在被使用,但是垃圾回收机制认为这些创建的元素还是在被引用。

文章来源地址https://www.toymoban.com/news/detail-839297.html

到了这里,关于前端一些知识点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql innodb一些知识点

    1、事务和锁的关系; 在MySQL事务中,只要开始了一次事务,就会自动加上一个共享锁(Shared Lock)。这个锁会在事务结束时自动释放。如果在事务中需要更新某个数据对象,那么MySQL会将该数据对象的共享锁升级为排他锁(Exclusive Lock),这可以确保在其他事务中对该数据对象

    2024年02月14日
    浏览(39)
  • 一些关于c++的琐碎知识点

    目录 bool强转 const构成重载:const修饰*p  移动构造 new int (10)所做的四件事 this指针---为什么函数里面需要this指针? .和-的区别 new创建对象 仿函数 new和malloc的区别 c++系统自动给出的函数有 delete和delete[ ]区别何在 检查有没有析构函数 explict外部 内存泄漏的本质:丢失了内存地

    2024年02月07日
    浏览(49)
  • 关于BGP的一些知识点;(1)

    BGP路由属性中:     公认必遵属性有:Origin, AS_PATH,Next_hop      公认任意有:Local_Pref, Atomic_aggregate,        其中MED为可选非过渡不属于公认属性  Local-Preference是公认任意属性,且只能在一个AS内传播,默认值为100 BGP的Cluster_List 属性用来标识路由器反射组,是可选非过

    2024年02月07日
    浏览(50)
  • JavaScript 知识点

    立即执行函数 代码 创建函数的同时立即执行,没有绑定任何事件,也无需等待任何异步操作 function () {} 是一个匿名函数,包围它的一对括号将其转换为一个表达式,紧跟其后的一对括号调用了这个函数。 立即执行函数 也可以理解为立即调用一个匿名函数。最常见的应用场

    2024年02月11日
    浏览(38)
  • 关于set变更通知涉及的一些知识点

    在这个示例中,我们声明了一个私有字段  _name  作为存储名称的后端字段,并将其封装在公共属性  Name  中。在 setter 方法中,我们首先检查新值是否与旧值相同。如果不同,我们才更新存储字段,并调用  OnNameChanged()  方法来引发  NameChanged  事件。 注意, OnNameChanged  方

    2024年02月08日
    浏览(49)
  • JavaScript知识系列(2)每天10个小知识点

    👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! 在 JavaScript 中,如果您尝试使用 new 来实例化(创建对象)一个箭头函数,会导致运行时错误。箭头函数与普通函数(使用 function 声明的函数)

    2024年02月09日
    浏览(47)
  • 分享刷题的一些小知识点--4.9日

    1.string库提供了 、、==、=、=、!= 等比较运算符,比如两个字符串s和t,直接(s==t)是正确的。 2.unordered_map 容器,直译过来就是\\\"无序 map 容器\\\"的意思。所谓“无序”,指的是 unordered_map 容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 map 容器仅有

    2023年04月11日
    浏览(48)
  • 使用es必须要知道的一些知识点:索引篇

    在当今数据驱动的世界中,Elasticsearch(简称ES)成为了一个强大而广泛应用的搜索和分析引擎。ES提供了快速、可扩展且高度可靠的数据存储和检索解决方案。然而,要真正掌握ES的各种功能和最佳实践,需要通过实践才能获得真正的知识。 在Elasticsearch(ES)中,index操作和

    2024年02月08日
    浏览(43)
  • 传输层中一些零碎且易忘的知识点

    端口号:共两个字节 不同类型的端口号: 服务端端口号 熟知端口号:0~1023 登记端口号:1024~49151 客户端使用端口号(短暂/临时端口号):49152~65535 要记得常见应用程序的熟知端口号 FTP:21 TELNET:23 SMTP:25 DNS:53 TFTP:69 HTTP:80 SNMP:161 首部与伪首部: 伪首部中协议字

    2024年02月15日
    浏览(39)
  • 网络层中一些零碎且易忘的知识点

    异构网络:指传输介质、数据编码方式、链路控制协议以及数据单元格式和转发机制不同,异构即物理层和数据链路层均不同 虚电路:网络层可以向传输层提供两种类型的服务,面向连接的服务称为虚电路服务,而无连接的服务称为数据报服务。虚电路的想法是避免为发送的

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包