<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaojinglyd的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaojinglyd</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaojinglyd]]></copyright><item><title><![CDATA[react中的keep-alive功能]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/120357493</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/120357493</guid><author>xiaojinglyd</author><pubDate>Fri, 17 Sep 2021 21:50:15 +0800</pubDate><description><![CDATA[在vue中可以很方便的实现keep-alive功能，但是在react中却不是很方便，遇事不要慌，度娘来帮忙。
react-keep-alive
首先找到的是react-keep-alive，一波操作之后，发现原来显示的页面不显示了，唉，抬下去，下一个！
react-activation
这个真香，具体怎么使用不再介绍，请查看中文文档，使用的时候要认真查看文档，同一个父节点下，相同位置的 &lt;KeepAlive&gt; 默认会使用同一份缓存，要想实现多份需要增加动态id属性来区分。手动控制缓存（tabBa]]></description><category></category></item><item><title><![CDATA[前端搭建环境]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/120106308</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/120106308</guid><author>xiaojinglyd</author><pubDate>Sat, 04 Sep 2021 21:45:37 +0800</pubDate><description><![CDATA[nvm


nvm-windows
Download the latest installer


mac
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

export NVM_DIR="$([ -z "${XDG_CONFIG_HO]]></description><category></category></item><item><title><![CDATA[奇技淫巧之一]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/120106266</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/120106266</guid><author>xiaojinglyd</author><pubDate>Sat, 04 Sep 2021 21:43:50 +0800</pubDate><description><![CDATA[取整
const integerN = 0|3.2;

数组过滤false数据
const newArr = [2, '', undefined, 'a', false, null].filter(Bolean)

ThinkPad的笔记本用出苹果笔记本感觉
第一步
联想官方驱动下载地址：https://iknow.lenovo.com.cn/driver/driverlist
输入型号ThinkPad E570c（根据自己笔记本型号输入）
第二步
找到触摸板驱动下载安装即可，安装完了之后，进入 开始》设置]]></description><category></category></item><item><title><![CDATA[通过CSS控制svg变化]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/119192113</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/119192113</guid><author>xiaojinglyd</author><pubDate>Wed, 28 Jul 2021 22:56:19 +0800</pubDate><description><![CDATA[本文介绍使用css魔法控制svg变化，要想实现这一点只需要耐心看下去！
svg代码示例
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
  &lt;meta charset="UTF-8"&gt;
  &lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
  &lt;meta name="viewport" content="width=device-width, initi]]></description><category></category></item><item><title><![CDATA[xampp问题]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/118070225</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/118070225</guid><author>xiaojinglyd</author><pubDate>Sun, 20 Jun 2021 15:18:28 +0800</pubDate><description><![CDATA[使用xampp（v3.3.0）无法启动MySQL
端口号被占用

It seems that the port 3306 is already in use.aer you sure you want to use this port?

因为安装xampp之前已经安装过MySQL，并且自动启动，默认端口号3306

方法一：选择mysql-&gt;config-&gt;my.ini把3306端口都修改，Apache-&gt;Config-&gt;php.ini把3306端口也修改掉，控制面板-&gt;服务]]></description><category></category></item><item><title><![CDATA[开始工作就差一个双击]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/118061104</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/118061104</guid><author>xiaojinglyd</author><pubDate>Sun, 20 Jun 2021 00:05:12 +0800</pubDate><description><![CDATA[背景
程序员日常，每天打开电脑开始工作时候总是要打开一堆的东西，浏览器、聊天工具、编辑器（打开对应的项目）、项目文件夹…作为一个’懒人‘，每天重复这一堆操作，很烦~~~
环境

windows（MAC也可以，下文会讲一点）
git
VSCode安装并配置了path

开整
第一步新建文件
新建一个文本文档，重命名为open.sh，重点是后缀，双击打开此文件会默认使用git bash运行
后缀名也可以是.cmd双击打开此文件会默认使用cmd运行
第二步编写文件
想要打开一个文件夹（文件夹地址：E:\proje]]></description><category></category></item><item><title><![CDATA[一步一步打造属于自己的脚手架]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/117607911</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/117607911</guid><author>xiaojinglyd</author><pubDate>Sat, 05 Jun 2021 23:43:34 +0800</pubDate><description><![CDATA[预备知识


本地安装卸载包
在项目根目录下运行下面命令
# 安装
npm link

# 卸载
npm unlink



命令行命令指定运行文件
package.json文件中bin字段指定


项目依赖包


chalk 打印出彩色字


commander 完整的 node.js 命令行解决方案


download-git-repo 下载仓库代码


handlebars 编译文件


inquirer 交互式命令行界面


ora 加载动画


update-notifier 更新通知


fi]]></description><category></category></item><item><title><![CDATA[微前端-多页应用]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/117136746</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/117136746</guid><author>xiaojinglyd</author><pubDate>Fri, 21 May 2021 23:45:33 +0800</pubDate><description><![CDATA[简介
多页应用初级实现方案，技术栈包括elementUI、vue、vuex、axios。。。
解决问题

项目布局共用问题

使用iframe嵌套子页面的方式，只会更新页面部分区域


跳转子页面只更新部分区域

使用iframe嵌套子页面的方式


子页面提示不置顶

受到iframe限制，封装方法采用调用主页面vue实例提示


子页面控制跳转到主页面路由

采用调用主页面vue实例跳转（主页面实例挂载在window上）


直接进入子页面自动跳转主页面中对应路由

封装方法判断是否被嵌入iframe，]]></description><category></category></item><item><title><![CDATA[前端脚手架项目]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/117136625</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/117136625</guid><author>xiaojinglyd</author><pubDate>Fri, 21 May 2021 23:28:58 +0800</pubDate><description><![CDATA[安装
npm install @lydxwj/da-cli -g

开发
git clone https://github.com/lydxwj/da-cli.git
# 或者下载解压
https://github.com/lydxwj/da-cli/archive/refs/heads/master.zip

cd ./da-cli
npm install

# 安装完依赖之后执行
npm link

命令
打开命令行工具


增加模板
da add

步骤示例：(本项目地址https://github.]]></description><category></category></item><item><title><![CDATA[自动生成文档]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/115105841</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/115105841</guid><author>xiaojinglyd</author><pubDate>Mon, 22 Mar 2021 23:40:51 +0800</pubDate><description><![CDATA[批量把Markdown文件转化成HTML，并且支持浏览器预览，实时更新同步修改
开发
npm start


自动打开浏览器
监听文件变化
出现谷歌打开开发者工具之后操作页面卡死时，建议升级浏览器

生产
npm run build

介绍
目录结构

asserts：存放静态文件

style：本文件夹中的github-markdown.css文件是样式必需文件


build：打包执行的相关代码
dist：生成文档目录
src：Markdown文件目录
template：HTML模板文件目录

注：

]]></description><category></category></item><item><title><![CDATA[failed with status 128]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/115050801</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/115050801</guid><author>xiaojinglyd</author><pubDate>Sun, 21 Mar 2021 16:07:36 +0800</pubDate><description><![CDATA[报错信息
# 在使用`download-git-repo`下载仓库代码时报错信息
'git clone' failed with status 128
Response code 404 (Not Found)
connect ETIMEDOUT

# 运行`git clone`的报错信息
remote: HTTP Basic: Access denied
fatal: Authentication failed for

处理
download-git-repo报错
Response code 404 (]]></description><category></category></item><item><title><![CDATA[gitignore不生效]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/115050788</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/115050788</guid><author>xiaojinglyd</author><pubDate>Sun, 21 Mar 2021 16:06:31 +0800</pubDate><description><![CDATA[问题
修改.gitignore文件之后，git commit提交，但是没有生效最新的gitignore配置
解决
出现不生效的原因是已经提交过更新，git有了缓存，所以更改完.gitignore文件需要先清git缓存，然后再提交
git rm -r --cached .
git add . 
git commit -m 'xxx'


...]]></description><category></category></item><item><title><![CDATA[element表格多选和单选、选中高亮处理、保存多页选中记录和翻页回显选中]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/113277110</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/113277110</guid><author>xiaojinglyd</author><pubDate>Wed, 27 Jan 2021 22:06:48 +0800</pubDate><description><![CDATA[环境：


element-ui@2.13.2


vue@2.6.6


示例：
1. 表格单选


方案1
&lt;template&gt;
&lt;div class="radio_page"&gt;
  &lt;div class="selected_num"&gt;已选 {{selectedRow.name}}&lt;/div&gt;
  &lt;el-table
    :data="list"
    ref="table"
    :border="true"
    v-loading="]]></description><category></category></item><item><title><![CDATA[自定义指令函数传参]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/113276990</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/113276990</guid><author>xiaojinglyd</author><pubDate>Wed, 27 Jan 2021 22:03:13 +0800</pubDate><description><![CDATA[环境：
vue@2.6.6
问题：

绑定函数传参
传参多个多样
参数动态变化

方案：
1. 采用传对象方式(binding.value)
&lt;el-button v-mydirective="{ fn: myFn, args: x }" type="text" size="small"&gt;测试&lt;/el-button&gt;


const mydirective = {
  inserted: function (el, binding) {
    const args = bindin]]></description><category></category></item><item><title><![CDATA[小程序自动化]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/113097742</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/113097742</guid><author>xiaojinglyd</author><pubDate>Sun, 24 Jan 2021 21:26:09 +0800</pubDate><description><![CDATA[环境：
miniprogram-automator@0.10.0
jest@26.6.3
问题：
建议


整个测试项目可以独立于小程序项目之外


jest同步执行多个测试文件会出错，需要加参数--runInBand


不分多个文件测试小程序

automator.launch要执行多次，容易导致测试出现多种问题
automator.launch无法在多个文件中共用变量
引入其他文件导出方法传入it时，即使出错，测试也是通过的



当测试点击按钮跳转时或者测试详情页面时，一定要注意判断条件

按钮跳转]]></description><category></category></item><item><title><![CDATA[H5页面跳转小程序]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/111502710</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/111502710</guid><author>xiaojinglyd</author><pubDate>Mon, 21 Dec 2020 23:52:40 +0800</pubDate><description><![CDATA[环境：

vue2.X
公众号内

问题：


生成签名：config:invalid signature

确认签名算法正确，可用 页面工具进行校验。
确认config中nonceStr（js中驼峰标准大写S）, timestamp与用以签名中的对应noncestr, timestamp一致。
确认url是页面完整的url(请在当前页面alert(location.href.split(’#’)[0])确认)，包括’http(s)????/‘部分，以及’？‘后面的GET参数部分,但不包括’#'hash后面]]></description><category></category></item><item><title><![CDATA[面试题-实现异步队列]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/111502638</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/111502638</guid><author>xiaojinglyd</author><pubDate>Mon, 21 Dec 2020 23:44:07 +0800</pubDate><description><![CDATA[实现异步队列
实现异步队列函数，使其能够按照参数顺序依次输出
function fun1(cb) {
  setTimeout(function() {
    console.log('fun1');
    cb();
  }, 3000)
}
function fun2(cb) {
  setTimeout(function() {
    console.log('fun2');
    cb();
  }, 1000)
}
function fun3(cb) {
  setTimeout(func]]></description><category></category></item><item><title><![CDATA[小程序使用socket.io]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/110733406</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/110733406</guid><author>xiaojinglyd</author><pubDate>Sun, 06 Dec 2020 12:57:04 +0800</pubDate><description><![CDATA[环境
服务端：Egg

egg2.15.1
egg-socket.io4.1.6

客户端：小程序
问题
1.小程序不支持socket.io
推荐使用weapp.socket.io
2.小程序端socket配置
// weapp.socket.io项目打包后的文件
const io = require('../static/js/weapp.socket.io');
io(url, {
    transports: ['websocket'], // 此项必须设置
});

3.服务端配置
Egg官方文档]]></description><category></category></item><item><title><![CDATA[算法入门之二叉树遍历顺序]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/110101323</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/110101323</guid><author>xiaojinglyd</author><pubDate>Tue, 24 Nov 2020 23:49:36 +0800</pubDate><description><![CDATA[二叉树遍历顺序
四种遍历方式
先/前序遍历、中序遍历、后序遍历、层序遍历
测试二叉树创建
function BinaryTree() {
	this.root = null;
	this.insert = function (key) {
		var node = new BinaryNode(key);
		if (this.root) {
			this._insertNode(node, this.root);
		} else {
			this.root = new BinaryNode(key)]]></description><category></category></item><item><title><![CDATA[loadmap]]></title><link>https://blog.youkuaiyun.com/xiaojinglyd/article/details/109479708</link><guid>https://blog.youkuaiyun.com/xiaojinglyd/article/details/109479708</guid><author>xiaojinglyd</author><pubDate>Tue, 03 Nov 2020 21:30:07 +0800</pubDate><description><![CDATA[地图SDK加载器，支持腾讯地图和百度地图，可用于vue和react项目。

百度地图可选择使用react-baidu-maps，vue-baidu-map

安装
npm install load-map --save

使用
import LoadMap from 'load-map';
LoadMap.load({
    mapKey: 'xxxxx', // 你申请的key
    version： '2.exp', // 地图版本，
    url: 'https://map.qq.com/api]]></description><category></category></item></channel></rss>