<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Alan Notes</title>
    <link>https://denghua.cc/</link>
    <description>关于软件、产品与持续学习的个人笔记。</description>
    <language>zh-CN</language>
    <lastBuildDate>Thu, 24 Oct 2019 16:00:00 GMT</lastBuildDate>
    <atom:link href="https://denghua.cc/feed.xml" rel="self" type="application/rss+xml" />
    <item>
        <title>Vuex3源码学习笔记之Vuex的Map语法糖</title>
        <link>https://denghua.cc/posts/20191025-Vuex3%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BVuex%E7%9A%84Map%E8%AF%AD%E6%B3%95%E7%B3%96</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20191025-Vuex3%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BVuex%E7%9A%84Map%E8%AF%AD%E6%B3%95%E7%B3%96</guid>
        <pubDate>Thu, 24 Oct 2019 16:00:00 GMT</pubDate>
        <description>在 Vuex 安装在 Vue 的过程中，会把用户定义的 store 实例赋值给 Vue 实例对象的 $store 中，所以我们在 Vue 组件中的任意地方使用 this.$store 调用 store 的值。但是这样使用可读性并不是很好，这</description>
        <category>Vuex</category><category>源码学习</category>
      </item>
<item>
        <title>Vuex3源码学习笔记之Vuex的数据操作</title>
        <link>https://denghua.cc/posts/20191018-Vuex3%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BVuex%E7%9A%84%E6%95%B0%E6%8D%AE%E6%93%8D%E4%BD%9C</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20191018-Vuex3%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BVuex%E7%9A%84%E6%95%B0%E6%8D%AE%E6%93%8D%E4%BD%9C</guid>
        <pubDate>Thu, 17 Oct 2019 16:00:00 GMT</pubDate>
        <description>state 是在模块安装 installModule 函数中设置的。 通过 getNestedState 方法获取父级模块，然后把所有模块下面的 state 数据都拷贝到 root 的 state 中。</description>
        <category>Vuex</category><category>源码学习</category>
      </item>
<item>
        <title>Vuex3源码学习笔记之Vuex的初始化</title>
        <link>https://denghua.cc/posts/20191011-Vuex3%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BVuex%E7%9A%84%E5%88%9D%E5%A7%8B%E5%8C%96</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20191011-Vuex3%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BVuex%E7%9A%84%E5%88%9D%E5%A7%8B%E5%8C%96</guid>
        <pubDate>Thu, 10 Oct 2019 16:00:00 GMT</pubDate>
        <description>Store.js 文件中的代码中，会导出一个 Store 类，我们在使用 Vuex 的时候都是从先创建一个 Store 实例对象开始的。 下面看下 Store 实例对象的初始化过程。 先看下 Store 类的初始化函数 constructo</description>
        <category>Vuex</category><category>源码学习</category>
      </item>
