近期分享学习心得2

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

1、获取某个日期位于当年的第几天

const dayOfYear = (date) =>
  Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24);
dayOfYear(new Date('2023,01,01'));

2、灰度算法

效果
实现
将RGB颜色灰度化(基于光感加权平均)

const gray = (r,g,b) =>0.2126*r+0.7152*g+0.0722*b;
gray(50,100,150);

3、对象picker实现

const pick=(obj,...props)=>Object.fromEntries(Object.entries(obj).filter(([k])=>props.includes(k)))
pick({a:1,b:2,c:3},'a','b')//{a: 1, b: 2}

Object.fromEntries扩展应用
fromEntries可以用来对象过滤,Map 转 Object,url的search参数转换

4、随机颜色

const randomColor=()=>'#'+Math.floor(Math.random()*0xffffff).toString(16).padEnd(6,'0')

//padEnd填充字符0,向前方补充至6位

5、随机字符串

const randomString=()=>Math.random().toString(36).slice(2)
//36进制由0-9,A-Z组成,toString(36)即转换成36进制的字符串,一般都是为了生成不重复的随机数才调用。
//.slice(2)是去掉0.

6、去掉元素标记

const removeTag=(fragment)=>new DOMParser().parseFromString(fragment,'text/html').body.textContent||''
removeTag('<em>DOMParser</em>')

7、禁用复制

监听copy事件,禁用默认行为
近期分享学习心得2,数据库,前端,javascript
如果想复制但是复制不了可以用这个
近期分享学习心得2,数据库,前端,javascript

8、JWT加密

以项目token为例
近期分享学习心得2,数据库,前端,javascript
近期分享学习心得2,数据库,前端,javascript
近期分享学习心得2,数据库,前端,javascript
近期分享学习心得2,数据库,前端,javascript

9、判断是否是async函数

近期分享学习心得2,数据库,前端,javascript
上面实现是小问题,主要是下面扩展
近期分享学习心得2,数据库,前端,javascript
因为有框选的属性存在,所以Object.prototype.toString.call后面那一段会改

在ES6里,存在这种改值方式
近期分享学习心得2,数据库,前端,javascript

10、判断一个值是否是Promise Like

function promiseLike(value){
	return value!==null&&(typeof value==='object' ||typeof value==='function')&&(typeof value.then==='function')
}

所有promise都是promise A+规范的实现,jQuery的$.ajax也是
?根据规范,promise A+是一个对象或函数,且value不等于null
近期分享学习心得2,数据库,前端,javascript

11、判断是否是奇数

function isOdd(value){
	return value%2===1 || value%2===-1
}

需要考虑数是任意值时,做什么处理,
比方说假如这个数是负数,用欧几里得的求余法,即

a % b = a - b * p
//p为a/b的整数部分

还有一个可以考虑到的是,假如传入true
近期分享学习心得2,数据库,前端,javascript

12、代码着色

第三方库highlight.js,最好手动告诉这一块代码是什么语言
分析原理↓
给代码最外部元素设置两个样式hls和根据不同语言带的css(如language-css),
然后里面递归替换

近期分享学习心得2,数据库,前端,javascript
近期分享学习心得2,数据库,前端,javascript

value就可以直接插入

13、promise回调地狱

promise嵌套多重,则需要平级展开,链式.then

14、方法传入参数过多可以这么改

近期分享学习心得2,数据库,前端,javascript

15、Switch优化成映射

近期分享学习心得2,数据库,前端,javascript
近期分享学习心得2,数据库,前端,javascript
??
https://blog.csdn.net/yun_master/article/details/115015113

16、搜索框封装

假如有朝一日需要自己实现表单,最好使用@submit提交,button上写明type=“submit”

console去除工具terser

17、无痕窗口真的无痕吗

浏览器指纹,全世界很难找出两个完全一样的设备环境(ip,浏览器版本,浏览器语言偏好,时区),通过这些信息生成哈希值,尽管无痕没有任何登录,他也能知道是谁

应用是,个性化广告,防刷频
读取用户文件指纹,用fingerprintjs

18、几个HTML不常用属性

1、移动端键盘弹出类型inputmode
2、视频预览图片

