概述
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见HTTP状态码
200 OK
表示请求成功 一切正常
301 Moved Permanently
重定向,客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL
302 Found
临时重定向,类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。
304 Not Modified
客户端有缓冲的文档并发出了一个条件性的请求。服务器告诉客户,原来缓冲的文档还可以继续使用。
307 Temporary Redirect
临时重定向,与302类似,只是强制要求使用POST方法。
400 Bad Request
请求出现语法错误。
401 Unauthorized
客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填 写合适的Authorization头后再次发出请求。
403 Forbidden
资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致
404 Not Found
无法找到指定位置的资源。
405 Method Not Allowed
请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。
500 Internal Server Error
服务器遇到了意料不到的情况,不能完成客户的请求。
501 Not Implemented
服务器不支持实现请求所需要的功能。
502 Bad Gateway
服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。
3xx 状态码详解
301 状态码(Moved Permanently)
301状态码在HTTP1.0和HTTP1.1规范中均代表永久重定向,对于post请求的重定向,还是需要用户确认之后才能重定向,并且应该以post方法发出重定向请求。
关于post请求重定向用户确认的问题,实际上浏览器都没有实现;而且post请求的重定向应该发起post请求,这里浏览器也并不一定遵守,所以说HTTP规范的实现并未严格按照HTTP规范的语义。
302 状态码(Moved Temporatily)
在http 1.0规范中,302表示临时重定向。出现该状态代码时,浏览器能够自动访问新的URL。
规范:原请求是get,可以自动重定向;原请求是post,则不能自动进行重定向。
实现:浏览器和服务器的实现并没有严格遵守HTTP中302的规范,浏览器即便原请求是post也会自动重定向,导致规范和实现出现了二义性,由此衍生了一些问题,譬如302劫持,因此在HTTP 1.1中将302的规范细化成了303和307,希望以此来消除二义性。
补充:302劫持——A站通过重定向到B站的资源xxoo,A站实际上什么都没做但是有一个比较友好的域名,web资源xxoo存在B站并由B站提供,但是B站的域名不那么友好,因此对搜索引擎而言,可能会保存A站的地址对应xxoo资源而不是B站,这就意味着B站出了资源版权、带宽、服务器的钱,但是用户通过搜索引擎搜索xxoo资源的时候出来的是A站,A站什么都没做却被索搜引擎广而告之用户,B站做了一切却不被用户知道,价值被A站窃取了。
303 状态码(See Other)
继承了HTTP 1.0中302的实现:无论原请求是get还是post,都可以自动进行重定向
303响应应该禁止被缓存。重定向的相应可能被缓存。
307 状态码
继承了HTTP 1.0中302的规范:原请求是GET 或 HEAD,则浏览器可以自动重定向;原请求是 POST,则不能自动进行重定向。
302、303、307 状态码辨析
在HTTP 1.1中,302是不再推荐使用的,只是为了兼容而作保留。为了细化HTTP1.0中302的语义,HTTP1.1引入了 303 和 307,主要用在对非 GET、HEAD 方法的响应上,而对于 GET 和 HEAD 的请求,可以自动重定向。
在 GET、HEAD 这些幂等的请求方式上,302、303、307 没啥区别,而对于 POST 就不同了,大部分浏览器的302 会将 POST 请求转为 GET,而 303 规范强制将 POST 转为 GET 请求,请求地址为 header 头中的 Location,307 则不一样,规范要求浏览器继续向 Location 的地址 POST 内容。
- 项目经验
- saas_student
- 技术栈
- px2rem
- 开发遇到的问题
- 下拉加载更多
- 打包
- 插件
- 调用相机
- 微信授权登录
- dva_cli
- umi-request
- umi(路由配置)
- dva(数据流方案)
- 弱网和断网
- 获取网络模式
- 获取手机型号和系统
- 网速
- quick qr code
- saas-teacher
- 注意事项
- expo下载
- saas-front
- 技术栈
- ant design
- 绑定事件
- 单向数据流
- 下载模板
- 获取表单
- 路由传参
- 上传
- 导出
- saas-boss-front
- 微站H5
- 技术栈
- 账号&密码
- 依赖包
- 插件
- 七鱼智能客服
- vconsole
- px2rem
- 佳信客服
- videoplayer
- 动态loadding
- setInterval this指向
- 安全性
- AES加密
- JS中encodeURI()、decodeURI()、encodeURIComponent()和decodeURIComponent()编码与解码
- md5
- H5跳转APP,小程序
- 微信授权登陆
- 微信支付
- 判断设备
- 埋点
- 邀请好友
- 分享
- 微信消息推送
- 模块化
- 其他
- 设置网页默认字体
- 浏览图片
- 省市区联动自定义选择的数据
- 获取昵称头像弹窗
- 打电话
- h5下载app
- web优化
- 分享
- iboss / crm
- 账号&密码
- 插件
- jsx标签动态style
- 注意事项
- 报表导出
- 天天学农小程序
- 爸妈搜日历
- 二维码
- 客服
- 小程序分享
- 获取手机号码
- appid
- 小程序rich-text中不识别换行符
- 开发小技巧
- pc调试微信h5页面
- vConsole
- 本地ip访问vue项目
- 调试
- 电商扶贫后台
- 电商扶贫官网
- 技术栈
- 启动报错
- 电商科技扶贫
- 打开并跳转微信小程序
- window.open(打开新窗口)
- 中国地图echarts
- 中邮惠农
- 授权登录
- iframe
- 跳转app
- 前端请求
- old iboss
- 短信平台
- 阿里云短信
- 梦网平台
- 认证平台官网
- 技术栈
- 插件
- px to vw(viewport)
- 精勤农民
- 网址
- 获取验证码图片
- 落地页
- 问题收集
- 88活动
- 埋点
- 分享
- H5浏览器支付
- 微信浏览器支付(WeixinJSBridge.invoke)
- h5公众号微信支付(wx.chooseWXPay)
- h5安卓微信支付
- 红包雨
- 923
- 微信活码
- 落地页微信支付和h5浏览器支付
- 微信环境打开小程序(开放标签wx-open-launch-weapp)
- 微信小程序打开小程序(navigateToMiniProgram)
- web-view
- 小程序长按识别二维码
- scypto-js
- 浏览器内打开app
- 教育论坛
- vant的按需引入两种方式
- 弱网
- boss
- 登录态
- formdata传参
- vue-element-admin执行流程
- 对登录态的管理
- @配置
- 获取最近七天
- 插件
- 记录
- axios拦截器
- cli3更改环境
- 权限管理
- 值值小程序
- 微信授权登录
- 支付
- 体验版小程序
- 新药都荟小程序
- 鑫泉健康后台系统
- 权限管理
- 民乐荟公众号
- 住里验房
- 获取地理位置
- 超级货运小程序uniapp
- 微信授权登陆
- appid
- 加载
- 开发中遇到的问题
- 需求待确定
- 域名
- 小程序自动识别收货地址
- 网络请求
- 二维码
- 白名单
- 启发
- uniapp微信授权登录
- 订单状态码
- 状态码
- 超级省心配二维码(旧版)
- 超级货运二维码(新版)
- 人工客服
- 订单统计
- 发现新技术
- 控件
- uView
- 价格计算
- 配送时间计算
- 面试
- 更新版本
- 监测网络
- 支付
- 长传图片
- 依赖
- scss
- 环境
- 文字图标
- 埋点:友盟
- 编译
- 时间格式化插件
- uiniapp和vue的依赖包
- uchat
- 省心配CPAdmin
- 开发中遇到的问题
- 退出记录原路由
- 改变title
- token放在请求头
- 启发
- 清除定时器新花样
- data与params
- 配置代理第二个域名
- tmsAdmin
- 开发中遇到的问题
- ant design for vue
- 方法
- 收获
- 登录
- store
- 报错收集
- 导入
- 图标
- 腾讯文档
- showDoc
- cp无人车
- 项目描述
- iconify
- antv/g2
- dayjs
- 地图
- 我的高德地图
- 菜单图标
- 打包
- 菜单管理
- 经验
- 智行助手app
- 重要标记
- android studio调试
- fiddle抓包
- 依赖介绍
- 图片生成工具
- 高德地图
- 发版
- 奇怪的问题
- 模拟器切换网络模式
- sdk
- mqtt_client 9.6.5
- android打包
- ios打包
- 便捷
- 深拷贝
- flutter sdk升级
- 依赖网站
- Unsound null safety
- 创建keystore
- jks
- 创建flutter项目
- vscode运行flutter
- 插件
- 性能分析工具
- 格式化代码
- 打开高德地图和腾讯地图
- 设备判断
- 当前版本
- 图片浏览
- 拍照和选择相册
- 横屏竖屏
- 侧滑删除
- 绝对值
- 询问用户退出操作
- jsencode和jsdecode
- 布局
- 超级转运手
- ptadmin
- 查看订单
- 订单状态
- MQTT和Websocket的区别
- docket和k8s的区别
- 关于设计稿
- 图片上传功能
- 安全员端
- 打包路径
- 颜色
- 启动
- 启动报错
- 开发启发
- 潮客新语公众号
- 旧项目
- layui
- 应用工具
- 百度脑图(思维导图)
- xmind(思维导图)
- FastStone Capture(取色器)
- 百度统计(数据分析)
- 易观方舟(数据分析)
- 神策(数据分析)
- 友盟(数据分析)
- vscode
- webstorm
- Markdown(.md)
- sourceTree(git可视化管理工具)
- TortoiseGit(git可视化管理工具)
- 性能分析工具
- flutter性能分析工具
- 代码规范类工具
- 抓包工具XPosed 和 JustTrustMe,wireshark和Charles
- Charles(查尔斯)
- sonarqube代码质量分析
- 比较好用的正则表达式和方法
- 语雀(笔记)
- 印象笔记
- 看云
- SwitchHost(host地址切换工具)
- 在线json
- 墨刀(产品)
- 墨客(UI)
- 甘特图
- Quick QR Code 0.0.8
- tinypng(压缩)
- gira和tapd(提bug)
- Redmine (管理bug)
- 禅道(提bug)
- figma
- js.design 即时设计
- swagger(写接口文档)
- Yapi(写接口文档)
- atom(编辑器)
- 蓝灯下载
- ikuuu翻墙
- mumu模拟器和夜神模拟器
- hbuilder工具
- 梦网平台(短信)
- 阿里云短信(短信)
- 逍遥模拟器
- mumu模拟器
- 夜神模拟器
- sublime text
- 前端进阶
- 大前端
- js框架
- 脚手架和UI框架
- vue2.0(option Api选项式)
- 简介
- new Vue()
- main.js的render函数
- vuex(Vuex 3)
- 两个核心(声明式渲染和响应式)
- 组件
- data 必须是一个函数
- vue里面父组件修改子组件样式
- keep-alive
- 生命周期
- 插槽
- 全局属性
- 实例方法
- 基础
- {{ }}插值表达式
- v-bind(简写冒号:)(指令)绑定属性
- v-if v-for(指令)
- v-if 和 v-show(指令)
- v-show(指令)
- v-on 简写@(指令)
- v-once(指令)
- v-cloak(指令)
- v-html(指令)
- 动态class和style
- v-model(指令)(数据双向绑定 无缩写)
- v-model与v-bind区别
- 指令
- computed
- methods
- watch监听
- 过滤器(filters)
- 自定义指令
- diff算法
- 虚拟dom
- mixins、extends(在vue3被移除了)
- Vue.prototype.属性 和 Vue.use
- new Vue
- $nextTick(函数)
- 路由
- HTML5History模式,HashHistory模式,AbstractHistory模式
- 路由赖加载
- 路由传参(编程式传参和声明式传参)
- 重定向和别名
- 守卫导航
- Router对象
- 全局钩子beforeEach(全局前置守卫) afterEach(全局后置守卫),beforeResolve(全局解析守卫)
- 路由独享的守卫beforeEnter
- 组件内的守卫beforeRouteEnter beforeRouteLeave beforeRouteUpdate
- 完整的 vue-router 导航解析流程
- 滚动行为(滚动顶部或者原来的位置)
- 路由跳转
- base
- routes
- 配置路由实例 router.js文件
- $router
- 静态路由和动态路由
- 路由嵌套
- meta元信息
- 同级展示多个视图
- $router和$route
- watch $route
- vue-monent过滤器
- vuePress(极简网站生成器)
- Weex跨平台
- webpack
- yarn安装
- promise
- npm与yarn的优缺点
- 优点
- --save dev与--save
- vueComponent
- 表单校验
- axios
- 优化
- 源码
- Vue.extend
- 面试
- 关于dependencies和devDependencies
- 对vue的理解
- Vue的优缺点
- vue 等单页面应用及其优缺点
- Vue跟React的异同点
- vue的思想
- vm 和 this
- vuex
- vuex是什么
- 解决vuex页面刷新数据丢失问题
- vuex 工作原理详解
- 用 Vuex 会带来什么问题
- Vuex 的三大原则
- Vuex持久化插件(vuex-persistedstate)
- 组件
- 为什么data是个函数并且返回一个对象呢(组件复用,数据隔离)
- 局部修改element样式
- 父组件修改子组件的样式
- 插槽分类
- 组件通信
- Vue 组件间通信有哪几种方式
- 单向数据流
- evenbus中央总线
- 如果子组件改变props里的数据会发生什么
- props怎么自定义验证
- vue 中子组件调用父组件的方法(三种)
- vue中的key有什么作用
- v-show 与 v-if 有什么区别?
- Vue.$nextTick的使用情景
- 为什么避免 v-if 和 v-for 用在一起
- 生命周期
- 谈谈你对 Vue 生命周期的理解?
- Vue 的父组件和子组件生命周期钩子执行顺序是什么
- 在父组件监听子组件的生命周期方法 @hock
- 在哪个生命周期内调用异步请求?
- 在什么阶段才能访问操作DOM?
- Vue 修饰符有哪些
- 函数式组件使用场景和原理
- mixin 和 mixins 区别
- 如何设置动态class,动态style
- 对象新属性无法更新视图,删除属性无法更新视图,为什么?
- 直接arr[index] = xxx无法更新视图怎么办?为什么?怎么办?
- 指令
- 说说 vue 内置指令
- 写过自定义指令吗 原理是什么
- 计算属性和监听
- watch有哪些属性,分别有什么用?
- 计算属性computed和监听watch
- 计算属性和方法的区别?
- deep深度监听的作用
- 审查元素时发现data-v-xxxxx,这是啥?
- vue在v-for时给每个项绑定事件使用事件代理的理解
- 路由
- 路由传参
- params和query的区别
- vue路由跳转的优缺点
- router-link的属性和作用
- vue-router 路由模式有几种
- 能说下 vue-router 中常用的 hash 和 history 路由模式实现原理吗?
- vue中$router和$route的区别
- vue-router 有哪几种导航钩子( 导航守卫 )?
- 为什么要使用路由赖加载
- 响应式
- 数据双向绑定的原理
- Vue.set()和this.$set()实现原理
- 如何添加响应式属性
- Object.defineProperty()
- 观察者模式和发布订阅者模式
- axios
- qs.stringify和JSON.stringify
- qs.stringify和JSON.stringify1
- axios的特点?
- axios和vue-axios区别
- axios有哪些常用方法?
- 其他
- Npm run build 打包之后静态资源路径错误
- Vue.use和Vue.prototype.$xx有血缘关系吗?
- index.html和main.js是怎么关联起来的?
- Vue-cli调用后台接口,解决跨域?
- export和export default的区别?
- yarn和npm,cnpm,pnpm的区别
- SSR了解吗?(服务器渲染)
- vue-loader 是什么?使用它的用途有哪些?
- 如何提交团队开发效率
- 平时如何管理你的项目?
- 如何管理日常开发
- vue实现tab切换的几种方法
- vue和react的不同之处
- vue刷新当前界面
- 构建vue-cli工程都用到哪些技术?
- 为什么 data 是一个函数
- vue2.x与vue3.x语法对比
- vue3.0 用过吗 了解多少
- Vue 模板编译原理
- assets和static的区别
- template和jsx的有什么分别?
- key有什么用?说说diff算法吧?
- Vue的el属性和$mount优先级?
- less scss sass的区别
- vue.config.productionTip
- el
- 查看vue和vue-cli版本号
- 在vue中引入jquery
- 优化
- Vue首屏加载优化?
- webpack打包
- <template slot-scope="{ row }">
- Vue 中 $on $once $off $emit 详细分析,以及使用
- 单引号和双引号
- import和@import
- 发现
- 官网
- 原理
- Vue.delete方法的原理?
- Vue.set 或 vm.$set
- Vue.nextTick 或 vm.$nextTick
- Vue的模板编译原理?
- 跨域
- vue3.0(Composition Api组合式)
- setup发展过程
- setup的参数
- ref与reactive
- 响应式数据的判断
- isRef 与 unRef
- toRef 与 toRefs(转响应式对象为单独属性)
- customeRef
- shallowReactive 和 shallowRef(只对第一层进行响应式)
- readonly和shallowReadonly(只读)
- toRaw 和 markRaw(转为普通对象)
- defineProps(不需要导入)
- defineExpose(不需要导入)
- defineEmits(不需要导入)
- computed(需要导入)
- watch 和 watchEffect(需要导入)
- ref和$nextTick
- 收获
- router
- 新特性
- pina
- vuex(vuex4)
- hook
- Reflect
- useRouter
- defineAsyncComponent
- provider和inject
- Fragment
- Teleport(任意传送门)
- Suspense(异步加载组件)
- 单文件组件
- 生命周期
- 透传 attribute
- Vue CLI -> Vite 迁移指南
- 枚举
- $nextTick
- vue3全家桶
- vue2和vue3的比较
- 创建项目
- 实例化比较(vue ,vue-router, vuex)
- 响应式比较
- options 和 composition比较
- 生命周期对比
- 注册全局组件和全局插件
- 引入组件对比
- v-if 和 v-for
- 浏览器比较
- watch比较
- 其它
- 脚手架
- vue-cli
- @vue/cli
- vue项目的执行机制
- vite
- 目录比较
- 构建工具
- webpack
- vite
- ts
- 什么是TypeScript
- 安装TypeScript
- Hello TypeScript
- 类型系统
- 基本数据类型
- 引用数据类型
- 对象类型
- 数组类型
- 函数类型
- 枚举类型
- 任意类型any
- 联合类型stringnumber
- 类型推论
- 类型断言
- 类型别名
- 接口
- 接口继承
- 类型别名和接口
- 字符串字面量类型
- 声明文件
- 内置对象
- never
- unknown
- 进阶
- 类
- 泛型
- 声明合并
- js转ts
- vscode运行ts
- ts生成js文件到指定的目录下
- 在线工具
- 中文官网
- TypeScript中文官网
- 诡异运算符
- js(弱类型语言)
- es5
- babel(es6转es5)
- 概念
- JSON.parse和JSON.stringify
- BOM & DOM
- BOM
- window对象
- location对象
- navigator对象
- screen对象
- history对象
- DOM
- 表单
- 获取表单
- 提交表单
- http缓存和浏览器缓存(客户端存储)
- 字符串
- 数组
- 数组的方法
- 连接concat
- 查找find,findIndex,includes
- 排序
- 操作
- 遍历every,some,filter,map,forEach,for...in,fo...of
- 创建数组
- 对象
- 对象的分类
- 创建对象(工厂模式,构造函数,原型模式,单例模式,混合模式)
- 对象的属性
- 对象的方法
- 对象的原型
- 遍历对象
- 普通对象与函数对象
- 面向对象特征
- 面向对象优点
- 函数
- 基础
- 声明函数的几种方式
- 普通函数
- 匿名函数
- 闭包函数
- 递归函数
- 构造函数
- 基础
- 字符串
- 数值
- 对象
- 数组
- Iterator
- 运算符
- js和ts的区别
- 数据类型
- 数据类型分类
- 堆,栈
- 类型转化
- 类型检测
- 判断数组的方式
- 拷贝
- 深拷贝,浅拷贝
- 对象深拷贝和浅拷贝的区别
- 原型
- 原型和原型链
- 原型和原型链
- 闭包
- 递归
- 兼容性
- 作用域
- 作用域和作用域链
- call(),apply(),bind()的区别
- call,apply,bind
- 进程和线程
- event loop
- 异步任务(微任务和宏任务)和同步任务
- ++i i++
- eval
- typeof 和instanceof
- js的设计模式
- 对dom的理解
- 面试
- html
- 浏览器内核
- 前端性能优化
- 什么是防抖和节流?有什么区别?如何实现?
- http
- get和post的区别
- http常见状态码
- 除了get和post还有什么请求方式
- 介绍下深度优先遍历和广度优先遍历,如何实现?
- ES5/ES6 的继承除了写法以外还有什么区别?
- map和weakMap的区别
- 加密
- TripleDES加密/解密
- Rabbit加密/解密
- RC4加密/解密
- DES加密/解密
- AES解密/解密
- encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别
- 谈谈你对 TCP 三次握手和四次挥手的理解
- 介绍下重绘和回流(Repaint & Reflow),以及如何进行优化
- 什么是代理与反射?
- for in和Object.keys有什么区别?
- export和import
- es6新特性
- Object.is() 与比较操作符 “===”、“==” 的区别?
- JavaScript脚本延迟加载的方式有哪些?
- console.log()和console.dir()的区别?
- for...in和for...of的区别
- ajax、axios、fetch的区别
- 文档结构DOCTYPE的含义
- session和cookie的区别
- 数组
- 数组合并
- 在数组中插入一个元素
- Array.of()
- Array.from可以处理哪些数据?
- js数组怎么去重?
- src和href的区别
- 对HTML语义化的理解
- DOCTYPE(⽂档类型) 的作⽤
- script标签中defer和async的区别
- 常⽤的meta标签有哪些
- img的srcset属性的作⽤
- 浏览器乱码的原因是什么
- label 的作用是什么
- HTML5有哪些更新
- 插件
- js-cookie
- axios
- Vue-validata
- count-to数据计时器
- axios和ajax的区别
- this指向
- @import和link的区别
- 如何实现一个队列
- 如何实现一个栈
- 对微任务和宏任务的执行顺序的理解
- 文档模式
- 优雅降级
- 脚本严格模式
- for循环中的let声明
- 声明风格及最佳实践
- 节流与防抖
- 伪类和伪元素
- js常见的数据结构
- \n 和 br
- undefined和null的区别?
- 为什么比较两个相似的对象返回false
- !!运算符能做什么?
- es6(ECMAScript 6.0 或称为 ECMAScript 2015)
- 概念
- let,const和var
- ES6声明变量的6种方法
- 箭头函数和普通函数
- 扩展运算符
- Proxy
- rest
- 模板字符串
- 变量的解构赋值(字符串,数字,布尔,数组,对象,函数)
- 概念
- 数组解构
- 对象结构
- 用途
- 函数参数默认值
- class类
- for of和for in
- import导入,export defalut导出
- Symbol
- gennerator
- set和map数据结构
- module
- promise
- promise
- Promise 构造函数是同步执行还是异步执行,那么 then 方法呢?
- await和async
- await和async
- Async/Await 如何通过同步的方式实现异步
- setTimeout、Promise、Async/Await 的区别
- Set,Map,WeakSet和WeakMap
- 介绍下Set,Map,WeakSet和WeakMap的区别
- new Set()的使用
- google浏览器控制台换行
- react(用于构建用户界面的javascript库)
- 概念
- 组件(可复用,组合,独立)
- 创建组件方式
- PureComponent 函数组件(无状态组件,合适只负责数据展示)
- 高阶组件HOC && render props(复用组件状态逻辑)
- hook(一个特殊的函数)
- 简介
- useState
- useEffect(副作用)
- useContext(组件嵌套)
- Hook 规则
- 自定义 Hook(状态逻辑复用)
- useFriendStatus
- useReducer
- class组件(有状态组件,合适只负责更新UI)
- 生命周期(类组件才有生命周期)
- render(函数)
- 虚拟DOM
- jsx(语法)
- JSX的基本使用
- JSX中使用JS表达式
- JSX的条件渲染(if不能直接写在render)
- JSX的列表渲染
- JSX的样式处理
- 事件处理
- form(受控组件和非受控组件)
- 非受控组件
- 受控组件
- diff算法
- 合成事件
- constructor
- Fragments(对子组件进行分组)
- Portals(插槽)
- Profiler
- 导入组件
- 组件传参
- 组合组件
- 组件三大属性
- props(类组件,函数组件)
- state(类组件)
- refs(类组件)
- children
- context
- 路由
- 路由模式
- 路由传参
- 路由跳转
- redux(状态管理)
- reflux
- React Devtools调试工具
- react-router
- react nactive跨平台
- 面试
- 其他
- 了解 Virtual DOM 吗?解释一下它的工作原理
- React 中 setState 什么时候是同步的,什么时候是异步的?
- 路由
- React-Router的路由有几种模式?
- 为什么 React Router 中使用 Switch 关键字 ?
- 组件
- 如何解决 props 层级过深的问题
- 如果没有调用 setState,props 值也没有变化,是不是组件就不会重新渲染?
- 什么是高阶组件?
- 组件通信的方式有哪些
- 组件创建方式
- 自定义 Hook 必须以 “use” 开头吗?
- 在两个组件中使用相同的 Hook 会共享 state 吗?
- 类组件和函数组件之间有什么区别?
- class组件
- setState何时同步何时异步?
- 哪些方法会触发 React 重新渲染?重新渲染 render 会做些什么?
- Hook
- useEffect 会在每次渲染后都执行吗?
- React 何时清除 effect?
- Hook 是什么?
- useEffect 做了什么?
- 为什么要使用hock?
- 需要清除的 effect?
- React 是如何把对 Hook 的调用和组件联系起来的?
- 为什么在组件内部调用 useEffect?
- 说说对 State 和 Props的理解,有什么区别?
- React事件绑定的方式有哪些?
- 为什么虚拟 dom 会提高性能?
- 函数组件和类组件的区别?
- redux
- 什么情况下使用redux
- react-redux的两个最主要功能?
- Redux遵循的三个原则是什么?
- 你在React项目中是如何使用Redux的? 项目结构是如何划分的?
- React Nactive
- 处理文本
- 滚动视图
- 长列表
- 特定平台
- 环境
- react,vue 和 angular 比较
- electron
- 打包22
- 支持node
- 创建文件
- 读取文件
- 支持自定义样式
- uniapp
- 写法规范
- 组件
- 环境判断
- 平台判断
- 生命周期
- 资源路径
- 路由跳转
- 缓存
- 网络
- 微信小程序
- 面试
- 你使用过哪些方法,来提高微信小程序的应用速度?
- 你是怎么封装微信小程序的数据请求的?
- 微信小程序使用rich-text和wxparse解析富文本的区别
- 基础
- 微信授权登录
- 加载更多
- 导入模板
- 导入组件
- 渲染HTML
- image
- 生命周期
- 缓存
- 页面跳转
- 优化
- 小程序后台排错
- 微信小程序后台白名单
- 小程序数据分析
- jquery
- 版本
- css
- 面试
- calc, support, media各自的含义及用法?
- css水平、垂直居中的写法,请至少写出4种?
- 解决图片5px间距
- 怎么用css画一个三角形
- 图标
- Font Awesome
- iconfont
- flex
- 为什么需要清除浮动?清除浮动的方式
- display、float、position的关系
- 画一条0.5px的线
- CSS3的新特性
- CSS选择器及其优先级
- z-index属性在什么情况下会失效
- 重要的工程化插件: PostCss
- 页面重排、重绘
- 前端开发常见的几种布局
- BFC详解
- 单行、多行文本溢出隐藏
- ::before 和 :after 的双冒号和单冒号有什么区别?
- 少用的样式
- 开发中遇到的问题
- 字体单位
- 水平垂直居中
- calc, support, media各自的含义及用法?
- 选择器
- 让元素消失
- 常用的浏览器和内核
- 移动端布局
- .rgba()和opacity
- zoom
- 如何解决高度坍塌?
- 技术栈
- flutter框架(2.10.4)
- 官网
- android studio配置flutter
- 环境配置
- 控件
- 优势
- 结构
- 生命周期
- Material
- shared_preferences
- jsonEncode 和 jsonDecode
- 页面跳转
- 路由跳转
- StreamSubscription
- 底部弹窗
- 异步
- 文本输入框
- EdgeInsets类
- Scaffold 组件
- Container控件
- text组件
- sizebox组件
- CircularProgressIndicator
- ElevatedButton
- 是否退出登录
- BoxDecoration控件
- material
- 布局
- 图片
- Cencer
- Scaffold
- 类型转换
- 其他111
- bottomNagationBar
- 遇到问题
- 实战
- eventBus
- 面试444
- flutter 跨组件传递数据的三种方式
- dart(3.38.2)强类型语言
- 数据类型
- assert
- late关键字
- nodejs
- express框架
- element
- ant
- 服务器
- 微服务
- nginx
- http和https
- redis
- http-server
- 爬虫,抓包
- webpack1
- 浏览器
- 性能优化
- http协议
- get和post
- POST和PUT
- http和https
- 学农面试
- 面试总结
- 规范
- git命令
- gitlab分支管理