- 博客(13)
- 收藏
- 关注
原创 浏览器的多进程与js单线程
浏览器的多进程包括:1.Browser进程:浏览器的主进程(负责协调、主控),只有一个2.第三方插件进程:每种类型的插件对应一个进程,仅当使用该插件时才创建3.GPU进程:最多一个,用于3D绘制等4.浏览器渲染进程(浏览器内核内部是多线程的):默认每个Tab页面一个进程,互不影响。浏览器渲染进程包括:GUI渲染线程 JS引擎线程 事件触发线程 定时器触发线程 异步http请求线程GUI渲染线程:负责浏览器渲染,重排重绘。注意,GUI渲染线程与JS引擎线程是互斥的,当JS
2021-08-31 19:29:13
345
原创 浏览器缓存机制
浏览器缓存机制一、使用meta标签<meta http-equiv="Pragma" content="no-cache"><!- Pragma是http1.0版本中给客户端设定缓存方式之一 -->上述代码的作用是告诉浏览器当前页面不被缓存,每次访问都需要去服务器拉取。使用上很简单,但只有部分浏览器可以支持,而且所有缓存代理服务器都不支持,因为代理不解析HTML内容本身。二、使用缓存有关的HTTP消息报头1.Expires策略:(1)是HTTP 1...
2021-08-24 11:23:07
349
原创 js事件循环——看输出顺序
js事件循环:由于js是单线程的,同一时间只能干一件事情,当期宿主环境为浏览器时,若一个任务耗时过长会导致页面阻塞。因此有了js事件循环机制,它将任务分成同步任务和异步任务,同步任务在主线程不断执行,异步任务进入任务队列,当同步任务执行完主栈为空时,就去任务队列读取异步任务执行,这个不断循环的过程称为事件循环。1.promise:微任务,进入微任务队列,在本轮事件循环中执行,例如:new Promise(function(resolve) { console.log('promis
2021-08-22 16:45:43
510
原创 手写防抖和节流中的一些细节
使用函数节流与函数防抖的目的,就是为了节约计算机资源,提升用户体验。js中的一些事件如浏览器的resize、scroll,鼠标的mousemove、mouseover,input输入框的keypress等事件在触发时,会不断地调用绑定在事件上的回调函数,极大地浪费资源,降低前端性能。为了优化体验,需要对这类事件进行调用次数的限制。防抖:短时间内大量触发,但只执行一次。原理:设置定时器,delay时间后执行事件处理,期间每次触发事件都会将定时器重置,直到delay时间内无第二次事件触发。functi
2021-08-06 14:27:55
271
原创 node定时任务(node-schedule模块)
实现一个每天凌晨十二点更新服务器上的git代码的功能koa2框架下的app.js文件import schedule from 'node-schedule';import updateCode from './controllers/hcpLan/fetch'const app = new Koa();const router = new Router();router.get( '/', (ctx, next) => { ctx.body = 'hello'})
2021-08-05 15:52:48
4434
原创 Git操作
1.直接手动在仓库中下载zip,解压后在文件夹创建本地仓库git init(初始化仓库)——>git add .(将所有文件加入仓库)——>git status(查看暂存区和工作区的状态)——>git commit -m 'first commit'(将暂存区的修改添加到工作区)若果远程仓库出现修改,需要拉取代码时,由于本地仓库和远程仓库是独立的两个仓库,拥有不同的history,因此需要以下操作:git remote add origin 远程仓库地址(关联远程仓库)——&g
2021-07-28 14:59:41
1745
原创 koa简介
express都没学,因为项目看起了koa的菜鸟飘过~优点:koa作为新一代的框架,由开发express的原班人马打造,支持ES7 async/await,抛弃回调函数,在写法上更自然。使用 Koa编写 web 应用,可以免除重复繁琐的回调函数嵌套, 并极大地提升错误处理的效率。Koa不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手,开发思路和 Express 差不多,最大的特点就是可以避免异步嵌套。一.如何利用koa实现一个接口1.初体.
2021-07-17 17:45:48
780
原创 node模块使用记录(fs,fs-extra,path,compressing...)
项目中好多后台文件处理代码要自己写,记录一下常用库啦~一、fs文件读写库,最常用的api有(1)readdirSync(path)同步读取文件夹,返回path下所有文件名(2)readFileSync(path,'utf-8')同步读取文件,返回读取的文件内容(3)fs.stat来个自己写的递归找目标文件夹的例子:二、fs-extra模块是fs模块的扩展,提供了更多便利的 API,并继承了fs模块的 API(1)ensureDir (path)创建目录:promise风格异步。确
2021-07-17 10:27:33
1012
原创 json字符串解析碰到的巨坑
最近项目,后台要去读取大量json文件,而这些json文件里面又有各种奇奇怪怪的字符,折磨了我一星期。记录一下坑点:1.JSON.parse()2.正则匹配相关
2021-07-15 23:12:47
780
原创 利用FormData对象上传表单数据
今天在做项目中表单数据上传的时候又遇到了坑,此处记录一下。content-type请求头表单数据上传一般发送post请求,post请求中有个重要的请求头叫content-type,用于表明发送数据流的类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据。常用的有以下几种类型:1.application/x-www-form-urlencoded:(1)最常见的 POST 提交数据的方式。(2)原生 <form> 表单,如果不设置enctype属性,那么最终就会...
2021-07-01 19:57:02
625
原创 前端路由与后端路由
只要在浏览器地址栏输入URL再回车,是一定会去后端服务器请求一次的。而如果是在页面里通过点击按钮等操作,利用router库的api来进行的URL更新是不会去后端服务器请求的。
2021-06-28 15:09:39
601
原创 表单提交的两种方式
1.type="submit"方式优点:简单,可以上传附件缺点:数据是单向的传递的,无法获取服务端传回来的信息,因此难以实现一些在数据传过去但服务器还未处理成功返回响应的中间状态界面。(1)使用form表单进行上传文件需要为form添加enctype=”multipart/form-data” 属性,除此之外还需要将表单的提交方法改成post,method=”post”, input type的类型需要设置为file(2)input的submit按钮会导致表单提交和页面跳转,即使acti..
2021-06-24 14:21:58
6706
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人