<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[知行合一，跬步致远]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Mr_JavaScript</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Mr_JavaScript]]></copyright><item><title><![CDATA[git如何撤销未push的commit]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/128154260</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/128154260</guid><author>Mr_JavaScript</author><pubDate>Fri, 02 Dec 2022 20:44:55 +0800</pubDate><description><![CDATA[撤销commit一般用git reset ，语法如下：
git reset [ --mixed | --soft | --hard] []]]></description><category></category></item><item><title><![CDATA[vue3.0实现前进刷新后退不刷新]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/125817007</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/125817007</guid><author>Mr_JavaScript</author><pubDate>Sat, 16 Jul 2022 13:44:50 +0800</pubDate><description><![CDATA[1、通过keep-alive缓存组件；
2、组件路由里定义一个变量isKeepAlive来控制组件的缓存；
3、通过路由独享守卫根据条件修改缓存变量，选择性缓存组件。]]></description><category></category></item><item><title><![CDATA[TypeScript的泛型和泛型约束]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/125497391</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/125497391</guid><author>Mr_JavaScript</author><pubDate>Wed, 29 Jun 2022 10:13:03 +0800</pubDate><description><![CDATA[在使用ts封装一个函数时，由于入参是不固定的，必然参数类型也无法固定，这时就要用到泛型来定义参数类型。泛型可以理解为宽泛的类型，通常用于类和函数。


例2. 在函数中使用泛型




例3. 接口中使用泛型




 例3中的T1和T2泛型添加了默认类型，类似于函数的默认参数。 泛型约束即是对泛型的类型进行约束控制，如限制为object类型或指定接口类型。当在函数里使用泛型参数的属性或者方法时，就需要对泛型进行约束。


例2. object约束




上面例2的getKeys方法获取一个对象的所有属性]]></description><category></category></item><item><title><![CDATA[vite如何兼容低版本浏览器]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/125388234</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/125388234</guid><author>Mr_JavaScript</author><pubDate>Thu, 23 Jun 2022 12:19:24 +0800</pubDate><description><![CDATA[vite通过配置@vitejs/plugin-legacy来解决兼容低版本浏览器的问题]]></description><category></category></item><item><title><![CDATA[Vite打包后的dist不能直接在浏览器打开吗]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/124785338</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/124785338</guid><author>Mr_JavaScript</author><pubDate>Mon, 06 Jun 2022 18:11:21 +0800</pubDate><description><![CDATA[先来看看Vite打包后生成的index.html


&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;head&gt;
    &lt;meta charset="UTF-8" /&gt;
    &lt;link rel="icon" href="/favicon.ico" /&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;
 ]]></description><category></category></item><item><title><![CDATA[JavaScript洗牌算法]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/124826751</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/124826751</guid><author>Mr_JavaScript</author><pubDate>Tue, 17 May 2022 18:02:10 +0800</pubDate><description><![CDATA[概念

洗牌算法即是把一组数组里的元素随机组合生成一个新数组。

实现


const shuffle = ([...arr]) =&gt; { 
    let m = arr.length; 
    while (m) { 
        const i = Math.floor(Math.random() * m--); 
        [arr[m], arr[i]] = [arr[i], arr[m]];
    }
    return arr;
};  

// 测试
const tes]]></description><category></category></item><item><title><![CDATA[Vue3.0在script setup里定义变量时提示×××is declared but its value is never read.Vetur的解决办法]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/124714675</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/124714675</guid><author>Mr_JavaScript</author><pubDate>Wed, 11 May 2022 18:03:59 +0800</pubDate><description><![CDATA[问题重现如下图：





问题：

根据提示判断问题是，IDE编辑器没法识别到script setup里定义的变量已经在template里被使用。

解析：

作者阅读Vue3.0的文档得知，新版Vue提供了新的语法检测插件叫Volar，以前使用的vue语法检测插件Vetur已不支持新版的script setup语法。以下为官方文档原文：


推荐的 IDE 配置是VSCode+Volar扩展。Volar 为模板表达式、组件 prop，甚至是插槽验证提供了语法高亮和智能提示。我们强烈推荐这种设置，...]]></description><category></category></item><item><title><![CDATA[Vue3.2单文件组件setup的语法糖总结]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/124554063</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/124554063</guid><author>Mr_JavaScript</author><pubDate>Sat, 07 May 2022 17:58:38 +0800</pubDate><description><![CDATA[满满的干货，建议收藏慢慢看，可以当作Vue3.0的学习资料。
    setup是Vue3.0后推出的语法糖，并且在Vue3.2版本进行了大更新，像写普通JS一样写vu...]]></description><category></category></item><item><title><![CDATA[taro路由传参正确的接收方式]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/117924396</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/117924396</guid><author>Mr_JavaScript</author><pubDate>Tue, 15 Jun 2021 15:07:19 +0800</pubDate><description><![CDATA[扯淡

taro路由传参官方文档只说明了怎么传参，但是并没有说明具体怎么去接收参数，它又不像微信小程序那样在onload生命周期里拿到，百度

正文
]]></description><category></category></item><item><title><![CDATA[解决uni-file-picker组件在ios点击失效的问题]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/117263483</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/117263483</guid><author>Mr_JavaScript</author><pubDate>Tue, 15 Jun 2021 14:29:45 +0800</pubDate><description><![CDATA[从组件源码里找到choose-and-upload-file.js文件，查找chooseAndUploadFile方法，在方法里添加下面代码，保存即可解决。


opts.sourceType = ['album','camera']

如下图所示：




]]></description><category></category></item><item><title><![CDATA[微信小程序页面如何滚动到底部]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/114880296</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/114880296</guid><author>Mr_JavaScript</author><pubDate>Tue, 16 Mar 2021 14:29:05 +0800</pubDate><description><![CDATA[在需要滚动的页面根节点定义一个id="page"


&lt;view id="page"&gt;
    &lt;text&gt;需要滚到的页面&lt;/text&gt;
&lt;/view&gt;

点击事件触发以下方法


wx.createSelectorQuery().select('#page').boundingClientRect(rect =&gt; {
  wx.pageScrollTo({
    duration: 500,    // 动画时长
    scrollTop: re.]]></description><category></category></item><item><title><![CDATA[一篇文章搞懂CSS3网格布局（Grid）]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/107983703</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/107983703</guid><author>Mr_JavaScript</author><pubDate>Thu, 13 Aug 2020 16:47:02 +0800</pubDate><description><![CDATA[&lt;!-- div class="asset-body" --&gt;
                                    &lt;h2&gt;一、概述&lt;/h2&gt;

网格布局（Grid）是最强大的 CSS 布局方案。
                                &lt;!-- /div --&gt;


                                &lt;!-- di...]]></description><category></category></item><item><title><![CDATA[js通过match方法和正则表达式截取某两个字符串中间部分的字符]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/104835532</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/104835532</guid><author>Mr_JavaScript</author><pubDate>Fri, 13 Mar 2020 10:37:37 +0800</pubDate><description><![CDATA[比如我要从下面base64编码字符串中截取一个文件后缀名，即image/和;之间的字符串，方法如下：


data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA......


代码：


let src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA......'
let res = src.matc...]]></description><category></category></item><item><title><![CDATA[基于Vue和Vant-ui开发的移动端周历日期选择器]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/103875524</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/103875524</guid><author>Mr_JavaScript</author><pubDate>Tue, 07 Jan 2020 15:46:08 +0800</pubDate><description><![CDATA[该周历日期选择器是在基于Vue的小日历（支持按周切换）的基础上改造而来，对其代码进行优化，并引入了Vant-ui新增了年份和月份的选择、一键返回今日的快捷键功能，以及支持4种常用日期格式的选择。总体来说，该日期选择器适用于中小型移动端web项目，非常好用，现在我把它封装成了一个组件，有需求的同学就拿去用吧，别忘了点赞哦！

动图演示：





详细介绍和源码，请戳此链接：https://gi...]]></description><category></category></item><item><title><![CDATA[js实现树形数据转成扁平数据]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/102833991</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/102833991</guid><author>Mr_JavaScript</author><pubDate>Thu, 31 Oct 2019 11:14:32 +0800</pubDate><description><![CDATA[利用递归的方法循环树形数组，当遇到有children的对象再次调用递归函数循环children数组，每次循环的数据放入一个提前声明好的数组里，等所有递归函数执行完，这个数组即是想要得到的扁平数据数组。


let res = []
const fn = (source)=&gt;{
    source.forEach(el=&gt;{
        res.push(el)
        e...]]></description><category></category></item><item><title><![CDATA[js如何修改伪类样式如before或after]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/97645195</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/97645195</guid><author>Mr_JavaScript</author><pubDate>Mon, 29 Jul 2019 15:46:07 +0800</pubDate><description><![CDATA[概括

通过js创建一个内嵌样式表，并添加需要修改的伪类样式，覆盖原始的伪类样式。

介绍

html代码


&lt;ul&gt;
　　&lt;li&gt;apple&lt;/li&gt;
　　&lt;li&gt;banana&lt;/li&gt;
　　&lt;li&gt;pear&lt;/li&gt;
&lt;/ul&gt;

css代码


ul li{
    list-style: no...]]></description><category></category></item><item><title><![CDATA[.gitignore忽略规则的匹配语法]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/91788035</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/91788035</guid><author>Mr_JavaScript</author><pubDate>Thu, 13 Jun 2019 09:14:12 +0800</pubDate><description><![CDATA[1、举例说明，掌握这些基本够用了


#注释           .gitignore的注释
*.txt           忽略所有 .txt 后缀的文件
!src.a          忽略除 src.a 外的其他文件
/todo           仅忽略项目根目录下的 todo 文件，不包括 src/todo
build/          忽略 build/目录下的所有文件，过滤整个bu...]]></description><category></category></item><item><title><![CDATA[Mint-UI的mt-search如何触发事件（确定和取消）]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/90479493</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/90479493</guid><author>Mr_JavaScript</author><pubDate>Thu, 23 May 2019 15:20:05 +0800</pubDate><description><![CDATA[Mint-ui的官方文档写得是真的简单，简单到遗漏了许多重点，使用文档里关于mt-search的api只介绍了属性的部分，各个调用方法完全没有介绍，让用户自己去探索？官方文档。



关于开源框架的使用文档，我接触到的还是Element-UI写得最为简洁明了了，相比于Mint-UI都是同一个爸爸（饿了么）出来的，差距为什么就这么大呢？

正文

1、确定事件

mint-ui使用文档开头里有提到，...]]></description><category></category></item><item><title><![CDATA[axios请求文件流下载文件]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/89710402</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/89710402</guid><author>Mr_JavaScript</author><pubDate>Tue, 30 Apr 2019 16:07:49 +0800</pubDate><description><![CDATA[axios.post('/api',{
    // 传参
},
{
    responseType:'blob'    // 设置响应数据类型
})
.then(res=&gt;{
    if (res.status == 200) {
        let url = window.URL.createObjectURL(new Blob([res.data]))
       ...]]></description><category></category></item><item><title><![CDATA[基于Element-UI的组件改造的树形选择器（树形下拉框）]]></title><link>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/88604270</link><guid>https://blog.youkuaiyun.com/Mr_JavaScript/article/details/88604270</guid><author>Mr_JavaScript</author><pubDate>Mon, 18 Mar 2019 13:46:16 +0800</pubDate><description><![CDATA[前言：由于做项目需要一个树形选择器，项目用的也是element-ui框架，然而它自带的选择器组件没有树形选项，又不想引入其他的框架组件，于是自己利用el-select和el-tree改造了一个，感觉还挺好用的，就封装成了一个组件，如下图：

element-ui的el-select组件的选项只能是列表形式：



改造后的树形选择器：



简介：此树形选择器组件是基于elment-ui框架的e...]]></description><category></category></item></channel></rss>