<video src="" poster="图片地址"></video>

3、multiple,文件多选,下拉多选
近期分享学习心得2,数据库,前端,javascript
4、accesskey,按下b可以聚焦

<input type="text" accesskey="b">

4、tableindex,按下tab的切换顺序

<input type="text" tabindex="3">
<input type="text" tabindex="2">
<input type="text" tabindex="1">

5、spellcheck拼写检查,通常用于富文本
近期分享学习心得2,数据库,前端,javascript

19、资源提示符

rel后的总共有
async
defer
preload
prefetch
prerender
preconnect

前两个是附着在script元素上的

遇到script暂停解析,通过另一个网络线程,去远程获取js文件,再去执行js,完成同步代码后,继续解析dom。主线程会有空窗期。一般js写在body元素末尾,保证dom解析完后执行js,现在有两个更好的办法:
遇到script,去远程获取js文件,不会暂停解析
1、async
这个不一定dom全部加载完成
近期分享学习心得2,数据库,前端,javascript
2、defer
有点像DOMContentLoaded,主线程把dom元素全部解析完成后,再去运行js。这个一定是dom完成了
近期分享学习心得2,数据库,前端,javascript

async和defer发生时间是在DOMContentLoaded之前

<script type="module">
他的资源提示符默认就是defer

——————
link元素上的资源提示符,preload和prefetch

<link rel="preload">

async和defer是拿资源并且要执行,preload和prefetch是拿资源但是不执行,可以拿任何资源js css和图片
1、preload
不会阻塞dom解析,会有缓存,优先级很高,这个资源马上会用到,发出的网络请求时间很早
近期分享学习心得2,数据库,前端,javascript
2、prefetch
优先级低,会在空闲的时候去取
近期分享学习心得2,数据库,前端,javascript
其他页面用到的,preload,自身页面用到的prefetch,闲着也是闲着

20、找到性能瓶颈

近期分享学习心得2,数据库,前端,javascript
Main表示渲染主线程
近期分享学习心得2,数据库,前端,javascript
一个方格就是一个任务,红色三角表示卡顿
纵向是调用栈
近期分享学习心得2,数据库,前端,javascript

21、打包体积的分析优化

package.json
"build": "vue-cli-service build --mode prod --report"

1、cdn优化,使用cdn服务器,跨项目的共享同一个js,js一般设置缓存。用户访问第一个项目,缓存一下,第二个项目就不用重新加载js
生产环境引入cdn写法
近期分享学习心得2,数据库,前端,javascript
生产环境不参入打包的写法
externals
近期分享学习心得2,数据库,前端,javascript
2、core.js体积也很大,是因为项目里有babel,对项目进行向下降级,es5向下
生成两套打包,一套针对高级浏览器,一套针对低级IE浏览器
近期分享学习心得2,数据库,前端,javascript
红框加上后会进行两次打包,
高版本的打包里部分script上有nomodule属性,直接不加载
低版本 type="module"不认识,不加载,低版本不认识nomodule,忽略,从而去加载

22、幻影依赖

在package.json根本没有导入的库,可以直接import
1、A依赖B库,A库升级,B库也莫名其妙升级
2、依赖丢失,开发依赖有,生产依赖没有

幻影依赖的原因:
近期分享学习心得2,数据库,前端,javascript
1、node_module是树结构,如上图红圈所示,本来一个就结束的依赖,树状结构必须两个
2、所以后来出现了yarn
近期分享学习心得2,数据库,前端,javascript
node js有个查询报的流程,比方说,紫色依赖深绿和深蓝,它的代码在require或者import时,在自身目录找不到,它就会往上找,但是这样还是有幻影依赖,因此有了pnpm
3、pnpm
虽然是树状,但是通过链接的方式
近期分享学习心得2,数据库,前端,javascript
pnpm为什么能够不占磁盘空间?硬链接和软链接
近期分享学习心得2,数据库,前端,javascript
我们的文件数据都存在磁盘上,创建了文件,分配了个磁盘空间,这个文件是个指针指向磁盘空间,通过文件A创建硬链接,生成文件B,因为是硬链接,所以,B同A,A文件没了不会影响B
软链接类似快捷方式,B指向的是文件A,A文件没了影响B

