<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[前端乱谈]]></title><description><![CDATA[不写程序的时候写写文]]></description><link>https://blog.csdn.net/jyee721</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; jyee721]]></copyright><item><title><![CDATA[团队git流程]]></title><link>https://blog.csdn.net/jyee721/article/details/103209073</link><guid>https://blog.csdn.net/jyee721/article/details/103209073</guid><author>jyee721</author><pubDate>Fri, 22 Nov 2019 23:56:49 +0800</pubDate><description><![CDATA[前一段时间接触一个新团队时，发现他们因没有”流程”，常发生代码合并困难，或者合并后漏掉几个commit，上线后把别人代码搞坏的情况。由此想探讨一下“流程”问题。
两大流程
调查时发现阮一峰老师在Git 工作流程一文中已经探讨了3种经典流程，由此了解到几种经典流程的名字：git flow, github flow, 和 gitlab flow。不过我认为git flow不适合多人协作，所以只探讨gi...]]></description><category></category></item><item><title><![CDATA[我为什么要练习写作]]></title><link>https://blog.csdn.net/jyee721/article/details/102765646</link><guid>https://blog.csdn.net/jyee721/article/details/102765646</guid><author>jyee721</author><pubDate>Sun, 27 Oct 2019 12:31:49 +0800</pubDate><description><![CDATA[我为什么要练习写作
最近开始阅读有关写作的书籍，并尝试一旦有想法就动手写下来的练习。我老公对这种行为非常不解。在他的眼中，这样的文字是硬”挤”出来的，没有任何的意义。而且现在自媒体为了让自己的文章吸引眼球，什么都干，包括造假。让好好的文学蒙羞，让文字变成了哗众取宠的工具，带上了功利的色彩。而我练习写作的动机，也正有迎合当代网络市场的意思，想哪天能够拓展一下主业，不用再做业务狗。于是我们就有了一场短...]]></description><category></category></item><item><title><![CDATA[用redux dev tools远程调试模式]]></title><link>https://blog.csdn.net/jyee721/article/details/101726048</link><guid>https://blog.csdn.net/jyee721/article/details/101726048</guid><author>jyee721</author><pubDate>Sun, 29 Sep 2019 23:32:46 +0800</pubDate><description><![CDATA[目录安装修改创建Store代码安装本地redux dev tool服务器启用远程调试
在调试一个Chrome插件的时候，第一次用到了Redux DevTools的远程模式，进而了解到React Native的开发朋友们平时都是怎么调试redux store的。
使用远程模式，需要App在启用Redux DevTool的基础上，再添加[remote-redux-devtools](https://g...]]></description><category></category></item><item><title><![CDATA[译：手把手教你如何写自定义babel代码转换]]></title><link>https://blog.csdn.net/jyee721/article/details/100839305</link><guid>https://blog.csdn.net/jyee721/article/details/100839305</guid><author>jyee721</author><pubDate>Sat, 14 Sep 2019 23:50:14 +0800</pubDate><description><![CDATA[译：手把手教你如何写自定义babel代码转换
今天，我将分享如何一步步写一个自定义babel转换工具。你可以利用这项技术来自动化代码的修改，重构以及生成。
什么是babel？
Babel 是一个Javascript 编译器，它主要被用于将ECMA Script 2015以上的代码转换成目前或者更老版本浏览器或者环境可以兼容的版本。Babel的代码变换启用了插件系统，这个插件系统可以让任何人基于ba...]]></description><category></category></item><item><title><![CDATA[笔记：通过sftp命令行上传文件至Akamai CDN]]></title><link>https://blog.csdn.net/jyee721/article/details/100784795</link><guid>https://blog.csdn.net/jyee721/article/details/100784795</guid><author>jyee721</author><pubDate>Thu, 12 Sep 2019 21:56:04 +0800</pubDate><description><![CDATA[通过sftp命令行上传文件至Akamai CDN
在尝试上传文件到Akamai时顺便学会了一个新linux命令sftp。
我做这个上传接口拥有的资源是：我的文件，akamai的域名地址，用户名，已申请并获得权限的公私钥和一个指定的文件夹目录。基于这些条件，我需要知道：

