<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xllllll___的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xllllll___</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xllllll___]]></copyright><item><title><![CDATA[SSE:用于流式传输的协议]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/145650875</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/145650875</guid><author>xllllll___</author><pubDate>Sun, 16 Feb 2025 11:29:11 +0800</pubDate><description><![CDATA[SSE协议是一种基于http协议的单向通信协议，服务端可以向客户端发送数据，但是客户端不能向服务器发送数据。客户端通过创建一个到服务器的单向连接来监听事件。可以将一次性返回数据包改为流式返回数据。SSE协议支持断线重连，也支持自定义响应事件。比如ChatGpt使用的通信方式就是SSE协议，相比于websocket通信这是一个更为轻量级的通信方式，使用方法简单。]]></description><category></category></item><item><title><![CDATA[前端模块化]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/144697241</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/144697241</guid><author>xllllll___</author><pubDate>Wed, 25 Dec 2024 20:07:29 +0800</pubDate><description><![CDATA[模块化就是把一个较为复杂的程序按照一定的规范拆分并且封装成几个单独的代码文件，在使用的时候按照一定的规则将这些文件组合在一起。每个代码文件中的数据是私有的，通过向外部暴露一些接口或者是一个方法来实现和其他模块间的通信。]]></description><category></category></item><item><title><![CDATA[前端工程化必须要知道的前端埋点]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/144160714</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/144160714</guid><author>xllllll___</author><pubDate>Sat, 30 Nov 2024 21:11:09 +0800</pubDate><description><![CDATA[埋点是一种数据采集技术，主要用于收集用户在Web应用或移动应用中的行为数据。通过在代码中插入特定的监控代码（埋点代码），可以在用户触发特定事件（如点击按钮、浏览页面等）时捕获相关信息，并将这些信息发送到数据分析平台进行存储和分析。埋点可以帮助开发者、产品经理和运营团队了解用户在使用应用过程中的操作习惯和需求，为产品优化、营销策略和用户体验改进提供依据。假设我们有一个电商网站，我们想要追踪用户点击“加入购物车”按钮的行为。]]></description><category></category></item><item><title><![CDATA[Web Notifications API-让网页也能像QQ一样实现消息通知]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/143987735</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/143987735</guid><author>xllllll___</author><pubDate>Sat, 23 Nov 2024 11:04:39 +0800</pubDate><description><![CDATA[Web Notifications API允许网页或者是应用程序以系统级别发送在页面外部显示的通知，这样就可以实现即时应用程序在后台或者是空闲状态，Web应用程序也会向用户发送信息。]]></description><category></category></item><item><title><![CDATA[ES6之Proxy详解]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/143631978</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/143631978</guid><author>xllllll___</author><pubDate>Sat, 09 Nov 2024 15:21:01 +0800</pubDate><description><![CDATA[Proxy是es6新增的一个属性，用于修改某些操作的默认行为，可以理解为在目标对象外层设置一层“拦截”，外界如果想要访问目标对象，都必须先通过这层拦截，所以proxy提供了一种机制可以对外界的访问进行过滤和改写，用在这里proxy表示代理器的意思。Proxy通过使用一个代理对象来包装目标对象，并提供了一组钩子函数（也称为“陷阱”），这些钩子函数可以在代理对象上进行操作。当我们对代理对象进行操作时，本质上是在调用这些钩子函数。]]></description><category></category></item><item><title><![CDATA[NProgress---轻量级的前端进度条插件]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/142845972</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/142845972</guid><author>xllllll___</author><pubDate>Fri, 11 Oct 2024 10:27:21 +0800</pubDate><description><![CDATA[NProgress插件出现在页面的顶部，作为一个进度条，在项目中使用大大优化了用户的体验，一般网站请求接口或者加载一些文件需要使用这种进度条来不断提示用户。]]></description><category></category></item><item><title><![CDATA[Vue2中路由的使用]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/142390384</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/142390384</guid><author>xllllll___</author><pubDate>Fri, 20 Sep 2024 17:10:15 +0800</pubDate><description><![CDATA[可以使用keep-alive标签包含用来缓存路由组件，默认情况下缓存所有组件，可以使用：include="[‘组件名’]" 指定需要缓存的路由组件。exclude功能刚好相反。在使用keep-alive包含路由组件后，组件不会触发beforeDestory销魂流程，需要使用activated激活，deactivated()失活。]]></description><category></category></item><item><title><![CDATA[Vue2中父子组件通信双向绑定]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/142212970</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/142212970</guid><author>xllllll___</author><pubDate>Fri, 13 Sep 2024 16:52:33 +0800</pubDate><description><![CDATA[在vue2中，如果想使用比较简单的方式来实现父组件向子组件传递参数并实现双向绑定。在父组件中，使用.sync修饰符来传递参数给子组件，并实现双向绑定；在子组件中，通过$emit方法触发一个自定义事件，并传递更新后的值给父组件。在上述代码的演示中，使用:childData.sync来传递参数给子组件，并实现双向绑定，在子组件中使用$emit方法触发一个名为updata:childData的自定义事件，并且将子组件的childData作为参数传递给父组件。]]></description><category></category></item><item><title><![CDATA[JS中的迭代器和生成器]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/141085895</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/141085895</guid><author>xllllll___</author><pubDate>Sat, 10 Aug 2024 10:45:35 +0800</pubDate><description><![CDATA[1.通过调用生成器函数来创建迭代器（这个时候生成器函数不会执行）2.通过迭代器调用next执行生成器函数里面的代码3.执行到yield暂时跳出函数并且把yield后面是值加工成对象返回到调用next的地方。]]></description><category></category></item><item><title><![CDATA[JS中的闭包]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/140885520</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/140885520</guid><author>xllllll___</author><pubDate>Sat, 03 Aug 2024 10:26:13 +0800</pubDate><description><![CDATA[闭包指的是那些引用了另一个函数作用域中变量的函数，通常是在嵌套函数中实现的。在上述代码中，给value1,value2赋值的代码位于内部函数（匿名函数中），在赋值的代码中引用了外部函数的变量propName.在这个内部函数被返回并且在其他地方被使用时，它仍然会引用着外部函数的变量。这个因为内部函数的作用域链包含 creatFunction()函数的作用域。为什么会这样，要从第一次调用函数会发生什么说起。]]></description><category></category></item><item><title><![CDATA[HTTP中的缓存方式]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/140715451</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/140715451</guid><author>xllllll___</author><pubDate>Fri, 26 Jul 2024 18:10:29 +0800</pubDate><description><![CDATA[第一种方式是基于时间来实现的，第二种方式是基于设置一个唯一标识来实现的，两者比较来说，后者可以更加准确的判断出文件内容是否被修改，避免由于时间篡改导致的问题。]]></description><category></category></item><item><title><![CDATA[JS中的深拷贝和浅拷贝]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/140460339</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/140460339</guid><author>xllllll___</author><pubDate>Tue, 16 Jul 2024 16:45:16 +0800</pubDate><description><![CDATA[浅拷贝实现的是对基础数据类型的拷贝，并且数据 只有单一的一层，而深拷贝用来拷贝具有嵌套层级的引用数据类型。对于基本数据类型来说，深拷贝和浅拷贝实现的效果一样；而对于引用数据类型来说，深拷贝可以实现操作该数据，并且不会影响到源数据的效果。]]></description><category></category></item><item><title><![CDATA[一文读懂DNS和CDN]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/140370607</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/140370607</guid><author>xllllll___</author><pubDate>Fri, 12 Jul 2024 17:14:30 +0800</pubDate><description><![CDATA[CDN的全称是Content Delivery Network，即内容分发网络。是一种利用分布式节点技术，在全球部署服务器，即时地将网站，应用视频，音频等静态或者动态资源内容分发到用户所在的最近节点，提高用户访问这些内容的速度和稳定性，降低网络拥塞和延迟，同时也能减轻源站的压力。提升网络或应用的可用性和安全性。CDN的基本原理是将源站的内容分发到离用户最近的节点上进行缓存，并通过智能路由，负载均衡等技术来保证用户能够快速，稳定地访问到所需资源。]]></description><category></category></item><item><title><![CDATA[JS中的上下文]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/139996449</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/139996449</guid><author>xllllll___</author><pubDate>Tue, 02 Jul 2024 21:46:45 +0800</pubDate><description><![CDATA[执行上下文简称上下文。变量或者函数的上下文决定了它们可以访问哪些数据，以及它们的行为。每一个上下文都具有一个关联的变量对象，而这个上下文中定义的所有变量和函数都存在于这个对象上。]]></description><category></category></item><item><title><![CDATA[计算机网络之UDP协议]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/139936383</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/139936383</guid><author>xllllll___</author><pubDate>Tue, 25 Jun 2024 18:15:42 +0800</pubDate><description><![CDATA[UDP协议又叫做用户数据报协议，是一个目标在传输层提供直接发送报文的能力，UDP与TCP相比，它不会拆分数据，它只是能够发送报文。]]></description><category></category></item><item><title><![CDATA[计算机网络之TCP的三次握手和四次挥手]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/139902652</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/139902652</guid><author>xllllll___</author><pubDate>Mon, 24 Jun 2024 11:47:16 +0800</pubDate><description><![CDATA[TCP是一个全双工协议，保证双方的传输更加稳定和可靠。为了让双方都保证建立连接的时候，连接的双方都需要向对方发送SYC（同步请求）和ACK（响应）。在建立连接的时候，双方都没有繁琐的工作，所以在被建立连接的一方可以将自己的ACK和SYN作为一条信息回复，因此需要三次握手。在断开连接的时候，因为需要等被断开连接的一方把数据都处理完，所以被断开连接的一方需要分别发送ACK和FIN，因此需要四次挥手。]]></description><category></category></item><item><title><![CDATA[在vue3项目中使用el-tabs切换标签页时echarts图表显示不正确]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/139035427</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/139035427</guid><author>xllllll___</author><pubDate>Sat, 01 Jun 2024 09:13:18 +0800</pubDate><description><![CDATA[el-tabs标签页是用来分隔内容上有关联但是属于不同类别的数据集合。Tabs组件提供了选项卡功能，默认选中第一个标签页，也可以通过value属性来指定当前选中的标签页.此外，el-tabs还提供了tab-click方法，来实现切换标签也触发的事件。]]></description><category></category></item><item><title><![CDATA[ES6之Promise详解]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/139104354</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/139104354</guid><author>xllllll___</author><pubDate>Fri, 24 May 2024 18:15:02 +0800</pubDate><description><![CDATA[1.语法：在语法上async/await提供了更简洁 ，更直观的一个语法，使异步代码更易读和维护。2.错误处理：在async/await中，可以直接使用try...catch来捕获异常,而在Promise中，则需要使用catch。3.代码流程：async/await可以使得异步代码看起来更像一个同步代码，易于阅读和理解。]]></description><category></category></item><item><title><![CDATA[浅谈JS中的回调地狱]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/137988140</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/137988140</guid><author>xllllll___</author><pubDate>Sun, 19 May 2024 08:08:57 +0800</pubDate><description><![CDATA[3.promise的链式编程可以保证代码的执行顺序，但是前提是每一次在执行完then中的操作时，必须要返回一个promise对象，这样才能保证下一次的then时能够接收到数据.从上述的代码示例可以看出，定时器中的任务是否执行完毕不影响后面 任务的执行，当定时器需要等待3秒再去执行时，不会阻塞后面函数的执行。这就是简单的异步任务的实现。从上面的实例可以看出，如果要按照语序输出一句话，就需要回调函数嵌套回调函数，上面代码就嵌套了三层回调函数，这种回调函数中嵌套回调函数的情况就称为回调地狱。]]></description><category></category></item><item><title><![CDATA[JS中函数节流的使用]]></title><link>https://blog.youkuaiyun.com/xllllll___/article/details/137903194</link><guid>https://blog.youkuaiyun.com/xllllll___/article/details/137903194</guid><author>xllllll___</author><pubDate>Sat, 11 May 2024 18:28:59 +0800</pubDate><description><![CDATA[在JS中的函数大多数情况下都是由用户主动触发调用的，除非是函数本身不合理，一般我们不会遇到与性能相关的问题。但是在一些少数情况下，函数的触发不是由用户直接控制的。在这些场景下，函数非常有可能被频繁的地调用，从而造成大的性能问题。]]></description><category></category></item></channel></rss>