23、取色器

近期分享学习心得2,数据库,前端,javascript

<style>
        body{
            background: url(https://i.loli.net/2019/11/17/GAYyzeKsiWjP5qO.jpg) no-repeat;
        }
        .box {
            width: 100px;
            height: 100px;
        }
    </style>
    <button id="start-button">取色</button>
    <div class="box"></div>
    <script>
        const btn = document.querySelector('button')
        const box = document.querySelector('.box')

        btn.onclick = async () => {
            if (!window.EyeDropper) {
                box.textContent = 'Your browser does not support the EyeDropper API';
                return;
            }
            const dropper = new EyeDropper()
            try {
                const result = await dropper.open()
                console.log(result)
                box.style.backgroundColor = box.textContent = result.sRGBHex;
            } catch (e) {
                console.log('user canceled')//按了esc
            }
        }
    </script>

24、lorem

p*5>lorem1
https://picsum.photos/
https://picsum.photos/200/300,随机生成300宽200高图片
https://picsum.photos/200/300?r=1,加参数则生成不同图片

25、cookie

设置cookie的时候会去设置一个SameSite属性
它的作用就是限制跨站请求,img、iframe、Ajax,假如img之前浏览过相关网站,很有可能就有对应的cookie,没有sameSite就会默认发送其他iframe、Ajax的cookie,会造成CSRF攻击
请求的地址和页面地址不一样,就需要用到SameSite,会对请求做出限制,限制cookie发还是不发

同站不受sameSite限制,第五个是公共后缀问题
近期分享学习心得2,数据库,前端,javascript
具体是怎么限制的呢?
SameSite为none时,在set-cookie时候,cookie必须为secure(https)传输,否则无效,会造成CSRF攻击
SameSite为Lax时,宽松,会阻止所有的跨站请求,阻止发送cookie,但对超链接放行
SameSite为Strict时,会阻止所有的跨站请求,阻止发送cookie,

因为就算重定向到了新的网站,但是上一个网站的cookie还是发送到新网站了。如果新网站是恶意网站,它就可以利用这个正确的cookie伪造用户身份。

26、公共后缀

近期分享学习心得2,数据库,前端,javascript
站点域是xxx.公共后缀

27、控制台动画

近期分享学习心得2,数据库,前端,javascript
近期分享学习心得2,数据库,前端,javascript

28、版本号正则

近期分享学习心得2,数据库,前端,javascript

29、埋点

数据埋点是为了监控服务的,监控用户行为,收集各种报错信息
三种服务监控:错误监控、性能监控(白屏FP、卡顿、FCP、LCS)、行为监控
https://zhuanlan.zhihu.com/p/265948624
网络传输给监控中心,可能会有预警
阿里云的ARMS,神策,sentry
数据埋点分为侵入(技术代价大)和非侵入(我们对接的浙政钉专有钉钉都是非侵入)

30、web性能指标

RAIL模型,
近期分享学习心得2,数据库,前端,javascript

缩写 全称 描述
R Response 在100ms内响应用户的操作。
虽说是100ms,但预算只有50ms,因为浏览器内部还有很多工作需要预留时间。
A Animation 在使用动画时,需要保证有60FPS,换算下来也就是16ms处理1帧(1000ms/60FPS)才不会让用户感觉到卡顿。
同样的,浏览器大概需要花费6ms来渲染1帧,因此只有10ms以内的时间。
I Idle 预留空闲时间,最大化利用空闲时间,以便于可以在50ms内响应用户的操作。
L Load 3g网络的情况下,首次加载需要在5s之内加载网站并可以让用户进行交互。而在后续的加载中,则是2s。

https://web.dev/fcp/
列了部分指标

名称 描述
FCP 首次内容加载时间
LCP 最大内容绘制时间
CLS 累计偏移
TBT 总阻塞时间

31、i18n、L10n、g11n

i18n国际化,internationalization
L10n本地化,localization
g11n全球化,globalization
不仅仅是翻译,
1、文字表达,大陆区是程序,台湾是程式,繁体简体
2、数字表达,货币书写,每三个空一格,我们是每四个空一格
3、敏感词
4、配色
5、布局,部分国家从右到左,确认和取消按钮
6、单击双击
7、落后国家,电脑屏幕小,布局、交互都有区别
等等…
获取地域信息,可以从http头里的accept-lang,或者是h5里面的navigator.language

vuei18n工具

32、publicPath和base

静态资源路径配置
publicPath: ‘/admin’,//是加在部署地址后的。协议域名端口+/rxlz+资源地址css/js
近期分享学习心得2,数据库,前端,javascript
路由路径配置,加在路由地址前
base: “/admin”,

33、垃圾回收和内存泄露

一个应用程序,运行过程中一定需要内存,但是运行完这块内存不需要了,需要垃圾回收机制,
但是问题是,根本没有垃圾回收器这种东西去回收内存,
它无法理解哪一块代码需要,哪一块代码不需要,
垃圾回收器的范围<垃圾,所以会有多余的内存

垃圾回收不掉,内存泄漏
算法
1、引用计数(会导致垃圾回收器的范围更小,所以不怎么用)
2、标记清除,(新生代/旧生代,星历图)

跟内存泄露有关的闭包,原因就是它无法理解是否还需要这个变量

34、DNS解析和优化

近期分享学习心得2,数据库,前端,javascript
DNS解析过程耗费时间,有本地缓存
近期分享学习心得2,数据库,前端,javascript
解析DNS会打断解析HTML
近期分享学习心得2,数据库,前端,javascript
异步DNS解析,不在主线程解析

//在head里面尽早写明
<link rel="dns-prefetch" href="https://www.baidu.com">

后面nodejs没看懂
https://www.douyin.com/user/self?modal_id=7233335691046980921&showTab=favorite_collection

35、私有字段

老版私有字段,包括Vue也是这么写
近期分享学习心得2,数据库,前端,javascript
es6 Symbol
新版的私有字段,加#
近期分享学习心得2,数据库,前端,javascript
a.#abc会报错
近期分享学习心得2,数据库,前端,javascript

36、行为验证码

行为验证码验证是要放在服务器端而不是客户端,因为有OCR识别,所以验证码升级
google/recaptcha
现在点击验证码会把人工识别结果作为AI训练的工作集

37、轮播图

<!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>
<style>
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }

    .container {
        width: 500px;
        height: 300px;
        margin: 10px auto;
        overflow: hidden;
        position: relative;
    }

    .container .carousel img {
        width: 500px;
        height: 300px;
    }

    .carousel {
        width: 100%;
        height: 100%;
        display: flex;
        /* transition: all .5s; */
    }

    .indicator {
        position: absolute;
        bottom: 10px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        z-index: 2;
    }

    .indicator span {
        width: 20px;
        height: 20px;
        border: 2px solid #ccc;
        margin: 0 3px;
        border-radius: 50%;
        cursor: pointer;
    }

    .indicator .active {
        background-color: #fff;
        border-color: #fff;
    }

    .arrow {
        width: 100%;
        height: 100%;
        padding: 0 20px;
        position: absolute;
        top: 0;
        left: 0;
        display: flex;
        align-items: center;
        justify-content: space-between;
    }

    .arrow img {
        width: 30px;
        height: 30px;
        cursor: pointer;
    }
