js模块化

序言

javascript一直没有模块(module)的体系, 无法将一个大程序拆分成为互相依赖的小文件,再用很简单的方法将他们拼接起来。,随着web2.0时代的到来,Ajax技术得到广泛应用,前端代码日益膨胀,此时在JS方面就会考虑使用模块化规范去管理。

阅读更多...

Event-Loop

序言

进程与线程

本质上讲,进程和线程都是对于CPU 工作时间片的一个描述
进程就是对程序动态执行的描述, 线程是进程中的更小单位,描述了执行一段指令所需的时间

把这些概念拿到浏览器中来说,当你打开一个 Tab 页时,其实就是创建了一个进程,一个进程中可以有多个线程,比如渲染线程、JS 引擎线程、HTTP 请求线程等等。当你发起一个请求时,其实就是创建了一个线程,当请求结束后,该线程可能就会被销毁

JavaScript 是一门 单线程语言,即同一时间只能执行一个任务,即代码执行是同步并且阻塞的。这一点很好理解,例如浏览器内核的渲染引擎和JS引擎,在执行过程中渲染线程和JS线程就是互斥的

这其中的原因是因为 JS 可以修改 DOM,如果在 JS 执行的时候 UI 线程还在工作,就可能导致不能安全的渲染 UI。这其实也是一个单线程的好处,得益于 JS 是单线程运行的,可以达到节省内存,节约上下文切换时间,没有锁的问题的好处

但是,只能同步执行在实际应用中肯定是有问题的,所以 JS 有了一个用来实现异步的函数:setTimeout
而Event Loop 就是为了确保 异步代码 可以在 同步代码 执行后继续执行的。

阅读更多...

http

Http简述

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议工作于客户端-服务端架构为上浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息

阅读更多...

axios请求带cookie

axios请求默认不带cookie

axios默认是发送请求的时候不会带上cookie的,这导致当服务器使用session来保存登录态时,客户端永远无法登陆的情况。

1
2
3
import axios from 'axios'; // 引入axios

axios.defaults.withCredentials = true; // 允许携带cookie

这样即可解决

react-hook中数组state的更新

关于react hook中数组state的更新

react hook只用了useState钩子函数来给函数(无状态)组件添加状态,今天在写一个小应用的时候就遇到了问题,我设置了一个状态为messagearr数组用来存储当前收到的消息,默认为空。当接收到新消息,则使用setMessagearr进行更新,但却遇到了问题
我们已经知道react hook更新数组不是往原数组里添加项目,而是要用一个新数组完全替代,所以不能直接这样写

messagearr.push(newitem)
setMessagearr(messagearr)

但是我用下面这个写法出现了问题
阅读更多...

  • Copyrights © 2015-2021 AURORA_ZXH
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信