如何通过sftp用指定密钥登录Akamai
如何通过sftp上传文件

通过查询sftp文档，了解到登陆ftp服务器非常简单，只...]]></description><category></category></item><item><title><![CDATA[在Redux里怎么存数据？论数据标准化]]></title><link>https://blog.csdn.net/jyee721/article/details/94362580</link><guid>https://blog.csdn.net/jyee721/article/details/94362580</guid><author>jyee721</author><pubDate>Sun, 30 Jun 2019 23:17:54 +0800</pubDate><description><![CDATA[在一个复杂的项目中，我们可以将Redux store看成为客户端的缓存数据库。
众所周知数据库的设计大有讲究，需要考虑到数据查找的性能，和可拓展性。作为前端“数据库”的Redux store也是同样的，存放的方式、位置不好会增加bug出现的几率、读写数据的复杂度、维护的成本。
那你说我们在数据层已经将数据处理了一遍，前端再加一层处理不是多此一举吗？的确，随着对用户体验的要求越来越高，而支持着这种极...]]></description><category></category></item><item><title><![CDATA[Hook改变的React Component写法思路(4) - useReducer]]></title><link>https://blog.csdn.net/jyee721/article/details/90182702</link><guid>https://blog.csdn.net/jyee721/article/details/90182702</guid><author>jyee721</author><pubDate>Mon, 13 May 2019 22:19:38 +0800</pubDate><description><![CDATA[其实一开始看到useReducer的时候，还以为它跟react的好伙伴redux有什么关系。然而也就是借鉴了redux的设计模式的状态操作工具而已。
目前使用Redux的小伙伴们可能还需要用原来的react-redux提供的connect HOC一段时间。尽管facebook已经在做相关的hook，目前还处于不稳定的状态，使用后果自负（项目地址：https://github.com/faceboo...]]></description><category></category></item><item><title><![CDATA[Hook改变的React Component写法思路(3) - useContext]]></title><link>https://blog.csdn.net/jyee721/article/details/90142894</link><guid>https://blog.csdn.net/jyee721/article/details/90142894</guid><author>jyee721</author><pubDate>Sun, 12 May 2019 17:41:03 +0800</pubDate><description><![CDATA[首先我们回忆一下React Context API的用法（生产者消费者模式）。
创建context对象：
// context初始值
const INITIAL_VALUE = ‘’;
const MyContext = React.createContext(INITIAL_VALUE);