</style>

<body>
<!--  -->
<div class="container"  onmouseout="outClick()" onmouseover="οnmοuseοver()">
    <div class="carousel">
        <div class="item">
            <img src="https://picsum.photos/300/200?r=1" alt="">
        </div>
        <div class="item">
            <img src="https://picsum.photos/300/200?r=2" alt="">
        </div>
        <div class="item">
            <img src="https://picsum.photos/300/200?r=3" alt="">
        </div>
        <div class="item">
            <img src="https://picsum.photos/300/200?r=4" alt="">
        </div>
        <div class="item">
            <img src="https://picsum.photos/300/200?r=5" alt="">
        </div>
        <div class="item">
            <img src="https://picsum.photos/300/200?r=6" alt="">
        </div>
    </div>
    <div class="indicator">
        <span class="active"></span>
        <span></span>
        <span></span>
        <span></span>
    </div>
    <div class="arrow">
        <img src="./left.png" alt="" class="arrow-left">
        <img src="./right.png" alt="" class="arrow-right">
    </div>
</div>
<script>
    // 定义一个当前选中第几张图片的index(默认选中第一个)
    let currIndex=0
    // 定义一个定时器对象
    let  interObj=null
    //  获取相关元素
    let doms={
        arrowLeft:document.querySelector('.arrow-left'),//左箭头
        arrowRight:document.querySelector('.arrow-right'),//右箭头
        indicator:document.querySelectorAll('.indicator span'),//所有的指示器按钮
        carousel:document.querySelector('.carousel'),//轮播图容器
    }
    // 初始化轮播图
    function init(){
        // 将第一张图片实行定位使其脱离文档流,并且使相对轮播图容器其往左移动一张图片的单位
        document.querySelectorAll('.carousel .item')[0].style.transform='translateX(-100%)';
        document.querySelectorAll('.carousel .item')[0].style.position='absolute';
    }
    init()

    // 定义轮播图滚动的方法,并接收当前处于第几张图片的参数
    function moveTo(index){
        // 进行轮播图容器位置移动
        doms.carousel.style.transform=`translateX(-${index}00%)`
        //添加过渡  /* transition: all .5s; */
        doms.carousel.style.transition='all .5s'
        // 去除前一个选中的指示点
        let active=document.querySelector('.active')
        active.classList.remove('active')
        // 添加当前选中的指示器
        doms.indicator[index].classList.add('active')
        currIndex=index
    }
    // 对指示器添加点击方法
    doms.indicator.forEach((item,index)=>{
        item.onclick=function(){
            moveTo(index)
        }
    })
    // 定义向左滚动的方法
    function leftNext(){
        // 先判断当前选中的是否是处于0这个位置
        if(currIndex==0){
            // 将轮播图容器迅速至于最后一张图的位置
            doms.carousel.style.transform=`translateX(-${doms.indicator.length}00%)`
            // 去除过渡
            doms.carousel.style.transition='none'
            // 由于快速的更新css样式,浏览器来不及渲染,所以需要强制使浏览器进行渲染
            // 强制渲染
            // 只要读取元素的尺寸,位置就会导致浏览器的回流,这一回流就会重新渲染
            doms.carousel.clientHeight;
            moveTo(doms.indicator.length-1)
        }else{
            moveTo(currIndex-1)
        }
    }
    // 定义向右滚动的方法
    function rightNext(){
        // 先判断当前选中的是否是处于最后的位置
        if(currIndex==doms.indicator.length-1){
            // 将轮播图容器迅速至于第一张的位置
            doms.carousel.style.transform=`translateX(100%)`
            // 去除过渡
            doms.carousel.style.transition='none'
            // 由于快速的更新css样式,浏览器来不及渲染,所以需要强制使浏览器进行渲染
            // 强制渲染
            // 只要读取元素的尺寸,位置就会导致浏览器的回流,这一回流就会重新渲染
            doms.carousel.clientHeight;
            moveTo(0)
        }else{
            moveTo(currIndex+1)
        }
    }
    // 给左右箭头添加点击事件
    doms.arrowLeft.onclick=leftNext
    doms.arrowRight.onclick=rightNext

    // 定义自动轮播的方法
    function pollingInt(){
        interObj=setInterval(()=>{
            rightNext()
        },2000)
    }

    pollingInt()
    // 鼠标移出,打开定时器
    function outClick(){
        pollingInt()
    }
    // 鼠标移入,清楚定时器
    function οnmοuseοver(){
        clearInterval(interObj)
    }