<item>
        <title>Vuex3源码学习笔记之Vuex的安装</title>
        <link>https://denghua.cc/posts/20191005-Vuex3%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BVuex%E7%9A%84%E5%AE%89%E8%A3%85</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20191005-Vuex3%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BVuex%E7%9A%84%E5%AE%89%E8%A3%85</guid>
        <pubDate>Fri, 04 Oct 2019 16:00:00 GMT</pubDate>
        <description>Vuex 是一个专为 Vue.js 应用程序开发的 状态管理模式 。它采用集中式存储管理应用的所有组件的状态，并以相应的规则保证状态以一种可预测的方式发生变化。 先查看下 src 下面的文件目录结构。</description>
        <category>Vuex</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之初始化终局</title>
        <link>https://denghua.cc/posts/20190930-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%88%9D%E5%A7%8B%E5%8C%96%E7%BB%88%E5%B1%80</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190930-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%88%9D%E5%A7%8B%E5%8C%96%E7%BB%88%E5%B1%80</guid>
        <pubDate>Sun, 29 Sep 2019 16:00:00 GMT</pubDate>
        <description>再次回到 initState 函数中，其中 data 、 watch 、 computed 和 props 选项的初始化都已经学完了，下面还剩下 methods 选项的初始化，看下面的代码。 通过调用 initMethods 函数初始化 m</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之Props</title>
        <link>https://denghua.cc/posts/20190928-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BProps</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190928-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BProps</guid>
        <pubDate>Fri, 27 Sep 2019 16:00:00 GMT</pubDate>
        <description>前面章节通过初始化 data 选项的 initData 函数学习了 Vue 的响应式系统。 下面继续学习 props 选项的初始化。 回到 initState 函数，查看初始化 props 选项的代码，在 core/instance/sta</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之计算属性</title>
        <link>https://denghua.cc/posts/20190926-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190926-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7</guid>
        <pubDate>Wed, 25 Sep 2019 16:00:00 GMT</pubDate>
        <description>下面看下 Vue 的计算属性的实现，计算属性收集依赖和触发依赖的方式和普通的响应式数据是不一样的。 回到 initState 函数中，在 core/instance/state.js 文件中，看下面的代码。 如果设置了 computed 选</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之侦听器</title>
        <link>https://denghua.cc/posts/20190925-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E4%BE%A6%E5%90%AC%E5%99%A8</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190925-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E4%BE%A6%E5%90%AC%E5%99%A8</guid>
        <pubDate>Tue, 24 Sep 2019 16:00:00 GMT</pubDate>
        <description>Vue 给我们提供了侦听器方法 vm.$watch 和选项 watch ，用来观察 Vue 实例变化，然后执行一些操作。 下面看下它们是怎么实现的，其实它们都是基于观察者 watcher 的封装。 先看 Vue.prototype.$wat</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之观察者的执行</title>
        <link>https://denghua.cc/posts/20190923-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E8%A7%82%E5%AF%9F%E8%80%85%E7%9A%84%E6%89%A7%E8%A1%8C</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190923-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E8%A7%82%E5%AF%9F%E8%80%85%E7%9A%84%E6%89%A7%E8%A1%8C</guid>
        <pubDate>Sun, 22 Sep 2019 16:00:00 GMT</pubDate>
        <description>先看下同步执行的代码。 如果设置了观察者的 sync 属性为 true 的话，会执行了观察者的 run 方法，执行同步更新。</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之观察者</title>
        <link>https://denghua.cc/posts/20190921-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E8%A7%82%E5%AF%9F%E8%80%85</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190921-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E8%A7%82%E5%AF%9F%E8%80%85</guid>
        <pubDate>Fri, 20 Sep 2019 16:00:00 GMT</pubDate>
        <description>下面看下观察者 Watcher 的代码，这个类比较复杂，里面创建了很多属性和方法。</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之组件的挂载</title>
        <link>https://denghua.cc/posts/20190919-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E7%BB%84%E4%BB%B6%E7%9A%84%E6%8C%82%E8%BD%BD</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190919-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E7%BB%84%E4%BB%B6%E7%9A%84%E6%8C%82%E8%BD%BD</guid>
        <pubDate>Wed, 18 Sep 2019 16:00:00 GMT</pubDate>
        <description>前面章节主要通过 initData 函数在初始化 data 选项的过程来学习了 Vue 的响应式系统。 主要讲了响应式系统中的工厂函数 observe 和监听器 Observer 以及如何定义响应式属性的 defineReactive 函数</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之Set和Del</title>
        <link>https://denghua.cc/posts/20190917-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BSet%E5%92%8CDel</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190917-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BSet%E5%92%8CDel</guid>
        <pubDate>Mon, 16 Sep 2019 16:00:00 GMT</pubDate>
        <description>下面看下 set 函数，我们在扩展 Vue 的构造函数的原型对象时创建 Vue.prototype.$set 方法，然后在扩展 Vue 的构造函数的静态方法时创建 Vue.set 方法，这两个方法所赋值的函数都是 set 函数。 在 Vue</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之数组的响应性</title>
        <link>https://denghua.cc/posts/20190915-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E6%95%B0%E7%BB%84%E7%9A%84%E5%93%8D%E5%BA%94%E5%BC%8F</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190915-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E6%95%B0%E7%BB%84%E7%9A%84%E5%93%8D%E5%BA%94%E5%BC%8F</guid>
        <pubDate>Sat, 14 Sep 2019 16:00:00 GMT</pubDate>
        <description>学习完对象的响应式定义后，再看下数组的响应式定义，回到 Observer 的构造函数中，看下面的代码。 if 代码块中定义了数组响应式，首先判断宿主环境中是否存在 proto 属性，这个属性是对象的隐式原型对象，只有在 IE 11 以上的浏</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之响应式定义</title>
        <link>https://denghua.cc/posts/20190912-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%93%8D%E5%BA%94%E5%BC%8F%E5%AE%9A%E4%B9%89</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190912-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%93%8D%E5%BA%94%E5%BC%8F%E5%AE%9A%E4%B9%89</guid>
        <pubDate>Wed, 11 Sep 2019 16:00:00 GMT</pubDate>
        <description>defineReactive 函数从名字上看应该是一个定义响应式属性的函数。 下面看它的代码，在 core/observer/index.js 文件中。 其实在前面调用 initRender 函数中定义 vm.$attrs 和 vm.$li</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之监听器</title>
        <link>https://denghua.cc/posts/20190910-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E7%9B%91%E5%90%AC%E5%99%A8</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190910-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E7%9B%91%E5%90%AC%E5%99%A8</guid>
        <pubDate>Mon, 09 Sep 2019 16:00:00 GMT</pubDate>
        <description>Vue 最核心的地方就是它的响应式系统，这是它最核心的精华，也是明显区别于其他的框架像 React 、 Angular 的地方。 在上一章初始化实例属性的时候，学习了 initState 函数，这个函数里面调用了一系列初始化选项的函数，为实</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之实例化</title>
        <link>https://denghua.cc/posts/20190906-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%AE%9E%E4%BE%8B%E5%8C%96</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190906-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%AE%9E%E4%BE%8B%E5%8C%96</guid>
        <pubDate>Thu, 05 Sep 2019 16:00:00 GMT</pubDate>
        <description>在前面我们学习 Vue 的实例化时，单独用了两章说明 Vue 的选项合并的内容，下面开始真正学习 Vue 的实例化。 继续看 init 函数下面的代码，在文件 core/instance/init.js 中。 在前面学习中只是提到在非生产环</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之选项合并的策略</title>
        <link>https://denghua.cc/posts/20190902-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E9%80%89%E9%A1%B9%E5%90%88%E5%B9%B6%E7%9A%84%E7%AD%96%E7%95%A5</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190902-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E9%80%89%E9%A1%B9%E5%90%88%E5%B9%B6%E7%9A%84%E7%AD%96%E7%95%A5</guid>
        <pubDate>Sun, 01 Sep 2019 16:00:00 GMT</pubDate>
        <description>上一章的代码规范化了各个选项的值，主要是为了接下来更好的进行合并选项。 下面开始就是真正进行选项合并的代码。 具体要怎么合并呢？不同的字段的合并策略是一样的吗？</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之选项合并的规范化</title>
        <link>https://denghua.cc/posts/20190830-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E9%80%89%E9%A1%B9%E5%90%88%E5%B9%B6%E7%9A%84%E8%A7%84%E8%8C%83%E5%8C%96</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190830-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E9%80%89%E9%A1%B9%E5%90%88%E5%B9%B6%E7%9A%84%E8%A7%84%E8%8C%83%E5%8C%96</guid>
        <pubDate>Thu, 29 Aug 2019 16:00:00 GMT</pubDate>
        <description>我们在使用 new 创建 Vue 的实例对象时，必定传入一个参数对象 options 进去，这个参数对象其实就是 Vue 的选项 options 。比如在 Vue 项目的入口文件中。</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之初始化开篇</title>
        <link>https://denghua.cc/posts/20190828-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%88%9D%E5%A7%8B%E5%8C%96%E5%BC%80%E7%AF%87</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190828-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%88%9D%E5%A7%8B%E5%8C%96%E5%BC%80%E7%AF%87</guid>
        <pubDate>Tue, 27 Aug 2019 16:00:00 GMT</pubDate>
        <description>Vue 的基本的结构我们已经弄清楚了，下面正式学习 Vue 的实例对象初始化过程。 现在我们回到出生地文件 core/instance/index.js ，查看下面的代码。 在使用 new 的创建实例对象的过程中，会执行构造函数中的 thi</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之平台化包装</title>
        <link>https://denghua.cc/posts/20190826-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%B9%B3%E5%8F%B0%E5%8C%96%E5%8C%85%E8%A3%85</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190826-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%B9%B3%E5%8F%B0%E5%8C%96%E5%8C%85%E8%A3%85</guid>
        <pubDate>Sun, 25 Aug 2019 16:00:00 GMT</pubDate>
        <description>在 core 文件夹下面的代码是 Vue 的核心代码，它并不涉及任何与平台相关的内容。 Vue 的平台目前主要有两个， 分别是 Web 平台和 Weex 平台。 Web 平台是和浏览器相关，它里面的代码运行在浏览器中。而 Weex 平台的代</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之构造函数的扩展</title>
        <link>https://denghua.cc/posts/20190823-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E7%9A%84%E6%89%A9%E5%B1%95</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190823-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E7%9A%84%E6%89%A9%E5%B1%95</guid>
        <pubDate>Thu, 22 Aug 2019 16:00:00 GMT</pubDate>
        <description>想要了解 Vue 的实例化过程，还是先了解下 Vue 的构造函数以及平台化包装吧。 我们知道 core/instance/index.js 是 Vue 的出生地文件，是一切代码最开始的地方。</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>Vue2源码学习笔记之初识Vue</title>
        <link>https://denghua.cc/posts/20190820-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%88%9D%E8%AF%86Vue</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190820-Vue2%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%88%9D%E8%AF%86Vue</guid>
        <pubDate>Mon, 19 Aug 2019 16:00:00 GMT</pubDate>
        <description>Vue 是前端三大 JavaScript 框架之一。它的核心是响应式原理，并被设计自底向上逐层应用的渐进式框架。 Vue 的核心库只关注视图层，不仅易于上手，还便于与第三方库或既有项目整合。另一方面，当与现代化的工具链以及各种支持类库结合使</description>
        <category>Vue</category><category>源码学习</category>
      </item>
