首页 > 其他分享 >【React工作记录九十五】前端小知识点扫盲笔记记录4

【React工作记录九十五】前端小知识点扫盲笔记记录4

时间:2023-06-09 11:06:02浏览次数:38  
标签:function 知识点 记录 wm2 报文 SYN loader React var

前言

我是歌谣 最好的种树是十年前 其次是现在 微信公众号关注前端小歌谣带你进入氛围极好的前端巅峰人才交流群

url参数解析成一个对象

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    var url="geyao?key0=0&key1=1&key2=2&key3=3"

    function parseQueryString(url){
      var str=url.split("?")[1]
      var items=str.split("&")
      var result=[]
      var arr=[]
      for(var i=0;i<items.length;i++){
        arr=items[i].split("=")
        result[arr[0]]=arr[1]
      }
      return result
    }
    var obj=parseQueryString(url)
    console.log(obj,"obj")
    //[key0: '0', key1: '1', key2: '2', key3: '3'] 'obj'
  </script>
</body>
</html>

weakMap

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>WeakMap</title>
	</head>
	<body>
		<script>
			//WeakMap 对象是一组键/值对的集合,其中的键是弱引用的。其键必须是对象,而值可以是任意的。
			//WeakMap 的 key 只能是 Object 类型。 原始数据类型 是不能作为 key 的(比如 Symbol)
			const wm1 = new WeakMap(),
				wm2 = new WeakMap(),
				wm3 = new WeakMap()
			const o1 = {},
				o2 = function () {},
				o3 = window
			wm1.set(o1, 37)
			wm1.set(o2, 'azerty')
			wm2.set(o1, o2) // value可以是任意值,包括一个对象或一个函数
			wm2.set(o3, undefined)
			wm2.set(wm1, wm2) // 键和值可以是任意对象,甚至另外一个WeakMap对象
			wm1.get(o2) // "azerty"
			wm2.get(o2) // undefined,wm2中没有o2这个键
			wm2.get(o3) // undefined,值就是undefined
			wm1.has(o2) // true
			wm2.has(o2) // false
			wm2.has(o3) // true (即使值是undefined)
			wm3.set(o1, 37)
			wm3.get(o1) // 37
			wm1.has(o1) // true
			wm1.delete(o1)
			wm1.has(o1) // false
		</script>
	</body>
</html>

weakMap的应用

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>weakMap</title>
</head>
<body>
  <script>
    //ES6语法 利用weakMap避免内存泄露
    const oBtn1 = document.querySelector('#btn1');
    const oBtn2 = document.querySelector('#btn2');
    const oBtnMap = new WeakMap();
    //弱引用
    oBtnMap.set(oBtn1, handleBtn1Click);
    oBtnMap.set(oBtn2, handleBtn2Click);
    oBtn1.addEventListener('click', oBtnMap.get(oBtn1), false);
    oBtn2.addEventListener('click', oBtnMap.get(oBtn2), false);
    function handleBtn1Click() {}
    function handleBtn2Click() {}
    oBtn1.remove();
    oBtn2.remove();
  </script>
</body>
</html>

webpackload和plugin区别

loader: loader从字面的意思理解,是 加载 的意思。 由于webpack 本身只能打包commonjs规范的js文件,所以,针对css,图片等格式的文件没法打包,就需要引入第三方的模块进行打包。 loader虽然是扩展了 webpack ,但是它只专注于转化文件(transform)这一个领域,完成压缩,打包,语言翻译。loader是运行在NodeJS中。 仅仅只是为了打包,仅仅只是为了打包,仅仅只是为了打包,重要的话说三遍! 如:css-loader和style-loader模块是为了打包css的 babel-loader和babel-core模块时为了把ES6的代码转成ES5 url-loader和file-loader是把图片进行打包的。 plugin是做什么的 plugin完成的是loader不能完成的功能,这是废话,没有说清楚。 plugin也是为了扩展webpack的功能,但是 plugin 是作用于webpack本身上的。而且plugin不仅只局限在打包, 资源的加载上,它的功能要更加丰富。从打包优化和压缩,到重新定义环境变量,功能强大到可以用来处理各种各样的任务。webpack提供了很多开箱即用的插件: CommonChunkPlugin主要用于提取第三方库和公共模块,避免首屏加载的bundle文件,或者按需加载的bundle文件体积过大,导致加载时间过长,是一把优化的利器。而在多页面应用中, 更是能够为每个页面间的应用程序共享代码创建bundle。 插件可以携带参数,所以在plugins属性传入new实例。

三次握手