</script>
</body>

</html>

38、function和class互转

60分答卷
近期分享学习心得2,数据库,前端,javascript
满分这么转换

//在ES6里面用类语法,整个代码是在严格模式下
"use strict";
//在类里,只能通过new Example来调用,不能通过Example('abc')来调用
function Example(name){
	if(!(this inctance Example)){//this是构造函数的实例
		throw new TypeError(`Class constructor Example cannot be invoked without 'new'`)
	}
	
	this.name=name
}
//Example.prototype.func=function(){//类里面的方法func不能被枚举,
//	console.log(this.name)
//}
Object.defineProperty(Example.prototype.func,'func',{
	value:()=>{
		if(!(this inctance Example)){//不可通过new调用,看this指向,正常情况下指向构造函数的实例
			throw new TypeError(`is not a constructor`)
		}
		console.log(this.name)
	},
	enumerable:false//不能被枚举
})

Example(‘abc’)直接调用报错
近期分享学习心得2,数据库,前端,javascript
枚举差异,类里面的方法func不能被枚举
近期分享学习心得2,数据库,前端,javascript
在类里面不能↓
近期分享学习心得2,数据库,前端,javascript

39、promise手动实现

class MyPromise{
    constructor(executor){
        const resolve=()=>{}
        const reject=()=>{}
        executor(resolve,reject)
    }
    resolve(){//放在原型链上是不太合适的。this会有问题
        
    }
}

