
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>祝你好运的技术博客</title>
      <link>https://www.calvinhappy.com//blog</link>
      <description>这是一个技术博客，用Next.js，Markdown还有Tailwind.css来构建的</description>
      <language>en-us</language>
      <managingEditor>sunkehappy@gmail.com (祝你好运)</managingEditor>
      <webMaster>sunkehappy@gmail.com (祝你好运)</webMaster>
      <lastBuildDate>Thu, 24 Sep 2020 00:00:00 GMT</lastBuildDate>
      <atom:link href="https://www.calvinhappy.com//tags/源代码/feed.xml" rel="self" type="application/rss+xml"/>
      
  <item>
    <guid>https://www.calvinhappy.com//blog/2020-09-24-webpack-tapable-usage</guid>
    <title>WebPack的Tapable库用法介绍</title>
    <link>https://www.calvinhappy.com//blog/2020-09-24-webpack-tapable-usage</link>
    <description>最近打算看一下WebPack的源代码，遇到的第一个我觉得需要详细看下的不太复杂的点(相比于整个WebPack的代码)就是[Tapable](https://github.com/webpack/tapable)。因为稍微看下WebPack的代码的话就会发现到处都是hooks，这些hooks就是用的这个Tapable。</description>
    <pubDate>Thu, 24 Sep 2020 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>WebPack</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-05-vite-1.0-source-code-explanation</guid>
    <title>vite-1.0源代码解读</title>
    <link>https://www.calvinhappy.com//blog/2021-03-05-vite-1.0-source-code-explanation</link>
    <description>最近在看vite的源代码，入手的是1.0.0-rc13，目前vite的版本是2.0，先写下这个解读过程，然后再分析2.0的。</description>
    <pubDate>Fri, 05 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category><category>置顶</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-06-vite-1.0-preparation</guid>
    <title>vite-1.0源代码解读准备</title>
    <link>https://www.calvinhappy.com//blog/2021-03-06-vite-1.0-preparation</link>
    <description>解读准备主要是要能够修改源代码，然后用我们修改后的代码来运行一个test程序，知道具体运行过程中的一些数据，验证我们的推想。</description>
    <pubDate>Sat, 06 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-06-vite-1.0-simple-introduction</guid>
    <title>vite-1.0简单介绍</title>
    <link>https://www.calvinhappy.com//blog/2021-03-06-vite-1.0-simple-introduction</link>
    <description>vite是通过使用[ES Module](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules)来实现开发环境秒开，快速HMR的。这个ES Module说白了我们前端开发者应该每天都在用，因为我们都在用import，export来导入导出模块。不过如果你还是用的CommonJS的require，那就不是ES Module。</description>
    <pubDate>Sat, 06 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-07-vite-1.0-boot-code-analyze</guid>
    <title>vite-1.0启动代码解析</title>
    <link>https://www.calvinhappy.com//blog/2021-03-07-vite-1.0-boot-code-analyze</link>
    <description>首先入口文件是`bin/vite.js`，那`bin/vite.js`又是调用的`../dist/node/cli`，这个脚本是在我们编译之后才会有的。具体的编译方法，我们可以参考`package.json`里面的`scripts`。</description>
    <pubDate>Sun, 07 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-08-vite-1.0-HTML-plugin</guid>
    <title>vite-1.0 serverPluginHtml文件解读</title>
    <link>https://www.calvinhappy.com//blog/2021-03-08-vite-1.0-HTML-plugin</link>
    <description>通常我们开发的网站，第一次加载的就是HTML页面，vite会改写这个HTML，这是通过`src/node/server/index.ts`里面的`htmlRewritePlugin`来实现的。</description>
    <pubDate>Mon, 08 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-09-vite-1.0-module-rewrite-plugin</guid>
    <title>vite-1.0模块重写插件解读</title>
    <link>https://www.calvinhappy.com//blog/2021-03-09-vite-1.0-module-rewrite-plugin</link>
    <description>这个`serverPluginModuleRewrite`文件是vite 1.0里面非常重要的一个文件，我们需要仔细分析一下，整体结构如下：</description>
    <pubDate>Tue, 09 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-09-vite-1.0-serve-static</guid>
    <title>vite-1.0静态文件解析</title>
    <link>https://www.calvinhappy.com//blog/2021-03-09-vite-1.0-serve-static</link>
    <description>这个`serverPluginServeStatic`文件的作用就是读取硬盘上的文件并返回。我们可以看下代码：</description>
    <pubDate>Tue, 09 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-15-vite-1.0-module-reresolve-plugin</guid>
    <title>vite-1.0模块解析插件解读</title>
    <link>https://www.calvinhappy.com//blog/2021-03-15-vite-1.0-module-reresolve-plugin</link>
    <description>这个`serverPluginModuleResolve`文件也是vite 1.0里面非常重要的一个文件，我们需要仔细分析一下，整体结构如下：</description>
    <pubDate>Mon, 15 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-16-vite-1.0-CSS-plugin</guid>
    <title>vite-1.0 CSS插件解读</title>
    <link>https://www.calvinhappy.com//blog/2021-03-16-vite-1.0-CSS-plugin</link>
    <description>这个`serverPluginCss`是用来处理CSS文件的，因为在vite里面CSS（包括SCSS这种预处理器）和JSON都被处理成JS module，然后再由HTML里面注入的`src/client/client.ts`来更新页面。</description>
    <pubDate>Tue, 16 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-16-vite-1.0-client-plugin</guid>
    <title>vite-1.0 client插件解读</title>
    <link>https://www.calvinhappy.com//blog/2021-03-16-vite-1.0-client-plugin</link>
    <description>这个`serverPluginClient`是HMR的一部分，它是负责在注入客户端WSS代码的时候，替换里面的协议域名和端口号，这些数据是从配置里面读取的。</description>
    <pubDate>Tue, 16 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-17-vite-1.0-HMR-client</guid>
    <title>vite-1.0 CSS插件解读</title>
    <link>https://www.calvinhappy.com//blog/2021-03-17-vite-1.0-HMR-client</link>
    <description>这个`src/client/client.ts`是HMR的客户端，我们之前提到过，HMR是通过WebSockets来做的，那它肯定是需要一个客户端和一个服务端的，通常就是客户端来连接服务端，然后服务端在特定条件下发送消息，客户端接收并处理消息，我们来看下代码主结构：</description>
    <pubDate>Wed, 17 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-22-vite-1.0-HMR-plugin</guid>
    <title>vite-1.0 serverPluginHmr文件解读</title>
    <link>https://www.calvinhappy.com//blog/2021-03-22-vite-1.0-HMR-plugin</link>
    <description>超快的HMR也是Vite的卖点之一，HMR的功能是通过[客户端](/posts/2021-03-17-vite-1.0-HMR-client)和这个服务端的插件来共同完成的。</description>
    <pubDate>Mon, 22 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-03-23-tencent-geeks-chanllenge-match</guid>
    <title>腾讯极客技术挑战赛第三期</title>
    <link>https://www.calvinhappy.com//blog/2021-03-23-tencent-geeks-chanllenge-match</link>
    <description>在一个腾讯技术群里看到这个比赛，就顺手点开看了下，本以为会是算法比赛或者安全比赛。我尝试了一下之后，发现我也可以搞搞，因为是前端相关。我并不是专业搞安全的，也未能拿到很好的名次（69/927），不过在做题的过程中，我能突破自我，能想办法解决这些问题，还是很有成就感的。</description>
    <pubDate>Tue, 23 Mar 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>vite</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-08-19-alibaba-hooks-source-code-analysis-useToggle</guid>
    <title>alibaba/hooks代码解读之useBoolean和useToggle</title>
    <link>https://www.calvinhappy.com//blog/2021-08-19-alibaba-hooks-source-code-analysis-useToggle</link>
    <description>说来惭愧，在上家公司里面hooks用的不多，现在的新公司新项目，全是函数式组件，没有类组件了。我也开始大量使用各种hooks，然后找到了这个第三方库[hooks](https://github.com/alibaba/hooks)，自定义的hooks。这篇文章就是来分析一下各个hooks的源代码。</description>
    <pubDate>Thu, 19 Aug 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>React</category><category>React Hooks</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-09-05-alibaba-hooks-source-code-analysis-useClickAway</guid>
    <title>alibaba/hooks代码解读之useClickAway</title>
    <link>https://www.calvinhappy.com//blog/2021-09-05-alibaba-hooks-source-code-analysis-useClickAway</link>
    <description>useClickAway是用来管理点击的，但是这些点击是在目标元素之外，不在之内。啥时候会用到它呢？比如我做了一个弹窗，当点击弹窗外的地方的时候，我想要收起弹窗，这个时候就可以用useClickAway。</description>
    <pubDate>Sun, 05 Sep 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>React</category><category>React Hooks</category><category>源代码</category>
  </item>

  <item>
    <guid>https://www.calvinhappy.com//blog/2021-09-26-alibaba-hooks-source-code-analysis-useCookieState</guid>
    <title>alibaba/hooks代码解读之useCookieState</title>
    <link>https://www.calvinhappy.com//blog/2021-09-26-alibaba-hooks-source-code-analysis-useCookieState</link>
    <description>useCookieState是用来管理Cookie的，可以用hook的方式十分方便的来访问Cookie。</description>
    <pubDate>Sun, 26 Sep 2021 00:00:00 GMT</pubDate>
    <author>sunkehappy@gmail.com (祝你好运)</author>
    <category>React</category><category>React Hooks</category><category>源代码</category>
  </item>

    </channel>
  </rss>
