1.网络请求状态码都有什么,具体的含义
- 200 OK:请求成功,服务器成功处理了请求。
- 301 Moved Permanently:请求的资源已被永久地重定向到新的URL。
- 302 Found:请求的资源临时地重定向到新的URL。
- 304 Not Modified:客户端发送附带条件的请求后,服务器允许请求,但内容并没修改。
- 400 Bad Request:请求报文存在语法错误,服务器没必要给出拒绝的理由。
- 401 Unauthorized:请求未授权,需要进行身份验证。
- 403 Forbidden:服务器理解请求客户端的请求,但是拒绝执行此请求。
- 404 Not Found:服务器上无法找到被请求的资源。
- 500 Internal Server Error:服务器在处理请求的过程中有错误或者异常状态发生。
- 503 Service Unavailable:服务器处于超载或者故障状态,无法完成对请求的处理。
- 501表示“Not Implemented”,即服务器不支持请求中使用的HTTP方法。这通常意味着服务器不支持或不支持该特定资源所要求的动作。
- 502通用的报错原因复杂
2.实现一个useDeepEffect
function useDeepEffect(fun,arr){
const [pre,setPre]=useState()
useEffect(()=>{
setPre(arr)
},arr)
useEffect(()=>{
if(isEqual(pre,arr)){
fun()
}
},[fun,pre])
}
2.1 useEffect的使用
return 的方法只有在组件卸载的时候才会 调用
2.2 useEffect如果不传第二个参数
组件在初始化以及更新的时候都会执行 如果只传一个空数组只会在初始化的时候执行 如果传了非空数组,则会在依赖项发生改变的时候触发 blog.csdn.net/zjw0021/art…
3.实现一个数组转树形结构
let arr = [
{ id: 1, parentId: 0, name: '节点1' },
{ id: 11, parentId: 0, name: '节点1' },
{ id: 2, parentId: 1, name: '节点1.1' },
{ id: 3, parentId: 1, name: '节点1.2' },
{ id: 4, parentId: 2, name: '节点1.1.1' },
{ id: 5, parentId: 2, name: '节点1.1.2' },
{ id: 6, parentId: 3, name: '节点1.2.1' },
];
let tree = arrayToTree(arr, 0);
function arrayToTree(arr, parentId) {
let result = []
for (let i = 0; i < arr.length; i++) {
if (arr[i].parentId == parentId) {
let children = arrayToTree(arr, arr[i].id)
console.log(children)
if (children.length) {
arr[i].children = children
}
result.push(arr[i])
}
}
return result
}
4.Webpack和Rollup在多个方面存在显著差异:
- 构建目标:Rollup的主要目标是ES6模块打包,而Webpack则支持更广泛的构建目标,包括AMD/CJS/ES5/ES6等,因此Webpack更加灵活。
- 打包方式:Rollup采用的是Tree-shaking算法,能更加高效地打包应用,移除未被引用的模块。Webpack则通过静态分析和代码分割实现模块化,可以实现按需加载。
- 配置方式:Rollup的配置相对简单,只需要一个rollup.config.js文件即可。然而,Webpack的配置较为复杂,需要多个配置文件和插件进行调整。
- 体积与性能:Rollup打包的体积较小,代码精简,且较少注入,但动态加载路由代码可能不适用,因此单页项目可能不适合使用Rollup。而Webpack结合插件可以完成前端工程化的绝大多数工作,但体积较大。
- 插件与生态系统:Webpack有丰富的插件生态系统,可以处理各种类型的资源(如JavaScript、CSS、图片等),支持代码拆分、按需加载、动态导入等特性,以及更复杂的配置选项。Rollup则仅仅是一款ESM打包器,没有其他功能。
5.plugin与loader的区别
loader仅仅是为了打包 plugin是为了丰富webpack的功能,他可以作用在打包,资源加载,环境变量的定义
6.事件循环
js单线程应用程式,将任务队列中的任务取出放入到调用栈中,直到任务队列为空,当执行异步任务又分为宏任务与微任务。优先执行微任务。
7.CSS实现一个三角形
border-left:100px solid transparent