const p=new Promise((resolve,reject)=>{//要启动promise,就是启动任务,就是这个函数,即执行器,这一块同步
    resolve(1)
})

40、flex一些不怎么用的属性

align-self独自
order排序
flex-flow: column wrap
align-content整体
flex-wrap:wrap-reverse

41、判断是不是数组(优缺点)

已知三种
1、Object.prototype.toString.call()

function(arr){
	return Object.prototype.toString.call(arr)==='[object Array]'
}

现在判断会有缺陷,以下obj返回true,可以手动修改值

const obj={
	[Symbol.toStringTag]:'Array'
}

2、arr instanceof Array
判断对象原型链上有没有array的原型

优点是可以对原型链上的,精准判断类型

class A extends Array{}
const obj=new A()

obj instanceof Array//true

缺点是
①改变对象原型为数组原型

const obj={}
Object.setPrototypeOf(obj,Array.prototype)//改变对象原型,true

②iframe
iframe会在页面生成独立的一套documents还有window

const Array1=window.array;
const iframe=document.querySelector('iframe')
const Array2=iframe.contentWindow.Array

Array1===Array2//false
//会导致
const arr =new Array2()
//arr instanceof Array//false,因为读的是window里面的Array而不是iframe里的Array

数组是一个特殊存储结构的对象
3、Array.isArray
判断有没有经过Array的构造函数

42、filter过滤改成find直接获取对象,调整书写习惯

43、开源库中的package.json

字段分为
1、标准字段,npm或者node官方能识别的字段
近期分享学习心得2,数据库,前端,javascript
main字段会影响node模块的查找,导入一个包的时候,无论是使用import导入还是require导入(第44点),他会找到文件夹里的package.json,然后找到main字段,读取到底用的是哪个模块
近期分享学习心得2,数据库,前端,javascript
标准字段,开发完的发布文件/文件夹
近期分享学习心得2,数据库,前端,javascript
会影响到npm上的搜索结果
近期分享学习心得2,数据库,前端,javascript
作者、证书、bug反馈
近期分享学习心得2,数据库,前端,javascript
影响一个npm展示插件主页的地方
近期分享学习心得2,数据库,前端,javascript

2、非标准字段,开发者自行扩展的字段
近期分享学习心得2,数据库,前端,javascript
module是非标字段,webpack rollup这些构建工具会读,往往需要树摇,假如它们读main,有可能会读到一个已经被降级的代码(es6转es5),并不是esmodule,不利于树摇优化,有没有支持ESmodule的一个文件,假如有就会去读这个文件去树摇优化
近期分享学习心得2,数据库,前端,javascript
给ts使用的非标字段,可以读到包里的类型定义文件
近期分享学习心得2,数据库,前端,javascript
buildOptions是第三方插件,比如Vue,自定义的非标字段,会影响到rollup打包的参数,formats,表示打包的时候要打包成两种格式
近期分享学习心得2,数据库,前端,javascript
给构建工具看的,标识包里面的副作用
近期分享学习心得2,数据库,前端,javascript
单纯提供信息,展示仓库,仓库目录

44、node模块查找方式

