<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[99的博客]]></title><description><![CDATA[竹杖芒鞋轻胜马，谁怕？一蓑烟雨任平生]]></description><link>https://blog.youkuaiyun.com/heyue_99</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; heyue_99]]></copyright><item><title><![CDATA[jest学习笔记]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/105790201</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/105790201</guid><author>heyue_99</author><pubDate>Mon, 27 Apr 2020 14:35:39 +0800</pubDate><description><![CDATA[function.js
export default {
  sum(a, b) {
    return a + b;
  },

  getAuthor() {
    return {
      name: 'LITANGHUI',
      age: 24,
    }
  },

  getIntArray(num) {
    if (!Number.isInteger(num))...]]></description><category></category></item><item><title><![CDATA[深入理解javascript原型和闭包笔记]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/103913264</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/103913264</guid><author>heyue_99</author><pubDate>Thu, 09 Jan 2020 17:52:12 +0800</pubDate><description><![CDATA[读完 深入理解javascript原型和闭包 的一些摘录。
javascript原型和闭包
一切都是对象
四种（undefined, number, string, boolean）属于简单的值类型，不是对象。剩下的几种情况——函数、数组、对象、null、new Number(10)都是对象。他们都是引用类型。
值类型的类型判断用typeof，引用类型的类型判断用instanceof。
一切（引用...]]></description><category></category></item><item><title><![CDATA[React16 新特性总结]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/103889801</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/103889801</guid><author>heyue_99</author><pubDate>Wed, 08 Jan 2020 13:45:02 +0800</pubDate><description><![CDATA[createPortal
createPortal 的出现为 弹窗、对话框 等脱离文档流的组件开发提供了便利，Portals 提供了一种很好的将子节点渲染到父组件以外的 DOM 节点的方式。
const modalRoot = document.body;

class Modal extends React.Component {
    constructor(props) {
       ...]]></description><category></category></item><item><title><![CDATA[浏览器地址栏输入URL，回车后究竟发生了什么]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/103406259</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/103406259</guid><author>heyue_99</author><pubDate>Thu, 05 Dec 2019 15:50:25 +0800</pubDate><description><![CDATA[基本流程
①查询ip地址
②建立tcp连接，接入服务器
③浏览器发起http请求
④服务器后台操作并做出响应
⑤网页的解析与渲染
查询ip地址
①浏览器解析出url中的域名。
②查询浏览器的DNS缓存。
③浏览器中没有DNS缓存，则查找本地客户端hosts文件有无对应的ip地址。
④hosts中无，则查找本地DNS服务器（运营商提供的DNS服务器）有无对应的DNS缓存。
⑤若本地DNS没有DNS缓...]]></description><category></category></item><item><title><![CDATA[浏览器缓存知识]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/103402089</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/103402089</guid><author>heyue_99</author><pubDate>Thu, 05 Dec 2019 11:51:47 +0800</pubDate><description><![CDATA[浏览器缓存分类
目前主流的浏览器缓存分为两类，强缓存和协商缓存：

强缓存：直接从本地副本比对读取，不去请求服务器，返回的状态码是 200。
协商缓存：会去服务器比对，若没改变才直接读取本地缓存，返回的状态码是 304。

它们的匹配流程如下：
（1）浏览器发送请求前，根据请求头的expires和cache-control判断是否命中强缓存策略，如果命中，直接从缓存获取资源，并不会发送请求。如果没...]]></description><category></category></item><item><title><![CDATA[jsonp和Nginx跨域]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/103390630</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/103390630</guid><author>heyue_99</author><pubDate>Wed, 04 Dec 2019 17:36:05 +0800</pubDate><description><![CDATA[JSONP
先说说JSONP是怎么产生的：
其实网上关于JSONP的讲解有很多，但却千篇一律，而且云里雾里，对于很多刚接触的人来讲理解起来有些困难，着用自己的方式来阐释一下这个问题，看看是否有帮助。
1、一个众所周知的问题，Ajax直接请求普通文件存在跨域无权限访问的问题，甭管你是静态页面、动态网页、web服务、WCF，只要是跨域请求，一律不准。
2、不过我们又发现，Web页面上调用js文件时则不...]]></description><category></category></item><item><title><![CDATA[手动清除Google Chrome DNS缓存]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/103346165</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/103346165</guid><author>heyue_99</author><pubDate>Mon, 02 Dec 2019 11:53:26 +0800</pubDate><description><![CDATA[DNS缓存
为了获得更好的互联网访问性能，Google Chrome 流量器内建了一个缓存系统，不仅可用于缓存网站内容，还可以进行 DNS 记录的缓存。Chrome 内置的 DNS 缓存系统有一个隐藏选项，它可以允许用户手动清除 Chrome DNS 主机缓存。刷新 DNS 缓存可以帮助用户修复访问某些网页时可能遇到的主机连接问题。
当更改了操作系统的 DNS 设置时，如果只清除操作系统的 DNS...]]></description><category></category></item><item><title><![CDATA[通用方法记录]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/102834588</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/102834588</guid><author>heyue_99</author><pubDate>Thu, 31 Oct 2019 11:25:58 +0800</pubDate><description><![CDATA[判断数据类型
可判断类型：undefined、null、string、number、boolean、array、object、symbol、date、regexp、function、asyncfunction、arguments、set、map、weakset、weakmap
function DataType(tgt, type) {
    const dataType = Object.pr...]]></description><category></category></item><item><title><![CDATA[react相关知识点记录]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/102799709</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/102799709</guid><author>heyue_99</author><pubDate>Tue, 29 Oct 2019 15:03:33 +0800</pubDate><description><![CDATA[1. async/await
理解 JavaScript 的 async/await
async 的作用
async 函数返回的是一个 Promise 对象
如果在函数中 return 一个直接量，async 会把这个直接量通过 Promise.resolve() 封装成 Promise 对象，直接可以用then() 链来处理这个 Promise 对象
如果 async 函数没有返回值，会返回 P...]]></description><category></category></item><item><title><![CDATA[小程序wx.request和promise]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/98179861</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/98179861</guid><author>heyue_99</author><pubDate>Fri, 02 Aug 2019 11:38:54 +0800</pubDate><description><![CDATA[1.Promise对象基础
1.1 Promise 的状态
Promise有3种状态：

Pending：进行中
Resolved(Fulfilled)：已完成
Rejected：已失败

1.2 .then() 和 .catch()
Promise构造器接受一个函数作为参数，这个函数有两个参数：resolve，reject，分别代表这个Promise实例成功之后的回调函数和失败之后的回调函数。
...]]></description><category></category></item><item><title><![CDATA[git的一些记录]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/90755366</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/90755366</guid><author>heyue_99</author><pubDate>Mon, 03 Jun 2019 17:14:01 +0800</pubDate><description><![CDATA[从一个git仓库迁移到另外一个git仓库
1). 从原地址克隆一份裸版本库，比如原本托管于 GitHub。
git clone --bare git://github.com/username/project.git
–bare 创建的克隆版本库都不包含工作区，直接就是版本库的内容，这样的版本库称为裸版本库。
2). 然后到新的 Git 服务器上创建一个新项目，比如 GitCafe。
3). 以镜...]]></description><category></category></item><item><title><![CDATA[小程序的一些基本内容记录]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/90670270</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/90670270</guid><author>heyue_99</author><pubDate>Wed, 29 May 2019 14:23:30 +0800</pubDate><description><![CDATA[小程序基础
小程序与普通网页开发的区别
小程序框架本身所具有的快速加载和快速渲染能力。
网页开发渲染线程和脚本线程是互斥的，这也是为什么长时间的脚本运行可能会导致页面失去响应。
而在小程序中，二者是分开的，分别运行在不同的线程中。
网页开发者可以使用到各种浏览器暴露出来的 DOM API，进行 DOM 选中和操作。
小程序的逻辑层和渲染层是分开的 ，逻辑层运行在 JSCore 中，并没有一个完整浏...]]></description><category></category></item><item><title><![CDATA[小程序云开发初体验]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/89922735</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/89922735</guid><author>heyue_99</author><pubDate>Tue, 07 May 2019 15:52:05 +0800</pubDate><description><![CDATA[小程序·云开发
开发者可以使用云开发开发微信小程序、小游戏，无需搭建服务器，即可使用云端能力。
云开发为开发者提供完整的云端支持，弱化后端和运维概念，无需搭建服务器，使用平台提供的 API 进行核心业务开发，即可实现快速上线和迭代，同时这一能力，同开发者已经使用的云服务相互兼容，并不互斥。
核心功能包括：云存储、云数据库和云函数。音视频和智能图像服务是增值服务。

云数据库
云开发提供了一个 JS...]]></description><category></category></item><item><title><![CDATA[小程序授权]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/89005437</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/89005437</guid><author>heyue_99</author><pubDate>Wed, 03 Apr 2019 21:30:23 +0800</pubDate><description><![CDATA[相关授权配置
部分接口需要经过用户授权同意才能调用。我们把这些接口按使用范围分成多个 scope ，用户选择对 scope 来进行授权，当授权给一个 scope 之后，其对应的所有接口都可以直接使用。

获取用户授权设置
开发者可以使用 wx.getSetting 获取用户当前的授权状态。
wx.getSetting({
  success(res) {
    console.log(res.a...]]></description><category></category></item><item><title><![CDATA[小程序自定义头部]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/88991066</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/88991066</guid><author>heyue_99</author><pubDate>Wed, 03 Apr 2019 11:19:44 +0800</pubDate><description><![CDATA[相关头部设置

小程序全局配：小程序根目录下的 app.json 文件用来对微信小程序进行全局配置。



页面配置：每一个小程序页面也可以使用 .json 文件来对本页面的窗口表现进行配置。页面中配置项在当前页面会覆盖 app.json 的 window 中相同的配置项。



由于自定义头部为白色时，状态栏时间、电量等需要设置为黑色。


微信版本7.0.0以上支持单个页面进行头部配置，6.6...]]></description><category></category></item><item><title><![CDATA[table九宫格hover实现]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/76426579</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/76426579</guid><author>heyue_99</author><pubDate>Mon, 31 Jul 2017 12:59:54 +0800</pubDate><description><![CDATA[Month
    Savings
  
  
    January
    $100
  

cellpadding 规定单元边沿与其内容之间的空白。
cellspacing 规定单元格之间的空白。
九宫格
	
		
			1
			2
			3
		
		
			4
			5
			6
		
		
			7
			8
			9
		
	
CSS
                t]]></description><category></category></item><item><title><![CDATA[CSS实现tip框三角形]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/74935956</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/74935956</guid><author>heyue_99</author><pubDate>Mon, 10 Jul 2017 20:19:55 +0800</pubDate><description><![CDATA[CSS实现tip框


方法一：利用盒模型border
利用长宽设为0，border设为一定宽度，上下左右一边设为三角形颜色，另外的transparent

.parent1{
            width: 0;
            height: 0;
            border-width: 30px;
            border-style: so]]></description><category></category></item><item><title><![CDATA[前后端路由]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/74923738</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/74923738</guid><author>heyue_99</author><pubDate>Mon, 10 Jul 2017 16:24:52 +0800</pubDate><description><![CDATA[路由

路由是根据不同的 url 地址展示不同的内容或页面。

在过去，服务器端处理来自浏览器的请求时，要根据不同的Url路由，拼接出对应的视图页面，通过Http返回给浏览器进行解析渲染。后端路由每次访问一个新页面的时候都要向服务器发送请求，然后服务器再响应请求，这个过程肯定会有延迟。


前端路由

前端路由就是把不同路由对应不同的内容或页面的任务交给前端来做。
前端路由在访]]></description><category></category></item><item><title><![CDATA[jQuery公告栏文字滚动插件]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/74905631</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/74905631</guid><author>heyue_99</author><pubDate>Sun, 09 Jul 2017 20:48:41 +0800</pubDate><description><![CDATA[jQuery插件
关于jQuery插件，http://www.cnblogs.com/ajianbeyourself/p/5815689.html 这篇文章写得真心不错
（1）通过$.extend()来扩展jQuery  （2）通过$.fn 向jQuery添加新的方法
方法一仅是在jQuery命名空间或者理解成jQuery身上添加了一个静态方法而以。所以我们调用通过$.extend()添加的]]></description><category></category></item><item><title><![CDATA[jQuery.fn.extend() 和 jQuery.extend()]]></title><link>https://blog.youkuaiyun.com/heyue_99/article/details/74860368</link><guid>https://blog.youkuaiyun.com/heyue_99/article/details/74860368</guid><author>heyue_99</author><pubDate>Sun, 09 Jul 2017 14:43:05 +0800</pubDate><description><![CDATA[jQuery为开发插件提拱了两个方法，分别是：

jQuery.fn.extend();  jQuery.extend()；


jQuery.fn:


jQuery.fn = jQuery.prototype

jQuery便像一个封装得非常好的类，比如语句$(“#btn1″) 会生成一个 jQuery类的实例


jQuery.extend(object):]]></description><category></category></item></channel></rss>