<item>
        <title>React服务端渲染原理和实现笔记</title>
        <link>https://denghua.cc/posts/20190816-React%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93%E5%8E%9F%E7%90%86%E5%92%8C%E5%AE%9E%E7%8E%B0%E7%AC%94%E8%AE%B0</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190816-React%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93%E5%8E%9F%E7%90%86%E5%92%8C%E5%AE%9E%E7%8E%B0%E7%AC%94%E8%AE%B0</guid>
        <pubDate>Thu, 15 Aug 2019 16:00:00 GMT</pubDate>
        <description>客户端渲染:（CSR: Client side render ），主要是通过浏览器来渲染页面，浏览器解析 HTML、CSS、JavaScript 文件，然后通过计算布局和渲染页面。 服务器渲染：（SSR: Server side rende</description>
        <category>Test</category>
      </item>
<item>
        <title>TDD和BDD学习笔记</title>
        <link>https://denghua.cc/posts/20190809-TDD%E5%92%8CBDD%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190809-TDD%E5%92%8CBDD%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0</guid>
        <pubDate>Thu, 08 Aug 2019 16:00:00 GMT</pubDate>
        <description>1. 更好的代码组织，项目的可维护性增强 2. 更小的 Bug 出现概率，尤其是回归测试中的 Bug 3. 修改工程质量差的项目，更加安全 4. 项目具备潜在的文档特性 5. 扩展前端的知识面</description>
        <category>Test</category>
      </item>
<item>
        <title>Jest入门学习笔记</title>
        <link>https://denghua.cc/posts/20190803-Jest%E5%85%A5%E9%97%A8%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190803-Jest%E5%85%A5%E9%97%A8%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0</guid>
        <pubDate>Fri, 02 Aug 2019 16:00:00 GMT</pubDate>
        <description>Jest 是前端最流行的测试框架之一，使用非常简单，很多著名的前端项目比如 Vue 、 React 都在使用它。 初始化一个基本的 Jest 配置，执行下面命令生成 jest.config.js 文件。</description>
        <category>Jest</category><category>Test</category>
      </item>
<item>
        <title>Webpack4之手动实现一个Plugin</title>
        <link>https://denghua.cc/posts/20190728-Webpack4%E4%B9%8B%E6%89%8B%E5%8A%A8%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AAPlugin</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190728-Webpack4%E4%B9%8B%E6%89%8B%E5%8A%A8%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AAPlugin</guid>
        <pubDate>Sat, 27 Jul 2019 16:00:00 GMT</pubDate>
        <description>下面手动实现一个简单的 Webpack Plugin。 先创建一个 Webpack 项目 在根目录中创建 src 文件夹，并在里面中创建一个 index.js 文件，编写下面代码</description>
        <category>Webpack</category>
      </item>
<item>
        <title>Webpack4之手动实现一个Loader</title>
        <link>https://denghua.cc/posts/20190725-Webpack4%E4%B9%8B%E6%89%8B%E5%8A%A8%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AALoader</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190725-Webpack4%E4%B9%8B%E6%89%8B%E5%8A%A8%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AALoader</guid>
        <pubDate>Wed, 24 Jul 2019 16:00:00 GMT</pubDate>
        <description>下面手动实现一个简单的 Webpack Loader。 先创建一个 Webpack 项目 在根目录中创建 src 文件夹，并在里面中创建一个 index.js 文件，编写下面代码</description>
        <category>Webpack</category>
      </item>
<item>
        <title>Webpack4之性能优化</title>
        <link>https://denghua.cc/posts/20190721-Webpack4%E4%B9%8B%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190721-Webpack4%E4%B9%8B%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96</guid>
        <pubDate>Sat, 20 Jul 2019 16:00:00 GMT</pubDate>
        <description>尽可能去使用新版本的工具，包括 Node，Npm，Yarn，Webpack 等。因为新版本的工具都有性能的优化或者提升，可以提高 Webpack 编译和打包的速度。</description>
        <category>Webpack</category><category>性能优化</category>
      </item>
<item>
        <title>使用Express实现webpack-dev-server</title>
        <link>https://denghua.cc/posts/20190712-%E4%BD%BF%E7%94%A8Express%E5%AE%9E%E7%8E%B0webpack-dev-server</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190712-%E4%BD%BF%E7%94%A8Express%E5%AE%9E%E7%8E%B0webpack-dev-server</guid>
        <pubDate>Thu, 11 Jul 2019 16:00:00 GMT</pubDate>
        <description>Webpack 是前端最流行的编译工具之一，而 webpack dev server 是 Webpack 的开发环境服务器，它的底层依赖的就是服务器框架 Express。下面使用 Express 的实现一个简单的 webpack dev s</description>
        <category>Webpack</category><category>Express</category>
      </item>
<item>
        <title>webpack4之DllPlugin配置</title>
        <link>https://denghua.cc/posts/20190705-Webpack4%E4%B9%8BDllPlugin%E9%85%8D%E7%BD%AE</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190705-Webpack4%E4%B9%8BDllPlugin%E9%85%8D%E7%BD%AE</guid>
        <pubDate>Thu, 04 Jul 2019 16:00:00 GMT</pubDate>
        <description>使用 DllPlugin 插件先提前打包一些不经常变化的第三方库，然后在后面项目打包的时候直接引用它们，而不需要重新打包这些库，这样可以有效的提升项目打包速度。</description>
        <category>Webpack</category>
      </item>