模块查找有两种方式,一种是classic,一种是node
node模块查找分四种:
1、文件查找
./或者…/或者/,进入文件查找,假如文件不存在,自动补上.js再去搜索,然后是补上.json再去搜索,假如都没有进入第二步
2、文件夹查找
查找package.json文件,看文件配置有没有main,看main写的文件能否找到,假如失败,直接查找index.js,或者index.json

3、内置模块
先查看是不是内置模块,fs、path、http等,require(‘fs’)
4、第三方模块
require(‘a’)
近期分享学习心得2,数据库,前端,javascript
会从node_module里去找,假如有就去看a有没有,假如没有就会往上级去找,又会进入1和2的循环

45、渐进式图片

1、原生
图片本身就支持渐进式
jpg图片,本身就支持多个帧,第一帧是比较小的内容,第二帧是清晰的内容,
即使做成渐进式,文件大小不会增加多少

1)兼容性问题,有些浏览器不支持
2)没有图片源
2、封装
近期分享学习心得2,数据库,前端,javascript
传子组件一张清晰一张模糊
子组件↓
近期分享学习心得2,数据库,前端,javascript
近期分享学习心得2,数据库,前端,javascript
近期分享学习心得2,数据库,前端,javascript
近期分享学习心得2,数据库,前端,javascript

46、打印对象的bug

近期分享学习心得2,数据库,前端,javascript
两次打印都是2、2,为什么?
浏览器做的小处理,为了节省内存空间,不会吧对象所有内容展示出来,而是折叠展示,第一次点击的时候才会去计算
假如收起来,再进行++,再展开又是加完后的数了,假如再收起来,结果就不变了,后面复用了

结论是,调试用断点

47、ES2023中的数组纯函数

近期分享学习心得2,数据库,前端,javascript
原数组会变化,函数式编程环境我们不希望变化,数据不可变
近期分享学习心得2,数据库,前端,javascript
原数组不变
除此之外还有toSorted、toReversed、toSpliced

新增with方法
近期分享学习心得2,数据库,前端,javascript

48、动态执行js

字符串当成js来执行
近期分享学习心得2,数据库,前端,javascript
1、eval
近期分享学习心得2,数据库,前端,javascript
同步代码,当前作用域,先2再sync
近期分享学习心得2,数据库,前端,javascript
2、setTimeOut

setTimeOut(code,0)

异步,全局作用域,先sync再1
3、创建script元素
近期分享学习心得2,数据库,前端,javascript
同步,全局作用域,先1再sync,额外标签
4、创建function
近期分享学习心得2,数据库,前端,javascript

创建了这个函数的函数体
同步,全局作用域,先1再sync,这个和3一样,更好一点

49、使修改数组本身的方法,不修改数组本身

之前没有ES2023的时候,思路都是创建副本

const sorted1 = arr.slice().sort();
const sorted2 = [...arr].sort();
const sorted3 = Array.from(arr).sort();

50、对鄙人来说冷门的css选择器

2020年
::focus-with,能非常方便处理获取焦点状态, 当元素本身或其后代获得焦点时,:focus-within伪类的元素就会有效。
近期分享学习心得2,数据库,前端,javascript
:has
需求是,span元素后的兄弟元素带有自定义属性data-required才打*
近期分享学习心得2,数据库,前端,javascript
近期分享学习心得2,数据库,前端,javascript
::first-letter,首字母下沉
近期分享学习心得2,数据库,前端,javascript
::selection,选中文字后的样式
近期分享学习心得2,数据库,前端,javascript
:where简化css重复代码,:has和:is
此文必看醍醐灌顶,部分属性在scope里无法作用是因为并没有 data-v-xxx 这样的随机属性
https://blog.csdn.net/qq_43624878/article/details/127045426文章来源地址https://www.toymoban.com/news/detail-621472.html

