重温八股文-HTTP
重温八股文-HTTP简单的东西也是需要勤加复习,温故知新,才能提升自己
HTTP 和 HTTPS
http 和 https 的基本概念
http: 是一个客户端和服务器端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的超文本传输协议。
https:是以安全为目标的 HTTP 通道,即 HTTP 下 加入 SSL 层进行加密。其作用是:建立一个信息安全通道,来确保数据的传输,确保网站的真实性。
http 和 https 的区别及优缺点?
http 是超文本传输协议,信息是明文传输,HTTPS 协议要比 http 协议安全,https 是具有安全性的 ssl 加密传输协议,可防止数据在传输过程中被窃取、改变,确保数据的完整性(当然这种安全性并非绝对的,对于更深入的 Web 安全问题,此处暂且不表)。
http 协议的默认端口为 80,https 的默认端口为 443。
http 的连接很简单,是无状态的。https 握手阶段比较费时,会使页面加载时间延长 50%,增加 10%~20%的耗电。
https 缓存不如 http 高效,会增加数据开销。
Ht ...
typeScript tsconfig配置详解
typeScript tsconfig 配置详解tsconfig.json 的定义
tsconfig.json 文件是 [TypeScript] 项目的配置文件,它包含了编译器的配置选项。首先我们先了解一下 tsc 的一些命令
tsc –init 初始化一个 tsconfig.json 文件tsc xxx.ts => 编译某一个 ts 文件,但是每次改写之后需要重新执行tsc xxx.ts -w => 编译某一个 ts 文件, 但是会对某一个文件进行监听,自动编译
需要说明的一点是 当使用 tsc 命令的时候,后面没有任何参数才会使用 tsconfig 配置进行编译
tsconfig.json 的默认顶级配置
files(指定一个包含相对或绝对文件路径的列表)
include(通过匹配需要转换的文件)
exclude(忽略 include 和 files 中需要转换的文件)
compilerOptions(一个复杂的配置,详细)
tsconfig.json 的常见配置下面的配置当编译 tsc 命令的时候会对 src 下面的所有 ts 文件进行转义,但是会忽略 ...
ajax、axios、fetch的区别
ajax、axios、fetch的区别很久没看过的知识了,重温一下~~~
(1)AJAX Ajax 即“AsynchronousJavascriptAndXML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。它是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。其缺点如下:
本身是针对MVC编程,不符合前端MVVM的浪潮
基于原生XHR开发,XHR本身的架构不清晰
不符合关注分离(Separation of Concerns)的原则
配置和调用方式非常混乱,而且基于事件的异步模型不友好。
(2)Fetch fetch号称是AJAX的替代品,是在ES6出现的,使用了ES6中的promise对象。Fetch是基于promise设计的。Fetch的代码结构比起ajax简单多。fetch不是ajax的进一步封装,而是原生js,没有使用XM ...
高阶组件的应用场景
高阶组件的应用场景不谈场景的技术就是在耍流氓,如何在业务场景中使用高阶组件?
权限控制利用高阶组件的 条件渲染 特性可以对页面进行权限控制,权限控制一般分为两个维度:页面级别 和 页面元素级别,这里以页面级别来举一个栗子:
123456789101112131415161718192021// HOC.jsfunction withAdminAuth(WrappedComponent) { return class extends React.Component { state = { isAdmin: false, } async componentWillMount() { const currentRole = await getCurrentUserRole(); this.setState({ isAdmin: currentRole === 'Admin' ...
高阶组件的约定
高阶组件的约定高阶组件带给我们极大方便的同时,我们也要遵循一些 约定:
props 保持一致
你不能在函数式(无状态)组件上使用 ref 属性,因为它没有实例
不要以任何方式改变原始组件 WrappedComponent
透传不相关 props 属性给被包裹的组件 WrappedComponent
不要再 render() 方法中使用高阶组件
使用 compose 组合高阶组件
包装显示名字以便于调试
props 保持一致高阶组件在为子组件添加特性的同时,要尽量保持原有组件的 props 不受影响,也就是说传入的组件和返回的组件在 props 上尽量保持一致。
不要改变原始组件 WrappedComponent不要在高阶组件内以任何方式修改一个组件的原型,思考一下下面的代码:
12345678function withLogging(WrappedComponent) { WrappedComponent.prototype.componentWillReceiveProps = function(nextProps) { console.l ...
高阶组件存在的问题
高阶组件存在的问题
静态方法丢失
refs 属性不能透传
反向继承不能保证完整的子组件树被解析
静态方法丢失因为原始组件被包裹于一个容器组件内,也就意味着新组件会没有原始组件的任何静态方法:
123456// 定义静态方法WrappedComponent.staticMethod = function() {}// 使用高阶组件const EnhancedComponent = HigherOrderComponent(WrappedComponent);// 增强型组件没有静态方法typeof EnhancedComponent.staticMethod === 'undefined' // true
所以必须将静态方法做拷贝:
123456function HigherOrderComponent(WrappedComponent) { class Enhance extends React.Component {} // 必须得知道要拷贝的方法 Enhance.staticMethod = ...
React 中的高阶组件
React 中的高阶组件React 中的高阶组件主要有两种形式:属性代理 和 反向继承。
属性代理(Props Proxy)
最简单的属性代理实现:
12345678910111213// 无状态function HigherOrderComponent(WrappedComponent) { return props => <WrappedComponent {...props} />;}// or// 有状态function HigherOrderComponent(WrappedComponent) { return class extends React.Component { render() { return <WrappedComponent {...this.props} />; } };}
可以发现,属性代理其实就是 一个函数接受一个 WrappedC ...
什么是高阶组件
什么是高阶组件在解释什么是高阶组件之前,可以先了解一下什么是 高阶函数,因为它们的概念非常相似,下面是 高阶函数 的定义:
如果一个函数 接受一个或多个函数作为参数或者返回一个函数 就可称之为 高阶函数。
下面就是一个简单的高阶函数:
123function withGreeting(greeting = () => {}) { return greeting;}
高阶组件 的定义和 高阶函数 非常相似:
如果一个函数 接受一个或多个组件作为参数并且返回一个组件 就可称之为 高阶组件。
下面就是一个简单的高阶组件:
123function HigherOrderComponent(WrappedComponent) { return <WrappedComponent />;}
所以你可能会发现,当高阶组件中返回的组件是 无状态组件(Stateless Component) 时,该高阶组件其实就是一个 高阶函数,因为 无状态组件 本身就是一个纯函数。
无状态组件也称函数式组件。
useEffect 使用指南
useEffect 使用指南
Hooks 是 React 16.8 的新增特性,至今经历两年的时间,它可以让你在不编写 Class 组件的情况下使用 state 以及其他 React 特性。 useEffect 是基础 Hooks 之一,我在项目中使用较为频繁,但总有些疑惑 ,比如:
如何正确使用 useEffect ?
useEffect 的执行时机 ?
useEffect 和生命周期的区别 ?本文主要从以上几个方面分析 useEffect ,以及与另外一个看起来和 useEffect 很像的 Hook useLayoutEffect 的使用和它们之间的区别。
useEffect 简介
首先介绍两个概念,纯函数和副作用函数。
纯函数( Pure Function ):对于相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用,这样的函数被称为纯函数。
副作用函数( Side effect Function ):如果一个函数在运行的过程中,除了返回函数值,还对主调用函数产生附加的影响,这样的函数被称为副作用函数。useEffect 就是在 React 更新 DOM 之后 ...
创建对象的几种方式
创建对象的几种方式
字面量的形式直接创建对象
函数方法
工厂模式,工厂模式的主要工作原理是用函数来封装创建对象的细节,从而通过调用函数来达到复用的目的。
构造函数模式
原型模式
构造函数模式+原型模式,这是创建自定义类型的最常见方式。
动态原型模式
寄生构造函数模式
class 创建