划定context使用的范围，管理它的值：
function App() {
    return (
...]]></description><category></category></item><item><title><![CDATA[Hook改变的React Component写法思路(2) - useCallback和useMemo]]></title><link>https://blog.csdn.net/jyee721/article/details/90141385</link><guid>https://blog.csdn.net/jyee721/article/details/90141385</guid><author>jyee721</author><pubDate>Sun, 12 May 2019 15:55:35 +0800</pubDate><description><![CDATA[文章目录useCallback把匿名回调“存”起来useMemo保存一些计算值
useCallback把匿名回调“存”起来
在之前版本的文档和大牛的blog中都有提到避免在component render时候声明匿名方法，因为这些匿名方法会被反复重新声明而无法被多次利用。
在Class component当中我们通常将回调函数声明为类成员：
class MyComponent extends Re...]]></description><category></category></item><item><title><![CDATA[Hook 改变的 React Component 写法思路(1) - useState和useEffect]]></title><link>https://blog.csdn.net/jyee721/article/details/89641894</link><guid>https://blog.csdn.net/jyee721/article/details/89641894</guid><author>jyee721</author><pubDate>Sun, 28 Apr 2019 17:10:32 +0800</pubDate><description><![CDATA[Hook 改变的 React Component 写法思路
React hook 在酝酿近一年后，终于在16.8稳定版中重磅推出。在此前后FB的Dan大神劳心劳力地几乎每天在Twitter上给大家洗脑宣传。
那它究竟跟之前的React应用相比有什么改变？
前提是先要理解Memoize
Memoize是贯穿hook用法的一个非常重要的概念，理解它是正确使用hook的基石。
Memoize基本上就是把...]]></description><category></category></item><item><title><![CDATA[关于React + Redux文件目录结构]]></title><link>https://blog.csdn.net/jyee721/article/details/88775242</link><guid>https://blog.csdn.net/jyee721/article/details/88775242</guid><author>jyee721</author><pubDate>Sun, 24 Mar 2019 12:00:25 +0800</pubDate><description><![CDATA[关于React + Redux文件目录结构初期一种新的方案数据模型只有读取操作读写操作并存只写根据数据模型来组织Redux文件的优点尽量减少单个数据模型的深度
初期
按照文件内容类型分：
-- project/
  -- app/
    -- assets/
      -- icons/
    -- components/
      -- MyComponent/
        -- i...]]></description><category></category></item><item><title><![CDATA[Redux + React复杂项目中的依赖选择]]></title><link>https://blog.csdn.net/jyee721/article/details/88775121</link><guid>https://blog.csdn.net/jyee721/article/details/88775121</guid><author>jyee721</author><pubDate>Sun, 24 Mar 2019 11:49:35 +0800</pubDate><description><![CDATA[Redux + React复杂项目中的依赖选择应用场景中间件的选择，Thunk还是Saga？安装依赖必须的如果使用路由注意钩子的特殊要求调试

首先重申一下，我对Redux的定位是客户端数据库。详情可读我上一篇博文：https://mp.csdn.net/postedit/88383902。

应用场景
这里复杂项目的定义：

需要长期维护
会不断增加修改新的部件
多人协作
对客户端轻负担要求高
...]]></description><category></category></item><item><title><![CDATA[怎么看待Redux]]></title><link>https://blog.csdn.net/jyee721/article/details/88383902</link><guid>https://blog.csdn.net/jyee721/article/details/88383902</guid><author>jyee721</author><pubDate>Sun, 10 Mar 2019 21:06:42 +0800</pubDate><description><![CDATA[文章目录对于Redux的几点粗俗的理解StateStoreActionReducer除此之外其实就是客户端数据库？最后
对于Redux的几点粗俗的理解

以下均出于个人理解，查证可能不足，欢迎读者指正。

可以说Redux是流行框架React不折不扣的最佳伴侣。React管理显示，贤内助Redux管理数据。除了优雅的设计和高逼格的理论概念，易于上手和为数据管理提供的便利（其实并不一定）深深吸引了前...]]></description><category></category></item><item><title><![CDATA[ES6写JSDoc的一些经验和实例]]></title><link>https://blog.csdn.net/jyee721/article/details/82587516</link><guid>https://blog.csdn.net/jyee721/article/details/82587516</guid><author>jyee721</author><pubDate>Mon, 10 Sep 2018 11:40:36 +0800</pubDate><description><![CDATA[ES6写JSDoc的一些经验和实例

关于JSDoc和它的基本语法支持，请参考官方文档：http://usejsdoc.org/。虽说官方文档还是比较全的，实际使用中还是需要摸索一下适合自己项目的写法，并考虑最终文档生成工具的支持。



例1：Object类型在function中的定义

假设我们有个需要Object参数的方法。可以这样写：



