<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lkrdmm的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lkrdmm</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lkrdmm]]></copyright><item><title><![CDATA[promise.all()方法手撕代码]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/111940023</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/111940023</guid><author>lkrdmm</author><pubDate>Wed, 30 Dec 2020 00:30:23 +0800</pubDate><description><![CDATA[Promise.all0 = function(promises){
return new Promise((reslove, reject)=&gt;{
const len = promises.length;
let arry_put = new Array(len);
j = 0;
for(var i = 0; i&lt;len; i++){
Promise.resolve(promises[i]).then(res=&gt;{
arry_put[j] = res;
j++;
if(j == len)]]></description><category></category></item><item><title><![CDATA[父组件传递异步数据给子组件遇到的问题]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/111907693</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/111907693</guid><author>lkrdmm</author><pubDate>Tue, 29 Dec 2020 14:20:36 +0800</pubDate><description><![CDATA[父组件可以通过props传递异步数据给子组件，但是值得注意的是，子组件中需要watch去监听父组件传过来的值，并且要对对应的函数进行重新调用。
代码如下：
下面展示一些 内联代码片。
props: {
      map: {
        type: Object,
        default: null
      },
      mapView: {
        type: Object,
        default: null
      }
    },
 watch: {
   ]]></description><category></category></item><item><title><![CDATA[JS的深拷贝和浅拷贝的造成原因以及解决方法]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/111661700</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/111661700</guid><author>lkrdmm</author><pubDate>Fri, 25 Dec 2020 11:04:59 +0800</pubDate><description><![CDATA[造成深拷贝和浅拷贝的主要原因还是因为数据存储的方式以及位置造成的。
在理解深拷贝和浅拷贝之前，咋们先了解下JavaScript有那些类型：


基本数据类型：Number、String、Boolean、undefined、Null、以及Es6新特性Symbol、或者未来Es10中的Bigint，一共是7种。


引用数据类型：Object，又细分为Object、Array、function、Data等等


粗糙来讲，一共是8种数据类型；
接下来我们讲讲基本和引用数据类型的存储原理：

基本数据类型：存储方]]></description><category></category></item><item><title><![CDATA[px、%、rem、em的理解]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/111600223</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/111600223</guid><author>lkrdmm</author><pubDate>Wed, 23 Dec 2020 22:35:05 +0800</pubDate><description><![CDATA[在我们对某个盒子的高度、宽度进行定义的时候，我们常见用到的单位是px、%、rem、em。
px：px绝对是我们小伙伴最最常用的一种单位，也是最简单的一种。px（像素）是一种规定好的单位，无法动态的去变化。
%:：%也是一种常用的单位，就是根据父元素去变化，不断去遍历父元素，直到在某个父亲的父亲的。。中找到一个确切的值，从而确定该元素的值。（在这里我们需要理解一下页面的构造问题，下次我会对这个专门细讲一下）
rem：rem也是一种比较容易理解的单位，就是根据 “根元素” 去确定值，比如在html中设置 fon]]></description><category></category></item><item><title><![CDATA[Vue+Echarts实例]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/111381774</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/111381774</guid><author>lkrdmm</author><pubDate>Wed, 23 Dec 2020 20:59:43 +0800</pubDate><description><![CDATA[先看下最终的效果图吧。

很明显哈，是在一个父组件上，有两个子组件页面，每个子组件展示一个Echarts图。
父组件源码我就不展示了，主要是把子组件导入并且加入到components属性中，然后在对应的位置去用就可以了。
由于我把请求都写在了子组件中去调用，所以就不用去用props传递数据了（实际开发最好减少请求次数，从而起到优化的作用）。
这个是饼图子组件的代码。
&lt;template&gt;
  &lt;div&gt;
    &lt;div id="myCharts"&gt;&lt;/div&gt]]></description><category></category></item><item><title><![CDATA[JavaScript动态产生对象push进指定数组，发现数组所有元素一样]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/111474819</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/111474819</guid><author>lkrdmm</author><pubDate>Mon, 21 Dec 2020 14:51:42 +0800</pubDate><description><![CDATA[原因：对象是同一个对象，动态创建对象时，不断对对象赋值，push进数组，数组[obj,obj,obj],所有的obj值相同，因而导致数组中都是同一个对象
错误写法：
下面展示一些 内联代码片。
var obj = {
            id: null,
            name: '',
        };
var str = [];
for (var i = 0; i &lt; 5; i++) {
    obj.id = i;
    obj.name = 'name_' + i;
 ]]></description><category></category></item><item><title><![CDATA[css_min-height、max-height、height详细讲解]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/111174637</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/111174637</guid><author>lkrdmm</author><pubDate>Mon, 14 Dec 2020 16:28:38 +0800</pubDate><description><![CDATA[首先min-height、max-height、height之间是有权重的等级的。
权重等级：min-height &gt; max-height &gt; height
直接写一个Demo来简单的讲解一下：
下面展示一些 内联代码片。
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
  &lt;meta charset="UTF-8"&gt;
  &lt;meta name="viewport" content="width=devic]]></description><category></category></item><item><title><![CDATA[webpack遇到各种问题到解决]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/111132501</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/111132501</guid><author>lkrdmm</author><pubDate>Sun, 13 Dec 2020 17:17:26 +0800</pubDate><description><![CDATA[webpack的概述就不再多少了。
我直接讲一下我在学习webpack过程中遇到的一些问题。
问题1：在安装局部的webpack的过程中一直会报错，无法安装成功。
一般原因是你在执行 npm init -y 的时候，默认的把 package.json 文件中 "name"属性命名为 “webpack”，所以会导致命名重复报错的问题。


问题2：当你安装好 webpack webpack-cli（我记得好像是在4.几版本后就必须安装webpack-cli）webpack-dev-server 后，执行
np]]></description><category></category></item><item><title><![CDATA[ES6__解构赋值]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/110951742</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/110951742</guid><author>lkrdmm</author><pubDate>Thu, 10 Dec 2020 14:01:56 +0800</pubDate><description><![CDATA[一种针对数组或者对象进行模式匹配，然后对其中的变量进行赋值。


]]></description><category></category></item><item><title><![CDATA[ES6__let、const关键字]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/110951667</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/110951667</guid><author>lkrdmm</author><pubDate>Thu, 10 Dec 2020 13:59:17 +0800</pubDate><description><![CDATA[let :
声明的变量只在let命令所在的代码块内有效；
不能重复声明；
不存在变量提升；
const
声明一个只读的常量，一旦声明，常量的值就不能改变；
暂时性死区；
注意要点：const 其实保证的不是变量的值不变，而是保证变量指向的内存地址所保存的数据不允许改动。

...]]></description><category></category></item><item><title><![CDATA[父子组件之间互相传递数据]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/109474459</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/109474459</guid><author>lkrdmm</author><pubDate>Tue, 03 Nov 2020 17:55:09 +0800</pubDate><description><![CDATA[有的时候我们常常在父组件中通过点击事件弹出一个页面，也就是该父组件的子组件。我们可能在父组件上某个部分需要用到子组件上的某个数据，这个时候我们就需要用到emit技术
// 这是发射语句，第一个参数和接受语句的第一个参数一致；第二个参数是传递的数据
this.$root.eventHub.$emit('_c_faglInfo_popup_enlarge_water', res)

//这是接受语句，第一个参数需要和发射语句的第一个参数一致；第二个参数是接受发射语句的数据的函数
this.$root.event]]></description><category></category></item><item><title><![CDATA[通过插槽来修改表单里面的数据]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/109338755</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/109338755</guid><author>lkrdmm</author><pubDate>Wed, 28 Oct 2020 17:56:19 +0800</pubDate><description><![CDATA[HTML代码
&lt;el-table-column prop="domestic" label="生活用水" width="250"&gt;
              &lt;template slot-scope="scope"&gt;
                &lt;el-form :model="scope.row"&gt;
                  &lt;el-form-item size="small"&gt;
                    &lt;el-inpu]]></description><category></category></item><item><title><![CDATA[双击table修改单元格中内容]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/109242882</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/109242882</guid><author>lkrdmm</author><pubDate>Fri, 23 Oct 2020 15:10:39 +0800</pubDate><description><![CDATA[在标签 e-table 中添加一个 @cell-dblclick="tableDbEdit"
HTML代码
&lt;div id="son-tabs" v-if="nnCodgcxmodels"&gt;
          &lt;el-table 
          :data="riverdata" 
          border 
          height=60%
          @cell-dblclick="tableDbEdit"
          &gt;

JavaScr]]></description><category></category></item><item><title><![CDATA[el-table点击按钮获得一行的数据]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/109242042</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/109242042</guid><author>lkrdmm</author><pubDate>Fri, 23 Oct 2020 15:00:17 +0800</pubDate><description><![CDATA[获取某一行数据有两种方式：
第一种是在标签el-table上添加行单击事件***@row-click=“handleEdit**”*，但是有时候我们想只是点击一下某个操作按钮，比如保存按钮来获取row，这个时候这种方式就不合适了。所以此时我们用下面这种方法。
通过插槽的方式来获取：
HTML代码
// An highlighted block
&lt;el-table-column label="操作"&gt;
	&lt;template slot-scope="scope"&gt; 
 		&lt;el-]]></description><category></category></item><item><title><![CDATA[三次握手和四次挥手学习]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/108930850</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/108930850</guid><author>lkrdmm</author><pubDate>Mon, 05 Oct 2020 18:23:57 +0800</pubDate><description><![CDATA[三次握手
首先我们要知道三次握手是为了什么。为什么一定是三次，而不是一次或者两次；
其实握手这种行为就是希望客户端和服务器都能够知道，双方都具备发送和接受请求功能。所以才产生握手这个事件；
第一次握手：客户端向服务端发送请求，在这次请求中；客户端只知道自己发送请求正常，服务器知道客户端发送请求正常、自己接受请求正常。
第二次握手：服务器向客户端发送请求，在这次请求中；客户端知道了自己接受请求正常、客户端接受发送、接受请求正常。（客户端已经具备所以需求了）；服务器知道自己发送请求正常。
第三次握手：客户端向.]]></description><category></category></item><item><title><![CDATA[DOM学习总结]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/108920207</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/108920207</guid><author>lkrdmm</author><pubDate>Sun, 04 Oct 2020 19:23:43 +0800</pubDate><description><![CDATA[DOM是操作HTML的一个非常常用的技术；
我们可以把HTML所有的标签看成是一棵树，然后每个标签中包含的标签了就是这个标签的子节点或者子孙节点。这种树的概念很方便我们在JS中去管理HTML页面。
在DOM中，我们和标签元素一般都是通过id选择器或者标签选择器来连接起来的。
DOM有很多强大的功能，比较常见的：
列如对指定的元素内容进行修改
document.getElementById("id").innerHTML = "new"

一般获取的方法有三种：
getElementById(id) - 获取]]></description><category></category></item><item><title><![CDATA[Vue生命周期]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/108913833</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/108913833</guid><author>lkrdmm</author><pubDate>Sat, 03 Oct 2020 22:06:41 +0800</pubDate><description><![CDATA[在了解Vue生命周期时候了，我们肯定会接触到官方给的Vue生命周期图。
如图所示：

Vue生命周期分为四个阶段：
第一阶段创建Vue对象；
第二阶段是编译；
第三阶段是数据跟新；
第四阶段是销毁实例对象；
每个阶段都是有两个钩子函数，阶段中的钩子函数都是与之对应的。
在第一阶段：我们会遇到第一个函数beforeCreat()，此时的’data’和’methods’都没有初始化，最早初始化是在函数Creat()时候。
第二阶段：经过了第一阶段后，我们要对el进行判断是否存在，如果不存在就要初始化el，否则进]]></description><category></category></item><item><title><![CDATA[AJAX学习总结]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/108904513</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/108904513</guid><author>lkrdmm</author><pubDate>Fri, 02 Oct 2020 20:34:33 +0800</pubDate><description><![CDATA[AJAX使用原因：
在学习AJAX之前我们要先知道为什么要去使用AJAX。在以前前端对HTML页面进行刷新是通过重新加载新的页面来实现的，可是伴随着HTML页面元素越来越多，这种刷新方式因为速度太慢，又消耗资源，慢慢满足不了客户的需求。这个时候AJAX思想就出来了。
AJAX思想：
通过对页面进行部分刷新，从而起到既能满足用户的需求，又能极大的节省时间和资源。
AJAX实现：
下面展示一些
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequ]]></description><category></category></item><item><title><![CDATA[Vue-router——Vue-ui后台系统项目总结]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/108888895</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/108888895</guid><author>lkrdmm</author><pubDate>Thu, 01 Oct 2020 18:18:24 +0800</pubDate><description><![CDATA[首先我们要知道Vue-router是Vue.js的官方router，在Vue-ui开发中必不可少的一部分。
话不多说，直接上码：

第一步：肯定是导入Vue包的，然后分别导入VueRouter以及需要跳转的组件的路径。
第二步：由于默认的hash为’/’，我们通过重定向为‘/login’。然后再通过hash,追踪到指定的组件。

...]]></description><category></category></item><item><title><![CDATA[CSS四大清除浮动方法]]></title><link>https://blog.youkuaiyun.com/lkrdmm/article/details/108527198</link><guid>https://blog.youkuaiyun.com/lkrdmm/article/details/108527198</guid><author>lkrdmm</author><pubDate>Fri, 11 Sep 2020 09:15:01 +0800</pubDate><description><![CDATA[方法一：额外标签法（隔墙法）
在父亲盒子中新增一个盒子，并且在style标签中给新盒子写上"clear:both;"，即可。

  .clear {
            clear: both;
        } 

方法二：父级overflow:hidden
只需要在父亲盒子中加入一段代码"overflow: hidden;"，即可。
下面展示一些 `内联代码片`。

.box {
            overflow: hidden;
            width: 800px;
   ]]></description><category></category></item></channel></rss>