<item>
        <title>数据结构之集合和映射</title>
        <link>https://denghua.cc/posts/20190625-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B%E9%9B%86%E5%90%88%E5%92%8C%E6%98%A0%E5%B0%84</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190625-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B%E9%9B%86%E5%90%88%E5%92%8C%E6%98%A0%E5%B0%84</guid>
        <pubDate>Mon, 24 Jun 2019 16:00:00 GMT</pubDate>
        <description>在 ES6 中新增了集合 Set 和 映射 Map 的内置数据结构。 Set 类似于内置的 Array 结构，但是成员的值都是唯一的，没有重复的值。而 Map 类似于内置的 Object 结构，也是键值对的集合，但是它的 key 值不限定于</description>
        <category>数据结构</category><category>集合</category><category>映射</category>
      </item>
<item>
        <title>数据结构之二分搜索树</title>
        <link>https://denghua.cc/posts/20190622-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B%E4%BA%8C%E5%88%86%E6%90%9C%E7%B4%A2%E6%A0%91</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190622-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B%E4%BA%8C%E5%88%86%E6%90%9C%E7%B4%A2%E6%A0%91</guid>
        <pubDate>Fri, 21 Jun 2019 16:00:00 GMT</pubDate>
        <description>二分搜索树是一种特殊的二叉树，它的每个节点的子节点不允许超过两个。它的特点是：每个节点的值都比他的左子树的值大，比右子树的值小。它可以高效的在树中进行插入、 查找和删除数据。</description>
        <category>数据结构</category><category>二分搜索树</category>
      </item>
<item>
        <title>数据结构之链表</title>
        <link>https://denghua.cc/posts/20190618-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B%E9%93%BE%E8%A1%A8</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190618-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B%E9%93%BE%E8%A1%A8</guid>
        <pubDate>Mon, 17 Jun 2019 16:00:00 GMT</pubDate>
        <description>链表，一般指的是单向不循环链表，它的每个元素由一个存储元素本身的节点和一个指向下一个元素的引用（也称指针或链接）组成。 链表相对于数组，在添加或移除元素的时候不需要移动其他元素，性能很好。但是链表不能直接访问某个元素，需要从表头一个个迭代去</description>
        <category>数据结构</category><category>链表</category>
      </item>
<item>
        <title>数据结构之栈和队列</title>
        <link>https://denghua.cc/posts/20190612-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190612-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97</guid>
        <pubDate>Tue, 11 Jun 2019 16:00:00 GMT</pubDate>
        <description>栈： Stack，是一种遵循后进先出 (LIFO: Last In First Out) 原则的有序集合，是一种线性结构。</description>
        <category>数据结构</category><category>栈</category><category>队列</category>
      </item>
<item>
        <title>JavaScript之This浅谈</title>
        <link>https://denghua.cc/posts/20190606-JavaScript%E4%B9%8Bthis%E6%B5%85%E8%B0%88</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190606-JavaScript%E4%B9%8Bthis%E6%B5%85%E8%B0%88</guid>
        <pubDate>Wed, 05 Jun 2019 16:00:00 GMT</pubDate>
        <description>在 JavaScript 的对象和函数内部，如果需要再次调用对象或者函数时，有时候可以使用 this 代替这个对象或者函数。</description>
        <category>JavaScript</category><category>This</category>
      </item>
<item>
        <title>代码风格浅谈</title>
        <link>https://denghua.cc/posts/20190523-%E4%BB%A3%E7%A0%81%E9%A3%8E%E6%A0%BC%E6%B5%85%E8%B0%88</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190523-%E4%BB%A3%E7%A0%81%E9%A3%8E%E6%A0%BC%E6%B5%85%E8%B0%88</guid>
        <pubDate>Wed, 22 May 2019 16:00:00 GMT</pubDate>
        <description>前端的代码风格规范主要还是 JavaScript 的风格规范 (JavaScript Style Guide)。JavaScript 比较出名的风格规范主要有 standard、 airbnb 、google等等。我们可以借助一些工具比如 </description>
        <category>代码风格</category>
      </item>
<item>
        <title>JavaScript之深浅拷贝</title>
        <link>https://denghua.cc/posts/20190511-JavaScript%E4%B9%8B%E6%B7%B1%E6%B5%85%E6%8B%B7%E8%B4%9D</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190511-JavaScript%E4%B9%8B%E6%B7%B1%E6%B5%85%E6%8B%B7%E8%B4%9D</guid>
        <pubDate>Fri, 10 May 2019 16:00:00 GMT</pubDate>
        <description>在讲深浅拷贝前，有必要讲下 JavaScript 的内置类型。JavaScript 有 2 种类型，基本类型和引用类型。 基本类型包括 string 、 number 、 boolean 、 null 、 undefined 、 symbo</description>
        <category>JavaScript</category><category>深拷贝</category>
      </item>
<item>
        <title>前端性能优化浅谈</title>
        <link>https://denghua.cc/posts/20190428-%E5%89%8D%E7%AB%AF%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E6%B5%85%E8%B0%88</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190428-%E5%89%8D%E7%AB%AF%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E6%B5%85%E8%B0%88</guid>
        <pubDate>Sat, 27 Apr 2019 16:00:00 GMT</pubDate>
        <description>在前端，性能优化是离不开的话题。性能优化可以从两个大的方面去着手，分别是网络层面和渲染层面。网络层面主要是 HTTP 请求的优化，而渲染层面则是浏览器渲染过程中的优化。</description>
        <category>性能优化</category><category>浏览器</category>
      </item>
<item>
        <title>JavaScript之事件循环浅析</title>
        <link>https://denghua.cc/posts/20190422-JavaScript%E4%B9%8B%E4%BA%8B%E4%BB%B6%E5%BE%AA%E7%8E%AF%E6%B5%85%E6%9E%90</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190422-JavaScript%E4%B9%8B%E4%BA%8B%E4%BB%B6%E5%BE%AA%E7%8E%AF%E6%B5%85%E6%9E%90</guid>
        <pubDate>Sun, 21 Apr 2019 16:00:00 GMT</pubDate>
        <description>JavaScript 是单线程非阻塞语言，这里单线程指的是执行程序的主线程是单线程的，而不是程序只有一个线程。 非阻塞是因为执行主程序虽然是单线程的，但是并不会被阻塞，这里得益于它的异步流程。而异步流程的是通过事件循环（Event Loop</description>
        <category>浏览器</category><category>Nodejs</category><category>JavaScript</category>
      </item>
<item>
        <title>算法-高级排序算法</title>
        <link>https://denghua.cc/posts/20190408-%E7%AE%97%E6%B3%95%E4%B9%8B%E9%AB%98%E7%BA%A7%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190408-%E7%AE%97%E6%B3%95%E4%B9%8B%E9%AB%98%E7%BA%A7%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95</guid>
        <pubDate>Sun, 07 Apr 2019 16:00:00 GMT</pubDate>
        <description>在排序算法中，常见的高级排序算法主要有 2 种：归并排序和快速排序。 归并排序是一种分治算法。其思想是将原始数组切分成较小的数组，直到每个小数组只有一个位置。接着将小数组（只有一个值）之间进行比较排序，之后归并成较大的数组，直到最后只有一个</description>
        <category>算法</category><category>排序算法</category>
      </item>
