<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[surZhang的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/surZhang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; surZhang]]></copyright><item><title><![CDATA[【vue2源码】编译器]]></title><link>https://blog.youkuaiyun.com/surZhang/article/details/148476807</link><guid>https://blog.youkuaiyun.com/surZhang/article/details/148476807</guid><author>surZhang</author><pubDate>Fri, 06 Jun 2025 15:56:49 +0800</pubDate><description><![CDATA[解析器的作用就是：将模版字符串转化为tokens，再转化为模版ast。生成器的作用是：js ast转化为render函数。转化器的作用是：将模版ast转化为js ast。// 函数定义，字符串节点，返回值，函数调用。context上下文。]]></description><category></category></item><item><title><![CDATA[vue3对比vue2产生了哪些变化]]></title><link>https://blog.youkuaiyun.com/surZhang/article/details/148364507</link><guid>https://blog.youkuaiyun.com/surZhang/article/details/148364507</guid><author>surZhang</author><pubDate>Sun, 01 Jun 2025 16:03:44 +0800</pubDate><description><![CDATA[vue2.x  早期在开发vue2的时候使用了flow.js帮助捕获类型错误，提高代码的健壮性和可维护性。后期vue通过.d.ts使得vue2对开发者使用上进行了ts类型支持。回答：1.多个应用存在问题2.vue2对象vue3函数，函数就利于tree-shaking3.vue2new Vue()没有像vue3一样将组件和vue实例很好的区分开，含义混淆不清。vue3 使用了monorepo组织代码，使得每一个模块：compile，响应式等都是单独的模块，使用时可以单独安装。vue3.x 使用ts重构源码。]]></description><category></category></item><item><title><![CDATA[彻底弄清veu3快速diff]]></title><link>https://blog.youkuaiyun.com/surZhang/article/details/148284678</link><guid>https://blog.youkuaiyun.com/surZhang/article/details/148284678</guid><author>surZhang</author><pubDate>Wed, 28 May 2025 15:27:02 +0800</pubDate><description><![CDATA[快速diff主要是在vue2双端diff的算法上做了改进。vue2的双端diff会频繁移动节点。1.先建立新vdom list的key-index映射keyToNewIndexMap。这里记录了新的节点list的映射。key为节点的key，value为对应下标。如果节点在最长递增子序列中，则不需要移动，只进行复用并patch。目的是对new List中新增和需要移动顺序的节点做处理。以新list为基准，建立旧list中的下标映射。为0表示，旧节点中不存在，所以是新增的。i就是下面遍历newList的下标。]]></description><category></category></item><item><title><![CDATA[一次性弄清小程序中微信登录，获取信息]]></title><link>https://blog.youkuaiyun.com/surZhang/article/details/138251948</link><guid>https://blog.youkuaiyun.com/surZhang/article/details/138251948</guid><author>surZhang</author><pubDate>Sat, 27 Apr 2024 16:51:43 +0800</pubDate><description><![CDATA[小程序中使用wx.login获取code。（注意：此步骤无弹框弹出，无需用户点击可获取到code）]]></description><category></category></item><item><title><![CDATA[【webpack】高级2]]></title><link>https://blog.youkuaiyun.com/surZhang/article/details/131747653</link><guid>https://blog.youkuaiyun.com/surZhang/article/details/131747653</guid><author>surZhang</author><pubDate>Mon, 17 Jul 2023 21:55:27 +0800</pubDate><description><![CDATA[如果某个文件a依赖另一个文件b，当b文件发生变化会重新打包，包名种的hash值会发生变化。此时a文件种对b文件的引入也会发生变化，会误认为a文件也发生了变化，所以a文件也会重新打包，显然是我们不想要的。假如只用了一个promise语法，但是全部引入就会把core-js库的所有文件都引入，会使打包体积变很大，所以推荐采取按需引入。前面的按需加载会提升加载速度，但是如果被拆分出来的包体积很大，那么这么按需加载的包，再加载时会很慢。所以有种策略就是，当浏览器空闲的时候，开始加载按需加载的这些包。]]></description><category></category></item><item><title><![CDATA[【webpack5】基础]]></title><link>https://blog.youkuaiyun.com/surZhang/article/details/131735007</link><guid>https://blog.youkuaiyun.com/surZhang/article/details/131735007</guid><author>surZhang</author><pubDate>Mon, 17 Jul 2023 16:16:55 +0800</pubDate><description><![CDATA[webpack配置以及优化]]></description><category></category></item><item><title><![CDATA[【React】动态绑定style和class]]></title><link>https://blog.youkuaiyun.com/surZhang/article/details/130618505</link><guid>https://blog.youkuaiyun.com/surZhang/article/details/130618505</guid><author>surZhang</author><pubDate>Thu, 11 May 2023 11:43:19 +0800</pubDate><description><![CDATA[可以定义到state中，直接绑定上去。单个类名，不含其他类。]]></description><category></category></item><item><title><![CDATA[【css】采用style还是class写样式]]></title><link>https://blog.youkuaiyun.com/surZhang/article/details/130484517</link><guid>https://blog.youkuaiyun.com/surZhang/article/details/130484517</guid><author>surZhang</author><pubDate>Thu, 04 May 2023 13:35:33 +0800</pubDate><description><![CDATA[少用style写样式，都用class写样式]]></description><category></category></item><item><title><![CDATA[vue篇之动态绑定class和style]]></title><link>https://blog.youkuaiyun.com/surZhang/article/details/130484580</link><guid>https://blog.youkuaiyun.com/surZhang/article/details/130484580</guid><author>surZhang</author><pubDate>Thu, 04 May 2023 13:27:10 +0800</pubDate><description><![CDATA[css属性名可用下划线写法，需加引号：‘background-color’css属性名也可用驼峰写法，加不加引号都可：backgroundColor。1.对象的key就是ccs属性的名字，对象的key不是变量名。注意：对象的key就是类的名字，对象的key不是变量名。注意：对象的key就是类的名字，对象的key不是变量名。2.多个属性建议直接给style绑定一个对象。]]></description><category></category></item><item><title><![CDATA[为什么js宏任务会比微任务先执行]]></title><link>https://blog.youkuaiyun.com/surZhang/article/details/129271677</link><guid>https://blog.youkuaiyun.com/surZhang/article/details/129271677</guid><author>surZhang</author><pubDate>Tue, 28 Feb 2023 22:33:00 +0800</pubDate><description><![CDATA[seo]]></description><category></category></item></channel></rss>