第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_SEND 状态。 首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。 第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s)。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD 的状态。 在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。 第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接。 确认报文段ACK=1,确认号ack=y+1,序号seq=x+1(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号

不使用代理模式预加载图片

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>不使用代理模式预加载图片</title>
</head>

<body>
  <script>
    // 不使用代理的预加载图片函数如下
    var myImage = (function () {
      var imgNode = document.createElement("img");
      console.log(imgNode,"imgNode")
      document.body.appendChild(imgNode);
      var img = new Image();
      console.log(img,"img")
      img.onload = function () {
        imgNode.src = this.src;
      };
      return {
        setSrc: function (src) {
          console.log(imgNode,"imgNodetest")
          imgNode.src = "http://img.lanrentuku.com/img/allimg/1212/5-121204193Q9-50.gif";
          img.src = src;
        }
      }
    })();
    // 调用方式
    myImage.setSrc("https://img.alicdn.com/tps/i4/TB1b_neLXXXXXcoXFXXc8PZ9XXX-130-200.png");
  </script>
</body>

</html>

事件冒泡

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>事件冒泡</title>
	</head>

	<body>
        <!-- 开始时由最具体的元素接收,然后逐级向上传播到到 DOM 最顶层节点。 -->
		<div class="father">
			<div class="son">son</div>
		</div>
		<script>
			// 常见事件对象的属性和方法
			// 阻止冒泡  dom 推荐的标准 stopPropagation()
			var son = document.querySelector('.son')
			son.addEventListener(
				'click',
				function (e) {
					console.log('son')
					e.stopPropagation() // stop 停止  Propagation 传播
					e.cancelBubble = true // 非标准 cancel 取消 bubble 泡泡
				},
				false
			)

			var father = document.querySelector('.father')
			father.addEventListener(
				'click',
				function () {
					console.log('father')
				},
				false
			)
			document.addEventListener('click', function () {
				console.log('document')
			})
            //只打印出son
		</script>
	</body>
</html>

总结

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣学习前端知识

标签:function,知识点,记录,wm2,报文,SYN,loader,React,var
From: https://blog.51cto.com/u_14476028/6445808

相关文章

  • 记录一次 nas docker 运行出错 使用Python脚本检查错误并重启对应容器 npc 运行出
    importosimporttimeimportdatetimeimportsubprocessimportmysql.connector#Docker容器名称container_name="containerName"#MySQL数据库连接配置db_host="localhost"db_user="*********"db_password="*********"db_......
  • 【八股cover#1】MySQL Q&A与知识点
    MySQLQ&A与知识点1、基础知识什么是主键?它用来唯一标识一条记录(一个字段)。每个表都必须有且只能有一个主键,主键的取值不允许为空,而且在表中必须是唯一的(当然还可以有复合主键)。什么是索引?在MySQL中,索引是一种数据结构,用于加速数据库表中的数据检索。它可以看作是一个快速查......
  • Python爬虫基础知识点
    Python爬虫是使用Python编写的程序,可以自动抓取互联网上的数据。常用的Python爬虫框架包括Scrapy、BeautifulSoup、Requests等。Python爬虫可以应用于众多场合,如大数据分析、信息监测、数据挖掘和机器学习等领域。那么新手应该如何学习python爬虫呢?以下是Python爬虫的基础知识:1......
  • python爬虫学习记录
    浏览器工具web请求过程http协议数据解析目的提取有效的数据信息四种解析方式re解析:正则表达式解析,效率特别高bs4解析:老项目的解析方式xpath解析:高级,简单方便速度快pyquery解析:模仿前端的jQuery函数库的解析方式正则表达式RegularExpression一种使用表达式对字符......
  • React - 02 React的工程化/组件化开发
    我们可以基于webpack自己去搭建一套工程化打包的架子,但是这样非常的麻烦/复杂;React官方,为我们提供了一个脚手架:create-react-app!!脚手架:基于它创建项目,默认就把webpack的打包规则已经处理好了,把一些项目需要的基本文件也都创建好了!!1.create-react-app基础运用安装脚手架$npmicrea......
  • 数据库记录安全解决方案
    via: http://netkiller.github.io/journal/mysql.security.html 1. 什么是防删除,防撰改禁止数据删除,数据一旦增加不允许数据被任何人删除禁止数据修改,数据一旦建立不允许对数据做修改操作2. 为什么要做防删除,防撰改限制很多时候我们的数据是只增加,不会删除数据。有些敏......
  • SpringCloud必会知识点最全(精美版)
    为什么要学习SpringCloud在项目开发中随着业务越来越多,导致功能之间耦合性高、开发效率低、系统运行缓慢难以维护、不稳定。微服务架构可以解决这些问题,而SpringCloud是微服务架构最流行的实现.1.微服务微服务架构是使用一套小服务来开发单个应用的方式或途径,每个服务基于单一业......
  • 总结vue3 的一些知识点:MySQL 运算符
    MySQL运算符本章节我们主要介绍MySQL的运算符及运算符的优先级。MySQL主要有以下几种运算符:算术运算符比较运算符逻辑运算符位运算符算术运算符MySQL支持的算术运算符包括:运算符作用+加法-减法*乘法/或DIV除法%或MOD取余在除法......
  • 总结vue3 的一些知识点:MySQL NULL 值处理
    MySQLNULL值处理我们已经知道MySQL使用SQLSELECT命令及WHERE子句来读取数据表中的数据,但是当提供的查询条件字段为NULL时,该命令可能就无法正常工作。为了处理这种情况,MySQL提供了三大运算符:ISNULL: 当列的值是NULL,此运算符返回true。ISNOTNULL: 当列的......
  • 总结vue3 的一些知识点:MySQL 排序
    MySQL排序我们知道从MySQL表中使用SQLSELECT语句来读取数据。如果我们需要对读取的数据进行排序,我们就可以使用MySQL的 ORDERBY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。语法以下是SQLSELECT语句使用ORDERBY子句将查询数据排序后再返回......