到了这里,关于近期分享学习心得2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • javascript 操作mysql数据库

    目录 一:Javascript访问MYSQL 二:JavaScript中操作Mysql数据库实例 1、下载MYSQL的ODBC连接 2、在JS中建立ODBC连接如下:         需要注意连接字符串中Driver的名称与安装后的ODBC中的Drivers页中的MYSQL名称一致即可! [js]  view plain  copy         JavaScript DataBase Connector       

    2024年02月03日
    浏览(24)
  • SQL Server 数据库优化分享

           随着数据量和业务复杂性的增加,数据库优化变得越来越重要。通过对 SQL Server 数据库进行优化,您可以提高查询性能、减少资源消耗,从而改善整体系统性能。以下是一些优化技巧,可帮助您实现更高效、更可靠的数据库操作。 使用恰当的索引: 索引是一种提供快

    2024年02月11日
    浏览(33)
  • 数据库管理系统(基于前端+后端+数据库)

      库存管理系统 包括模块: (1)基本信息管理。 (2)商品入库管理。 (3)商品出库管理。 (4)商品查询管理。 (5)查看商品目录。 实训步骤: 开发环境:html , css , js , python,Mysql,pycharm 需求分析: 和其他数据库系统相比, MySQL 有点与众不同,它的架构可以在多种

    2024年02月04日
    浏览(57)
  • 数据库模型设计案例分享(GaussDB版)

    目录 一、前言 二、应用系统数据库设计的基本流程 三、数据库模型设计 1、概念结构设计阶段 2、逻辑结构设计阶段 3、物理结构设计阶段 四、小结 GaussDB数据库是一款企业级分布式数据库,支持集中式和分布式两种部署形态。它面向金融互联网交易和政企OA/办公等场景,具

    2024年02月10日
    浏览(25)
  • 百万级sql server数据库优化案例分享

            在我们的IT职业生涯中,能有一次百万级的数据库的优化经历是很难得的,如果你遇到了恭喜你,你的职业生涯将会更加完美,如果你遇到并解决了,那么一定足够你炫耀很多年。         这里我将要分享一次完美的百万级数据库优化经历,希望能给在IT行业的小

    2024年02月17日
    浏览(51)
  • 7个工程应用中数据库性能优化经验分享

    摘要: 此篇文章分别从sql执行过程、执行计划、索引数据结构、索引查询提速原理、聚焦索引、左前缀优化原则、自增主键索引这些角度谈一谈我们对数据库优化的理解。 本文分享自华为云社区《工程应用中数据库性能优化经验小结》,作者: 叶工 。 现阶段交付的算法产

    2024年02月06日
    浏览(39)
  • 前端数据库indexedDB入门

    阮一峰老师的分享文档:浏览器数据库 IndexedDB 入门教程 - 阮一峰的网络日志 官方API文档,纯英文,不过提供的代码很有用:Indexed Database API 3.0         indexDB是HTML5的新概念,indexedDB是一个用于在浏览器中存储较大数据结构的Web API, 并且提供了索引功能以实现高性能查找

    2023年04月08日
    浏览(30)
  • 前端数据库与缓存实践

    前端数据库与缓存技术在现代网络应用中发挥着越来越重要的作用。随着前端技术的不断发展,前端数据库和缓存技术也在不断发展和进化。这篇文章将从以下几个方面进行阐述: 背景介绍 核心概念与联系 核心算法原理和具体操作步骤以及数学模型公式详细讲解 具体代码实

    2024年02月21日
    浏览(27)
  • 数据库设计与前端框架

    学习目标: 理解多租户的数据库设计方案 熟练使用PowerDesigner构建数据库模型理解前端工程的基本架构和执行流程 完成前端工程企业模块开发 多租户技术(Multi-TenancyTechnology)又称多重租赁技术:是一种软件架构技术,是实现如何在多用户环境下 (此处的多用户一般是面向

    2024年02月01日
    浏览(26)
  • RabbitMQ实现数据库与ElasticSearch的数据同步和分享文件过期处理

    RabbitMQ实现数据库与ElasticSearch的数据同步 | Hannya。-CSDN 企业级开发项目实战——基于RabbitMQ实现数据库、elasticsearch的数据同步 | 波总说先赚它一个小目标-CSDN SPringBoot集成RabbitMQ实现30秒过期删除功能 | 军大君-CSDN 当进行文件上传、文件创建、文件重命名等操作时: 通过Rabbit

    2024年02月09日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包