<item>
        <title>JavaScript之防抖和节流</title>
        <link>https://denghua.cc/posts/20190330-JavaScript%E4%B9%8B%E9%98%B2%E6%8A%96%E5%92%8C%E8%8A%82%E6%B5%81</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190330-JavaScript%E4%B9%8B%E9%98%B2%E6%8A%96%E5%92%8C%E8%8A%82%E6%B5%81</guid>
        <pubDate>Fri, 29 Mar 2019 16:00:00 GMT</pubDate>
        <description>在某些特殊情况下，会出现高频操作。比如监听器在监听页面的滚动或者浏览器窗口尺寸变化时，页面滚动或者浏览器窗口变化时会使得监听器出现高频操作，这时候会非常消耗浏览器的性能，而且可能会出现错误。所以需要限制高频操作，防止出现一些不是预期的情况，</description>
        <category>JavaScript</category><category>性能优化</category>
      </item>
<item>
        <title>浏览器缓存浅析</title>
        <link>https://denghua.cc/posts/20190318-%E6%B5%8F%E8%A7%88%E5%99%A8%E7%BC%93%E5%AD%98%E6%B5%85%E6%9E%90</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190318-%E6%B5%8F%E8%A7%88%E5%99%A8%E7%BC%93%E5%AD%98%E6%B5%85%E6%9E%90</guid>
        <pubDate>Sun, 17 Mar 2019 16:00:00 GMT</pubDate>
        <description>浏览器缓存也就是 HTTP 缓存。缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当 Web 缓存发现请求的资源已经被存储，它会拦截请求，返回该资源的拷贝，而不会去源服务器重新下载。这样带来的好处有：缓解服务器端压力，提升性能(获</description>
        <category>浏览器</category><category>缓存</category><category>性能优化</category>
      </item>
<item>
        <title>TypeScript在Vue的一些实践</title>
        <link>https://denghua.cc/posts/20190210-TypeScript%E5%9C%A8Vue%E7%9A%84%E4%B8%80%E4%BA%9B%E5%AE%9E%E8%B7%B5</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190210-TypeScript%E5%9C%A8Vue%E7%9A%84%E4%B8%80%E4%BA%9B%E5%AE%9E%E8%B7%B5</guid>
        <pubDate>Sat, 09 Feb 2019 16:00:00 GMT</pubDate>
        <description>今天无意中看到 Vue 作者尤大在知乎问题 TypeScript 不适合在 vue 业务开发中使用吗？ 的回答，说 Vue2 现在确实不是很适合用 TypeScript，现有的 API 和类型系统的结合存在缺陷，存在着一些历史遗留的问题，这</description>
        <category>Vue</category><category>TypeScript</category>
      </item>
<item>
        <title>Git常用命令</title>
        <link>https://denghua.cc/posts/20190108-Git%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20190108-Git%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4</guid>
        <pubDate>Mon, 07 Jan 2019 16:00:00 GMT</pubDate>
        <description>git 是最常用的版本管理工具之一，本文整理了一些常用的 git 命令，主要还是整理一下以前的笔记，然后再复习一下。</description>
        <category>Git</category>
      </item>
<item>
        <title>Node.js项目部署</title>
        <link>https://denghua.cc/posts/20181223-Node.js%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20181223-Node.js%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2</guid>
        <pubDate>Sat, 22 Dec 2018 16:00:00 GMT</pubDate>
        <description>最近写了一个 Nuxt 项目，打算部署到服务器中。因为很久没有部署过新项目，一些部署的流程都已经忘记了，所以打算写一篇 Node.js 项目的部署文章。 写这篇文章，第一可以加深理解，第二也可以方便以后查看。</description>
        <category>Nodejs</category><category>Linux</category>
      </item>
<item>
        <title>Vue之组件通信方法小结</title>
        <link>https://denghua.cc/posts/20181112-Vue%E4%B9%8B%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A1%E6%96%B9%E6%B3%95%E5%B0%8F%E7%BB%93</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20181112-Vue%E4%B9%8B%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A1%E6%96%B9%E6%B3%95%E5%B0%8F%E7%BB%93</guid>
        <pubDate>Sun, 11 Nov 2018 16:00:00 GMT</pubDate>
        <description>props 接受父组件传递的数据 $emit 派发事件</description>
        <category>Vue</category>
      </item>
<item>
        <title>基于TypeScript搭建Vue项目初试</title>
        <link>https://denghua.cc/posts/20181006-%E5%9F%BA%E4%BA%8Etypescript%E6%90%AD%E5%BB%BAvue%E9%A1%B9%E7%9B%AE%E5%88%9D%E8%AF%95</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20181006-%E5%9F%BA%E4%BA%8Etypescript%E6%90%AD%E5%BB%BAvue%E9%A1%B9%E7%9B%AE%E5%88%9D%E8%AF%95</guid>
        <pubDate>Fri, 05 Oct 2018 16:00:00 GMT</pubDate>
        <description>国庆前夕，Vue.js 作者发布了关于 Vue.js v3.0 开发计划的文章，文章中有提到将会使用 TypeScript 重新编写 Vue.js 的源码，使得源码结构更清晰，更易维护。因此觉得是时候学习下 TypeScript 了。</description>
        <category>TypeScript</category><category>Vue</category>
      </item>
<item>
        <title>记一次Hexo搭建博客</title>
        <link>https://denghua.cc/posts/20180814-%E8%AE%B0%E4%B8%80%E6%AC%A1Hexo%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180814-%E8%AE%B0%E4%B8%80%E6%AC%A1Hexo%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2</guid>
        <pubDate>Mon, 13 Aug 2018 16:00:00 GMT</pubDate>
        <description>还记得刚开始弄 Github Pages 博客的时候，是拷贝了别人的 Jekyll 博客模板，然后用自己的博客文章替换掉别人的博客文章，再把一些标题的内容稍微修改一下，最后在 Github Pages 上就会生成自己的博客，非常简单！ 不过</description>
        <category>Nodejs</category><category>Hexo</category>
      </item>
<item>
        <title>Vue中同一个路由的跳转及动画</title>
        <link>https://denghua.cc/posts/20180727-Vue%E4%B8%AD%E5%90%8C%E4%B8%80%E4%B8%AA%E8%B7%AF%E7%94%B1%E7%9A%84%E8%B7%B3%E8%BD%AC%E5%8F%8A%E5%8A%A8%E7%94%BB</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180727-Vue%E4%B8%AD%E5%90%8C%E4%B8%80%E4%B8%AA%E8%B7%AF%E7%94%B1%E7%9A%84%E8%B7%B3%E8%BD%AC%E5%8F%8A%E5%8A%A8%E7%94%BB</guid>
        <pubDate>Thu, 26 Jul 2018 16:00:00 GMT</pubDate>
        <description>在重构vue trailer项目的时候，遇到过一个问题，在电影的详情页面上有一个同类电影的按钮，里面有最多 5 部的同类电影，可以通过点击跳转到相应的电影详情页中去。 比如：在电影 巨齿鲨 的详情页面中，有 解码者 等 5 部同类的电影，点</description>
        <category>Vue</category><category>动画</category>
      </item>
<item>
        <title>CSS清除浮动</title>
        <link>https://denghua.cc/posts/20180720-CSS%E4%B9%8B%E6%B8%85%E9%99%A4%E6%B5%AE%E5%8A%A8</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180720-CSS%E4%B9%8B%E6%B8%85%E9%99%A4%E6%B5%AE%E5%8A%A8</guid>
        <pubDate>Thu, 19 Jul 2018 16:00:00 GMT</pubDate>
        <description>浮动布局是 CSS 布局中最早也是常用的布局之一，兼容性好，使用广泛。 元素浮动在页面设计中一般主要有两个作用。 第一个作用是： 文字环绕图片效果 。</description>
        <category>CSS</category><category>浮动</category>
      </item>
<item>
        <title>CSS之BFC的理解</title>
        <link>https://denghua.cc/posts/20180711-CSS%E4%B9%8BBFC%E7%9A%84%E7%90%86%E8%A7%A3</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180711-CSS%E4%B9%8BBFC%E7%9A%84%E7%90%86%E8%A7%A3</guid>
        <pubDate>Tue, 10 Jul 2018 16:00:00 GMT</pubDate>
        <description>在学习 CSS 中，经常会听到 BFC 这个词，特别是在浮动布局或者是在外边距处理的时候，那么什么是 BFC 呢？BFC 到底有什么作用呢？ 我们来看一看MDN中对 BFC 概念的解释。 块格式化上下文（Block Formatting C</description>
        <category>CSS</category><category>BFC</category>
      </item>
<item>
        <title>JavaScript之箭头函数的不适用场景</title>
        <link>https://denghua.cc/posts/20180706-JavaScript%E4%B9%8B%E7%AE%AD%E5%A4%B4%E5%87%BD%E6%95%B0%E7%9A%84%E4%B8%8D%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180706-JavaScript%E4%B9%8B%E7%AE%AD%E5%A4%B4%E5%87%BD%E6%95%B0%E7%9A%84%E4%B8%8D%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF</guid>
        <pubDate>Thu, 05 Jul 2018 16:00:00 GMT</pubDate>
        <description>ES6 新增了箭头函数，使用起来非常简洁干练。 请看下面代码：</description>
        <category>箭头函数</category><category>JavaScript</category>
      </item>
<item>
        <title>记一次Promise数据传递中的return坑</title>
        <link>https://denghua.cc/posts/20180630-%E8%AE%B0%E4%B8%80%E6%AC%A1Promise%E6%95%B0%E6%8D%AE%E4%BC%A0%E9%80%92%E4%B8%AD%E7%9A%84return%E5%9D%91</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180630-%E8%AE%B0%E4%B8%80%E6%AC%A1Promise%E6%95%B0%E6%8D%AE%E4%BC%A0%E9%80%92%E4%B8%AD%E7%9A%84return%E5%9D%91</guid>
        <pubDate>Fri, 29 Jun 2018 16:00:00 GMT</pubDate>
        <description>熟悉的 Promise 语法的都知道， Promise 的 then 、 catch 方法可以使用链式操作，在 then 的链式操作中，前面操作返回的值是可以被后面的操作所获取到的。</description>
        <category>JavaScript</category><category>Promise</category>
      </item>
<item>
        <title>前端模块化开发规范浅谈</title>
        <link>https://denghua.cc/posts/20180621-%E5%89%8D%E7%AB%AF%E6%A8%A1%E5%9D%97%E5%8C%96%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83%E6%B5%85%E8%B0%88</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180621-%E5%89%8D%E7%AB%AF%E6%A8%A1%E5%9D%97%E5%8C%96%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83%E6%B5%85%E8%B0%88</guid>
        <pubDate>Wed, 20 Jun 2018 16:00:00 GMT</pubDate>
        <description>模块化的开发方式使得代码更加灵活，提高代码复用率，方便进行代码的管理。通常一个文件就是一个模块，有自己的作用域，只向外暴露特定的变量和函数，而不会对全局对象造成污染。 目前流行的模块化主要有 AMD，CMD，CommonJS，ES6 模块这</description>
        <category>模块化</category>
      </item>
<item>
        <title>微信小程序框架WePy学习笔记</title>
        <link>https://denghua.cc/posts/20180613-%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%A1%86%E6%9E%B6wepy%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180613-%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%A1%86%E6%9E%B6wepy%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0</guid>
        <pubDate>Tue, 12 Jun 2018 16:00:00 GMT</pubDate>
        <description>上次体验了一下小程序开发，用的是小程序原生语法来开发。虽然体验了一把原汁原味的小程序开发，但是发现现在版本的小程序原生语法还是比较繁杂的，不够灵活。比如单单页面就由 4 个文件组成，还有组件上不支持脚本等等。在现在 MVVM 框架盛行的年代</description>
        <category>小程序</category><category>WePy</category>
      </item>
<item>
        <title>微信小程序学习笔记</title>
        <link>https://denghua.cc/posts/20180601-%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180601-%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0</guid>
        <pubDate>Thu, 31 May 2018 16:00:00 GMT</pubDate>
        <description>小程序现在可是非常的火爆，前段时间自己也去学习了一下小程序。 第一次使用感觉小程序里面的组件和 API 非常丰富，功能很强大，使用也很方便。 下面总结一下这次学习的心得体会，方便以后查阅。 1. 小程序适合做简单的，用完即走的应用(不用安装</description>
        <category>小程序</category>
      </item>
<item>
        <title>JavaScript之单线程和异步的理解</title>
        <link>https://denghua.cc/posts/20180525-JavaScript%E4%B9%8B%E5%8D%95%E7%BA%BF%E7%A8%8B%E5%92%8C%E5%BC%82%E6%AD%A5%E7%9A%84%E7%90%86%E8%A7%A3</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180525-JavaScript%E4%B9%8B%E5%8D%95%E7%BA%BF%E7%A8%8B%E5%92%8C%E5%BC%82%E6%AD%A5%E7%9A%84%E7%90%86%E8%A7%A3</guid>
        <pubDate>Thu, 24 May 2018 16:00:00 GMT</pubDate>
        <description>JavaScript 最初是设计用来在网页上和用户互动，操作 DOM 的语言，因为用途比较简单，所以被作者设计成了单线程语言。什么是单线程呢？就是同一时间只能做一件事。一般情况下，程序执行的时候是按照顺序一行行的来，不能同时执行多个程序。</description>
        <category>JavaScript</category><category>异步</category>
      </item>
<item>
        <title>JavaScript之作用域和闭包的理解</title>
        <link>https://denghua.cc/posts/20180519-JavaScrip%E4%B9%8B%E4%BD%9C%E7%94%A8%E5%9F%9F%E5%92%8C%E9%97%AD%E5%8C%85%E7%9A%84%E7%90%86%E8%A7%A3</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180519-JavaScrip%E4%B9%8B%E4%BD%9C%E7%94%A8%E5%9F%9F%E5%92%8C%E9%97%AD%E5%8C%85%E7%9A%84%E7%90%86%E8%A7%A3</guid>
        <pubDate>Fri, 18 May 2018 16:00:00 GMT</pubDate>
        <description>JavaScript 使用变量的时候必须要声明，一般在使用前声明，也可以在使用后声明。 JavaScript 程序运行的时候，会自动把变量的声明提升到最前面去，所有变量的声明可以在使用后声明。但是不会把赋值提升上去，比如使用后声明的 a=1</description>
        <category>JavaScript</category><category>作用域</category><category>闭包</category>
      </item>
<item>
        <title>JavaScript之原型的理解</title>
        <link>https://denghua.cc/posts/20180511-JavaScript%E4%B9%8B%E5%8E%9F%E5%9E%8B%E7%9A%84%E7%90%86%E8%A7%A3</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180511-JavaScript%E4%B9%8B%E5%8E%9F%E5%9E%8B%E7%9A%84%E7%90%86%E8%A7%A3</guid>
        <pubDate>Thu, 10 May 2018 16:00:00 GMT</pubDate>
        <description>在 JavaScript 中，一切皆对象。对象也分为普通对象和函数对象。 o1、o2、o3 是普通对象，f1、f2、f3 是函数对象。 区别 ：通过 new Function() 创建出来的对象都是函数对象，f1、f2 归根到底也是通过 n</description>
        <category>JavaScript</category><category>原型</category>
      </item>
<item>
        <title>从输入URL到页面加载完成发生了什么</title>
        <link>https://denghua.cc/posts/20180503-%E4%BB%8E%E8%BE%93%E5%85%A5URL%E5%88%B0%E9%A1%B5%E9%9D%A2%E5%8A%A0%E8%BD%BD%E5%8F%91%E7%94%9F%E4%BA%86%E4%BB%80%E4%B9%88</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180503-%E4%BB%8E%E8%BE%93%E5%85%A5URL%E5%88%B0%E9%A1%B5%E9%9D%A2%E5%8A%A0%E8%BD%BD%E5%8F%91%E7%94%9F%E4%BA%86%E4%BB%80%E4%B9%88</guid>
        <pubDate>Wed, 02 May 2018 16:00:00 GMT</pubDate>
        <description>一道非常经典的面试题： 从输入 URL 到页面加载完成发生了什么？ 在浏览器地址栏键入 URL，按下回车之后会经历以下流程。</description>
        <category>网络通信</category><category>浏览器</category>
      </item>
<item>
        <title>浏览器渲染机制和页面优化</title>
        <link>https://denghua.cc/posts/20180430-%E6%B5%8F%E8%A7%88%E5%99%A8%E6%B8%B2%E6%9F%93%E6%9C%BA%E5%88%B6%E5%92%8C%E4%BC%98%E5%8C%96</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180430-%E6%B5%8F%E8%A7%88%E5%99%A8%E6%B8%B2%E6%9F%93%E6%9C%BA%E5%88%B6%E5%92%8C%E4%BC%98%E5%8C%96</guid>
        <pubDate>Sun, 29 Apr 2018 16:00:00 GMT</pubDate>
        <description>作为一个前端工程师，最常见的运行环境就是浏览器吧。 1. 用户在浏览器地址栏中输入 URL 并按下回车键，把 HTTP 请求发送给服务器。 2. 浏览器获得并解析服务器的返回内容。 3. 浏览器加载 HTML 文件及文件内包含的外部引用及图</description>
        <category>浏览器</category><category>性能优化</category>
      </item>
<item>
        <title>TCP协议的三次握手和四次挥手</title>
        <link>https://denghua.cc/posts/20180425-TCP%E5%8D%8F%E8%AE%AE%E7%9A%84%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%92%8C%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180425-TCP%E5%8D%8F%E8%AE%AE%E7%9A%84%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%92%8C%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B</guid>
        <pubDate>Tue, 24 Apr 2018 16:00:00 GMT</pubDate>
        <description>TCP（Transmission Control Protocol 传输控制协议）是一种面向连接的、可靠的、基于字节流的传输层通信协议。</description>
        <category>网络通信</category><category>TCP</category>
      </item>
<item>
        <title>同源策略和跨域通信</title>
        <link>https://denghua.cc/posts/20180421-%E5%90%8C%E6%BA%90%E7%AD%96%E7%95%A5%E5%92%8C%E8%B7%A8%E5%9F%9F%E9%80%9A%E4%BF%A1</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180421-%E5%90%8C%E6%BA%90%E7%AD%96%E7%95%A5%E5%92%8C%E8%B7%A8%E5%9F%9F%E9%80%9A%E4%BF%A1</guid>
        <pubDate>Fri, 20 Apr 2018 16:00:00 GMT</pubDate>
        <description>什么是同源策略？ 同源策略（Same Origin Policy）是一种约定，它是浏览器最核心也最基本的安全功能。 如果缺少了同源策略，则浏览器的正常功能可能会受到影响。可以说 Web 是构建在同源策略基础之上的，浏览器只是针对同源策略的一</description>
        <category>网络通信</category><category>跨域</category>
      </item>
<item>
        <title>前后端通信之AJAX</title>
        <link>https://denghua.cc/posts/20180418-%E5%89%8D%E5%90%8E%E7%AB%AF%E9%80%9A%E4%BF%A1%E4%B9%8BAJAX</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180418-%E5%89%8D%E5%90%8E%E7%AB%AF%E9%80%9A%E4%BF%A1%E4%B9%8BAJAX</guid>
        <pubDate>Tue, 17 Apr 2018 16:00:00 GMT</pubDate>
        <description>前后端通信又称前后端数据交互，是 Web 开发中必不可少的一个环节。AJAX 通信是最常用的前后端通信方式。 AJAX 即 Asynchronous JavaScript and XML（异步的 JavaScript 和 XML）。 AJA</description>
        <category>网络通信</category><category>AJAX</category>
      </item>
<item>
        <title>HTTP协议知识</title>
        <link>https://denghua.cc/posts/20180413-HTTP%E5%8D%8F%E8%AE%AE%E7%9F%A5%E8%AF%86</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180413-HTTP%E5%8D%8F%E8%AE%AE%E7%9F%A5%E8%AF%86</guid>
        <pubDate>Thu, 12 Apr 2018 16:00:00 GMT</pubDate>
        <description>超文本传输协议（HTTP，HyperText Transfer Protocol）是互联网上应用最为广泛的一种网络协议。 HTTP/0.9：1991 年发布, 已过时。只接受 GET 一种请求方法，没有在通讯中指定版本号，且不支持请求头。由</description>
        <category>网络通信</category><category>HTTP</category>
      </item>
<item>
        <title>Webpack4之开发环境搭建</title>
        <link>https://denghua.cc/posts/20180407-Webpack4%E4%B9%8B%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180407-Webpack4%E4%B9%8B%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA</guid>
        <pubDate>Fri, 06 Apr 2018 16:00:00 GMT</pubDate>
        <description>上次体验了 Webpack4 的零配置，现在进行 Webpack4 开发环境搭建。</description>
        <category>Webpack</category>
      </item>
<item>
        <title>Webpack4之零配置体验</title>
        <link>https://denghua.cc/posts/20180403-Webpack4%E4%B9%8B%E9%9B%B6%E9%85%8D%E7%BD%AE%E4%BD%93%E9%AA%8C</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180403-Webpack4%E4%B9%8B%E9%9B%B6%E9%85%8D%E7%BD%AE%E4%BD%93%E9%AA%8C</guid>
        <pubDate>Mon, 02 Apr 2018 16:00:00 GMT</pubDate>
        <description>Webpack4 发布快一个月了，据悉这个版本做了很多的改动，其中一个就是零配置，当然只针对 js 文件。 下面来体验一下。 打开命令行工具，输入下面代码，需要先安装好 node.js。 输入上面命令后，会生成一个 package.json</description>
        <category>Webpack</category>
      </item>
<item>
        <title>CSS之居中布局</title>
        <link>https://denghua.cc/posts/20180330-CSS%E4%B9%8B%E5%B1%85%E4%B8%AD%E5%B8%83%E5%B1%80</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180330-CSS%E4%B9%8B%E5%B1%85%E4%B8%AD%E5%B8%83%E5%B1%80</guid>
        <pubDate>Thu, 29 Mar 2018 16:00:00 GMT</pubDate>
        <description>CSS 居中布局分为水平居中布局，垂直居中布局，水平垂直居中布局三种形式。</description>
        <category>CSS</category><category>布局</category>
      </item>
<item>
        <title>CSS之三栏布局</title>
        <link>https://denghua.cc/posts/20180327-CSS%E4%B9%8B%E4%B8%89%E6%A0%8F%E5%B8%83%E5%B1%80</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180327-CSS%E4%B9%8B%E4%B8%89%E6%A0%8F%E5%B8%83%E5%B1%80</guid>
        <pubDate>Mon, 26 Mar 2018 16:00:00 GMT</pubDate>
        <description>CSS 三栏布局是最基础的布局方式，一般要求是两边固定宽度，中间自适应。这个布局有多种方法可以实现，下面介绍几种常见的布局方法。</description>
        <category>CSS</category><category>布局</category>
      </item>
<item>
        <title>算法之二分查找法</title>
        <link>https://denghua.cc/posts/20180323-%E7%AE%97%E6%B3%95%E4%B9%8B%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E6%B3%95</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180323-%E7%AE%97%E6%B3%95%E4%B9%8B%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E6%B3%95</guid>
        <pubDate>Thu, 22 Mar 2018 16:00:00 GMT</pubDate>
        <description>二分查找也称折半查找（Binary Search），它是一种效率较高的查找方法。二分查找法要求所查找列表必须为序列表。 1. 从有序数组的最中间元素开始查找，如果该元素正好是指定查找的值，则查找过程结束。否则进行下一步。 2. 如果指定要查</description>
        <category>算法</category><category>二分查找法</category>
      </item>
<item>
        <title>算法之基础排序算法</title>
        <link>https://denghua.cc/posts/20180317-%E7%AE%97%E6%B3%95%E4%B9%8B%E5%9F%BA%E7%A1%80%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180317-%E7%AE%97%E6%B3%95%E4%B9%8B%E5%9F%BA%E7%A1%80%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95</guid>
        <pubDate>Fri, 16 Mar 2018 16:00:00 GMT</pubDate>
        <description>排序算法是《数据结构与算法》中最基础的算法之一。 在排序算法中，常见的基础排序算法主要有四种：冒泡排序、选择排序、插入排序、希尔排序。 下面分别介绍几种基础的排序算法。</description>
        <category>算法</category><category>排序算法</category>
      </item>
<item>
        <title>XSS和CSRF</title>
        <link>https://denghua.cc/posts/20180315-XSS%E5%92%8CCSRF</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180315-XSS%E5%92%8CCSRF</guid>
        <pubDate>Wed, 14 Mar 2018 16:00:00 GMT</pubDate>
        <description>XSS：跨站脚本攻击（Cross Site Scripting） 攻击者往 Web 页面里插入恶意 Script 代码，当用户浏览该页之时，嵌入其中 Web 里面的 Script 代码会被执行，从而达到恶意攻击用户的目的。 反射型： XSS</description>
        <category>网络安全</category>
      </item>
<item>
        <title>如何在Github上展示Vue项目</title>
        <link>https://denghua.cc/posts/20180313-%E5%A6%82%E4%BD%95%E5%9C%A8github%E4%B8%8A%E5%B1%95%E7%A4%BAvue%E9%A1%B9%E7%9B%AE</link>
        <guid isPermaLink="true">https://denghua.cc/posts/20180313-%E5%A6%82%E4%BD%95%E5%9C%A8github%E4%B8%8A%E5%B1%95%E7%A4%BAvue%E9%A1%B9%E7%9B%AE</guid>
        <pubDate>Mon, 12 Mar 2018 16:00:00 GMT</pubDate>
        <description>最近用 Vue 做了几个小 Demo，上传到 Github 中。 以前就看到别人仓库中的项目可以展示出来，让人体验一下这个项目，感觉非常炫酷，所以也打算自己去弄一下试试。如果是一些小项目或者 Demo 的话，是可以直接在 Github Pa</description>
        <category>Github</category><category>Vue</category>
      </item>
  </channel>
</rss>