<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lilythy2016的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lilythy2016</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lilythy2016]]></copyright><item><title><![CDATA[umi3.5升4.0，react17升18踩坑之路]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/134682185</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/134682185</guid><author>lilythy2016</author><pubDate>Wed, 29 Nov 2023 11:11:45 +0800</pubDate><description><![CDATA[umi3.5升4.0之后，并没有向下兼容，改动点还是挺多的，我升级成功之后，写下这篇文章来帮助更多的人升级到4.0，有需要的同学请耐心跟着我的步骤操作完。只有umi升到4.0之后才能将react17升到18.]]></description><category></category></item><item><title><![CDATA[解决React useEffect钩子带来的无限循环问题]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/130751492</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/130751492</guid><author>lilythy2016</author><pubDate>Fri, 19 May 2023 11:33:36 +0800</pubDate><description><![CDATA[解决React useEffect钩子带来的无限循环问题]]></description><category></category></item><item><title><![CDATA[判断是否是微信或钉钉浏览器]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/130750548</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/130750548</guid><author>lilythy2016</author><pubDate>Thu, 18 May 2023 17:11:34 +0800</pubDate><description><![CDATA[JS判断浏览器环境，是否是微信浏览器以及钉钉浏览器]]></description><category></category></item><item><title><![CDATA[前端模块化的作用]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/82726297</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/82726297</guid><author>lilythy2016</author><pubDate>Mon, 17 Sep 2018 14:53:17 +0800</pubDate><description><![CDATA[相信很多人都用过 seajs、 requirejs 等这些模块加载器，他们都是十分便捷的工程管理工具，简化了代码的结构，更重要的是消除了各种文件依赖和命名冲突问题，并利用 AMD / CMD 规范统一了格式。然而你了解模块化的作用吗？下面主要讲述模块化能解决哪些问题。

命名冲突

做项目时，常常会将一些通用的功能抽象出来，独立成一个个函数，比如

//util.js

function form...]]></description><category></category></item><item><title><![CDATA[NodeJS框架之Express4.x源码分析]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/77840464</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/77840464</guid><author>lilythy2016</author><pubDate>Mon, 04 Sep 2017 18:35:17 +0800</pubDate><description><![CDATA[Express4.x自己实现了一个router组件，实现http请求的顺序流程处理，去除了很多绑定的中间件，使代码更清晰。
整个Express执行过程就是往req、res不停地添加和修改属性；中间件也是通过app作为回调，进而修改req、res；其中app.use和app.static用来添加中间件，app.handle则将每对[req,res]进行逐级分发，作用在每个定义好的路由及中间件上，直至最后完成分发。]]></description><category></category></item><item><title><![CDATA[Jquery源码中的小技巧总结]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/77719002</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/77719002</guid><author>lilythy2016</author><pubDate>Wed, 30 Aug 2017 17:01:55 +0800</pubDate><description><![CDATA[关于Jquery源码的解读网上已经有很多文章了，这里可以提供一个比较详细的链接jQuery源码分析系列——来自Aaron，而本帖主要介绍了jquery源码中的七个小技巧：无new构造、钩子机制、链式调用及回溯、函数重载、函数参数兼容处理、缓存思想和extend方法，我觉得我们平时编写代码的时候都是可以使用的，可以让我们的代码变得效率更高，结构更清晰！]]></description><category></category></item><item><title><![CDATA[漫画告诉你什么是DDoS攻击？]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/72879609</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/72879609</guid><author>lilythy2016</author><pubDate>Tue, 06 Jun 2017 15:23:25 +0800</pubDate><description><![CDATA[伤痛根据《2015 H1绿盟科技DDoS威胁报告》指出，如今大流量网络攻击正逐渐呈现增长趋势，前不久锤子科技的发布会以及9月12日苹果官网宕机的案例就印证了这一点。那什么是DDoS攻击？如何才能抵御DDoS攻击呢？本文作者通过一系列漫画图片为大家做了生动演示。]]></description><category></category></item><item><title><![CDATA[深入理解javascript闭包]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/72846085</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/72846085</guid><author>lilythy2016</author><pubDate>Fri, 02 Jun 2017 17:05:15 +0800</pubDate><description><![CDATA[变量的作用域无非就是两种：全局变量和局部变量。 
    Javascript语言的特殊之处，就在于函数内部可以直接读取全局变量。

    各种专业文献上的“闭包”（closure）定义非常抽象，很难看懂。我的理解是，闭包就是能够读取其他函数内部变量的函数。
    由于在Javascript语言中，只有函数内部的子函数才能读取局部变量，因此可以把闭包简单理解成“定义在一个函数内部的函数”。]]></description><category></category></item><item><title><![CDATA[let、const、var和块级作用域]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/71550645</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/71550645</guid><author>lilythy2016</author><pubDate>Wed, 10 May 2017 16:58:07 +0800</pubDate><description><![CDATA[我们知道JavaScript定义变量的方式是var，但是var有几个问题。var第一个就是作用域的问题，var不是针对一个块级作用域，而是针对一个函数作用域。
    为了解决这些问题，ES6提出了let语法。let可以在{},if,for里声明，其用法同var，但是作用域限定在块级。但是javascript中不是没有块级作用域吗？这个我们等会讲。还有一点很重要的就是let定义的变量不存在变量提升。]]></description><category></category></item><item><title><![CDATA[使用高大上的pm2代替forever部署nodejs项目]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/71535691</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/71535691</guid><author>lilythy2016</author><pubDate>Wed, 10 May 2017 15:35:40 +0800</pubDate><description><![CDATA[当你要把你的独立代码利用全部的服务器上的所有 CPU，并保证进程永远都活着，0 秒的重载， PM2 是完美的。

pm2官方文档：http://pm2.keymetrics.io/docs/usage/quick-start/]]></description><category></category></item><item><title><![CDATA[前端工程化基础]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/53020926</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/53020926</guid><author>lilythy2016</author><pubDate>Thu, 03 Nov 2016 14:01:08 +0800</pubDate><description><![CDATA[现在的前端开发倒也并非一无所有，回顾一下曾经经历过或听闻过的项目，为了提升其前端开发效率和运行性能，前端团队的工程建设大致会经历三个阶段：第一阶段：库/框架选型，第二阶段：简单构建优化，第三阶段：JS/CSS模块化开发]]></description><category></category></item><item><title><![CDATA[小谈javascript原型链]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/52909095</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/52909095</guid><author>lilythy2016</author><pubDate>Mon, 24 Oct 2016 09:55:04 +0800</pubDate><description><![CDATA[javascript不像java是基于类（class）继承的，子类可以继承父类的属性，而是基于原型来实现继承的。要理解原型继承的原理，关键在于理解原型链，本帖将先介绍与之相关的对象、原型对象（prototype）和原型指针（__proto__），有了这些基础之后进而阐述原型链的构成，最后以一个应用实例来启发读者怎么在实际当中使用它。]]></description><category></category></item><item><title><![CDATA[干货 | Web前端优化及工具集锦]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/52858277</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/52858277</guid><author>lilythy2016</author><pubDate>Wed, 19 Oct 2016 12:10:08 +0800</pubDate><description><![CDATA[前端的性能对于一个Web应用来说非常重要，如果一个Web应用的页面加载速度非常快、对于用户的操作可以及时响应，那么产品的用户体验将会极大地提升。下图显示了页面加载速度对于用户体验的影响。]]></description><category></category></item><item><title><![CDATA[基于MEAN框架的仿豆瓣电影开发实战（2）]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/52818676</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/52818676</guid><author>lilythy2016</author><pubDate>Fri, 14 Oct 2016 20:04:37 +0800</pubDate><description><![CDATA[本帖接着介绍在MEAN框架下，将电影数据从数据库取出，并展示在首页的功能实现。实现该功能的思路是先在服务端定义一个方法用于获取数据库所有的电影数据，然后定义一个 url 映射到该方法，接着在前端定义一个方法请求该 url 来获取数据，最后调用该方法将数据放入首页对应的controller中即可。]]></description><category></category></item><item><title><![CDATA[基于MEAN的仿豆瓣电影网站开发实战（1）]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/52810082</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/52810082</guid><author>lilythy2016</author><pubDate>Thu, 13 Oct 2016 21:03:22 +0800</pubDate><description><![CDATA[版权声明：本文为博主原创文章，转载请注明出处http://blog.youkuaiyun.com/lilythy2016/article/details/52810082。
  本帖讲的是仿豆瓣电影网的电影录入功能实现，环境采用的是全JavaScript的MEAN框架实现，对MEAN框架有不清楚的读者可以参考Webstorm下MEAN环境搭建。服务端实现  在项目根目录下新建一个src目录，用于存放后端代码。要]]></description><category></category></item><item><title><![CDATA[Webstorm下MEAN框架环境搭建]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/52725701</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/52725701</guid><author>lilythy2016</author><pubDate>Sun, 02 Oct 2016 23:36:22 +0800</pubDate><description><![CDATA[什么是MEAN框架？它可绝对不是吝啬的框架哦，而是包含了Mongoose（用于操作MongoDB）、Express、AngularJS以及Node.js的全Javascript开发架构，对的，你没看错，再也不用羡慕隔壁家的Java了，我们大前端也能做到。 
    首先Express对Node.js作为Web服务器那繁琐的网络操作进行了封装，所以网络连接、请求分发啥的都不是事儿，这样我们就可以专心写]]></description><category></category></item><item><title><![CDATA[Javascript“预编译”理解]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/52627944</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/52627944</guid><author>lilythy2016</author><pubDate>Thu, 22 Sep 2016 21:24:04 +0800</pubDate><description><![CDATA[JS 在执行前会进行类似"预编译"的操作，而且先预定义变量再预定义函数。]]></description><category></category></item><item><title><![CDATA[数据结构队列之javascript实现]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/52614421</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/52614421</guid><author>lilythy2016</author><pubDate>Wed, 21 Sep 2016 22:52:01 +0800</pubDate><description><![CDATA[队列是一种支持先进先出(FIFO)的集合,即先被插入的数据,先被取出!]]></description><category></category></item><item><title><![CDATA[数据结构栈之javascript实现]]></title><link>https://blog.youkuaiyun.com/lilythy2016/article/details/52316729</link><guid>https://blog.youkuaiyun.com/lilythy2016/article/details/52316729</guid><author>lilythy2016</author><pubDate>Thu, 25 Aug 2016 17:38:49 +0800</pubDate><description><![CDATA[栈是一种支持后进先出(LIFO)的集合，即后被插入的数据，先被取出]]></description><category></category></item></channel></rss>