/**
 * 把两个数字a和b加起来
 * @...]]></description><category></category></item><item><title><![CDATA[为Git库设置持续集成做自动化测试（TravisCI + Github）]]></title><link>https://blog.csdn.net/jyee721/article/details/82146158</link><guid>https://blog.csdn.net/jyee721/article/details/82146158</guid><author>jyee721</author><pubDate>Tue, 28 Aug 2018 13:02:11 +0800</pubDate><description><![CDATA[CI - Continuous Integration 也就是持续集成。关于持续即成的概念可参考其他大神的日志：http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html。  

随着近年Devops的盛行，市面上CI服务提供商也非常多。比如在这篇文章：https://stackify.com/top-continuous...]]></description><category></category></item><item><title><![CDATA[手把手教你为Javascript/Node Github库设置测试覆盖率徽标(Coverage Badge)]]></title><link>https://blog.csdn.net/jyee721/article/details/82112093</link><guid>https://blog.csdn.net/jyee721/article/details/82112093</guid><author>jyee721</author><pubDate>Mon, 27 Aug 2018 14:23:51 +0800</pubDate><description><![CDATA[# 手把手教你为Javascript/Node Github库设置测试覆盖率徽标(Coverage Badge)

怎样让一个Github库变得炫酷起来？很简单，README.MD文件作为库的封面，可以做很多文章。



最显眼的应该就是badge（勋章）了。勋章通常位于库标题下方，或是动态生成，或只是静态图片，用来展示库的当前状态简洁明了。不过也不要用太多勋章，这会让库看起来杂乱无章。勋章示例：...]]></description><category></category></item><item><title><![CDATA[用Javascript如何拷贝指定文字？]]></title><link>https://blog.csdn.net/jyee721/article/details/79058696</link><guid>https://blog.csdn.net/jyee721/article/details/79058696</guid><author>jyee721</author><pubDate>Sun, 14 Jan 2018 19:59:42 +0800</pubDate><description><![CDATA[页面上给用户提供一串字符(通常是URL或者分享代码)，然后旁边有个拷贝按钮可以让用户直接点击复制是个很常见的简单的功能．但真的要去做的时候，发现一切并没有我理想当中的那么简单． 
浏览器为了确保是用户自己做的操作，复制的内容必须是“选中”的，“可见”的。除此之外，还需要考虑头疼的浏览器兼容问题。

“选中”的复制内容

选中不光可以通过用户操作，也可以通过JS：


用任意HTML，通过Selec]]></description><category></category></item><item><title><![CDATA[用JS分析、导出CSV文件]]></title><link>https://blog.csdn.net/jyee721/article/details/78575118</link><guid>https://blog.csdn.net/jyee721/article/details/78575118</guid><author>jyee721</author><pubDate>Sun, 19 Nov 2017 16:30:29 +0800</pubDate><description><![CDATA[CSV是comma separated values的缩写，现已成为常用的数据文档格式之一。虽说它可以用Excel等表格处理软件打开修改，但它本质上是个纯文本文件，并且格式相当简单：每一行数据为行，每一列数据由分隔符隔开。因此，在分析CSV文件的时候，我会选择将其转为二维数组或一组Object便于处理。而在导出时，则相反地，转为纯文本。

说起来很简单，但由于CSV并未标准化，不同软件系统使用的行]]></description><category></category></item><item><title><![CDATA[配置bash on windows前端开发环境]]></title><link>https://blog.csdn.net/jyee721/article/details/78447080</link><guid>https://blog.csdn.net/jyee721/article/details/78447080</guid><author>jyee721</author><pubDate>Sat, 04 Nov 2017 23:36:26 +0800</pubDate><description><![CDATA[在不需要安装虚拟机的情况下，安装一个ubuntu命令行作为一个windows的程序来使用]]></description><category></category></item><item><title><![CDATA[Ember.js的那些坑]]></title><link>https://blog.csdn.net/jyee721/article/details/70667286</link><guid>https://blog.csdn.net/jyee721/article/details/70667286</guid><author>jyee721</author><pubDate>Tue, 25 Apr 2017 00:14:14 +0800</pubDate><description><![CDATA[用了一年Ember.js，从2.3到2.10，因为数据量大，以及项(xu)目(qiu)的复(bian)杂(tai)性踩了不少坑，感觉再也不会爱了。在把这个锅甩出去之前，小小总结一下，以示后人，知己知彼方能百战百胜。注意，这篇我只吐槽。]]></description><category></category></item></channel></rss>