<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LittlePoem的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LittlePoem</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LittlePoem]]></copyright><item><title><![CDATA[width 与 height]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/120408973</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/120408973</guid><author>LittlePoem</author><pubDate>Wed, 22 Sep 2021 10:32:45 +0800</pubDate><description><![CDATA[width




值
描述




auto
默认值。浏览器可计算出实际的宽度。


length
使用 px、cm 等单位定义宽度。


%
定义基于包含块（父元素）宽度的百分比宽度。


inherit
规定应该从父元素继承 width 属性的值。


height




值
描述




auto
默认。浏览器会计算出实际的高度。


length
使用 px、cm 等单位定义高度。


%
基于包含它的块级对象的百分比高度。


inherit
规定应该从父元素继承 height 属性的值。

]]></description><category></category></item><item><title><![CDATA[HTML简答]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/120362329</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/120362329</guid><author>LittlePoem</author><pubDate>Sat, 18 Sep 2021 10:40:46 +0800</pubDate><description><![CDATA[什么是 HTML
HTML 是用来描述网页的一种语言。

HTML 指的是超文本标记语言 (Hyper Text Markup Language)
HTML 不是一种编程语言，而是一种标记语言 (markup - language)
标记语言是一套标记标签 (markup tag)
HTML 使用标记标签来描述网页

HTML 标签
HTML 标记标签通常被称为 HTML 标签 (HTML tag)。

HTML 标签是由尖括号包围的关键词，比如 &lt;html&gt;
HTML 标签通常是成对出现的，比]]></description><category></category></item><item><title><![CDATA[JS 中的 import 与 export]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/120265798</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/120265798</guid><author>LittlePoem</author><pubDate>Mon, 13 Sep 2021 15:58:29 +0800</pubDate><description><![CDATA[模块
模块就是实现特定功能的一组方法。

理想情况下，开发者只需要实现核心的业务逻辑，其他都可以加载别人已经写好的模块。但是，JavaScript 不是一种模块化编程语言，在 ES6 以前，它是不支持类，所以也就没有模块了。
JavaScript 社区做了很多努力，在现有的运行环境中，实现”模块”的效果。

原始写法
只要把不同的函数（以及记录状态的变量）简单地放在一起，就算是一个模块。
function f1(){
　//...
}
function f2(){
　//...　　
}

上面的函数 f1(]]></description><category></category></item><item><title><![CDATA[行内元素与块级元素]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/119733760</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/119733760</guid><author>LittlePoem</author><pubDate>Sun, 22 Aug 2021 17:54:40 +0800</pubDate><description><![CDATA[行内元素与块级元素对比
内容
一般情况下，行内元素只能包含数据和其他行内元素。
而块级元素可以包含行内元素和其他块级元素。这种结构上的包含继承区别可以使块级元素创建比行内元素更”大型“的结构。
格式
默认情况下，行内元素不会以新行开始，而块级元素会新起一行。
块级元素没有设置宽高
宽：父元素的宽
高：子元素的高（没有子元素则为0）

...]]></description><category></category></item><item><title><![CDATA[深拷贝和浅拷贝的实现]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/119732887</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/119732887</guid><author>LittlePoem</author><pubDate>Tue, 17 Aug 2021 11:02:17 +0800</pubDate><description><![CDATA[1

]]></description><category></category></item><item><title><![CDATA[关于闭包的理解]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/119749246</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/119749246</guid><author>LittlePoem</author><pubDate>Tue, 17 Aug 2021 09:59:38 +0800</pubDate><description><![CDATA[闭包函数：声明在一个函数中的函数，叫做闭包函数。
闭包：内部函数总是可以访问其所在的外部函数中声明的参数和变量，即使在其外部函数被返回（寿命终结）了之后。
特点：


让外部访问函数内部变量成为可能；


局部变量会常驻在内存中；


可以避免使用全局变量，防止全局变量污染；


会造成内存泄漏（有一块内存空间被长期占用，而不被释放）


闭包就是可以创建一个独立的环境，每个闭包里面的环境都是独立的，互不干扰。闭包会发生内存泄漏，每次外部函数执行的时 候，外部函数的引用地址不同，都会重新创建一个新的地址。但]]></description><category></category></item><item><title><![CDATA[vue中key的作用]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/119726477</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/119726477</guid><author>LittlePoem</author><pubDate>Tue, 17 Aug 2021 09:40:17 +0800</pubDate><description><![CDATA[在 v-if 中
Vue为你提供了一种方式来表达这两个元素是完全独立的，不要复用它们。只需添加一个具有唯一值的 key 属性即可
&lt;!-- 例如，如果你允许用户在不同的登录方式之间切换，下面的代码中切换 type 将不会清除用户已经输入的内容。因为两个模板使用了相同的元素，span标签不会被替换掉，仅仅是替换了它的 placeholder`。 --&gt;
&lt;template v-if="type == 'username'"&gt;
  &lt;label&gt;Username&lt;/la]]></description><category></category></item><item><title><![CDATA[v-for 和 v-if 的优先级]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/119726345</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/119726345</guid><author>LittlePoem</author><pubDate>Mon, 16 Aug 2021 14:49:54 +0800</pubDate><description><![CDATA[在vue2中
v-for 的优先级更高，如果同时出现在同级每次渲染都会先执行循环再判断条件，由此可见对性能损耗比较大，可使用计算属性先筛选需要的数据
在vue3中
v-if 的优先级更高，因为 v-if 优先级高了，这意味着 v-if 将没有权限访问 v-for 里的变量，抛出错误
兼容性问题详见：vue官网描述

...]]></description><category></category></item><item><title><![CDATA[CSS两种盒子模型]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/119241401</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/119241401</guid><author>LittlePoem</author><pubDate>Wed, 04 Aug 2021 23:17:10 +0800</pubDate><description><![CDATA[1

]]></description><category></category></item><item><title><![CDATA[处理异步编程]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/119136269</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/119136269</guid><author>LittlePoem</author><pubDate>Fri, 30 Jul 2021 11:41:33 +0800</pubDate><description><![CDATA[1. 回调函数
// 异步请求
ajax(url, () =&gt; {
    // 请求返回后的逻辑处理
})

// 读取文件
fs.readFile('/etc/shells', function (err, data) {
    // 文件读取完毕后的操作
    console.log(data);
});

优点：简单、容易理解和部署
缺点：回调地狱，不利于代码的阅读和维护，各个部分之间高度耦合，流程会很混乱，而且每个任务只能指定一个回调函数
2. 事件监听
采用事件驱动模式。任务的执行不取]]></description><category></category></item><item><title><![CDATA[函数防抖与函数节流]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/118722446</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/118722446</guid><author>LittlePoem</author><pubDate>Wed, 14 Jul 2021 11:46:24 +0800</pubDate><description><![CDATA[函数防抖
函数防抖（debounce），就是指触发事件后，在 n 秒内函数只能执行一次，如果触发事件后在 n 秒内又触发了事件，则会重新计算函数延执行时间。
举个栗子：

搜索框输入完实时请求搜索
用户名、手机号、邮箱等输入验证
浏览器窗口大小改变后，窗口调整完后，再执行 resize 事件中的代码，防止重复渲染

function debounce(fn, wait) {
    let timer = null;
    return function () {
        if (timer !=]]></description><category></category></item><item><title><![CDATA[CSS实现垂直居中的常用方案]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/118705264</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/118705264</guid><author>LittlePoem</author><pubDate>Tue, 13 Jul 2021 17:49:45 +0800</pubDate><description><![CDATA[&lt;div class="box"&gt;
	&lt;div class="content"&gt;&lt;/div&gt;
&lt;/div&gt;


flex弹性布局

&lt;style&gt;
.box {
    width: 300px;
    height: 300px;
    background-color: orange;
    display: flex;
    align-items: center;
}
.content {
    background-color:]]></description><category></category></item><item><title><![CDATA[LHS查询和RHS查询]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/118027306</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/118027306</guid><author>LittlePoem</author><pubDate>Fri, 18 Jun 2021 16:27:00 +0800</pubDate><description><![CDATA[LHS

当变量出现在赋值操作的左侧时
试图找到变量容器本身
查找的目的是对变量进行赋值
不成功的LHS会导致自动隐式地创建一个全局变量(非严格模式)，或者抛出ReferenceError异常(严格模式)

a = 1
// 这里对a进行LHS查询，想要为赋值操作找到目标。

RHS

当变量出现在赋值操作的右侧时进行RHS查询
试图找到变量的值
查找的目的是获取变量
不成功的RHS会导致抛出ReferenceError异常

console.log(a)
//这里对a的进行RHS查询，因为a并没有赋予任何]]></description><category></category></item><item><title><![CDATA[JavaScript数组的常用方法]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/117993275</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/117993275</guid><author>LittlePoem</author><pubDate>Thu, 17 Jun 2021 15:17:37 +0800</pubDate><description><![CDATA[splice


splice() 方法向数组中添加项目或从数组中删除项目，然后返回被删除的项目，该方法会改变原始数组





参数
描述




index
必需。整数，规定添加/删除项目的位置，使用负数可从数组结尾处规定位置。


howmany
必需。要删除的项目数量。如果设置为 0，则不会删除项目。


item1, …, itemX
可选。向数组添加的新项目。


let arr = ['茨木', '妖刀', '酒吞', '阎魔']
// 向数组中新增元素
arr.splice(2, 0, '.]]></description><category></category></item><item><title><![CDATA[计算属性和侦听器]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/117664358</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/117664358</guid><author>LittlePoem</author><pubDate>Tue, 15 Jun 2021 11:43:01 +0800</pubDate><description><![CDATA[computed
不同
computed

computed是计算属性，也就是依赖某个值或者props通过计算得来得数据；
computed的值是在getter执行之后进行缓存的，只有在它依赖的数据发生变化，会重新调用getter来计算；
不支持异步，当computed内有异步操作时无效，无法监听数据的变化；

watch

watch是监听器，可以监听某一个数据，然后执行相应的操作；
不支持缓存，数据变直接会触发相应的操作；
监听的函数接收两个参数，第一个参数是最新的值；第二个参数是输入之前的值；
支持异]]></description><category></category></item><item><title><![CDATA[Vue组件之间传值]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/117771182</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/117771182</guid><author>LittlePoem</author><pubDate>Fri, 11 Jun 2021 16:18:41 +0800</pubDate><description><![CDATA[父传子
第一种方案

在父组件中引用子组件
在引入组件的地方绑定属性传递父组件数据
在子组件里使用props接收父组件数据

&lt;!-- 父组件 --&gt;
&lt;template&gt;
  &lt;div class="fu"&gt;
    &lt;zi :msg="msg" :other="other"&gt;&lt;/zi&gt;
  &lt;/div&gt;
&lt;/template&gt;

&lt;script&gt;
export default {
  data() {
   ]]></description><category></category></item><item><title><![CDATA[var let const的区别]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/117550887</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/117550887</guid><author>LittlePoem</author><pubDate>Mon, 07 Jun 2021 11:37:23 +0800</pubDate><description><![CDATA[相同
都可以用来声明变量
不同

var是ES5提出的，let和const是ES6提出的。
var声明的变量存在变量提升，变量可以在声明之前调用，值为undefined。let和const不存在变量提升，它们声明的变量一定要在声明后使用，否则报错（ReferenceError）

console.log(a) //undefined
var a = 1 ;
console.log(b) //ReferenceError: b is not defined
let b = 2;
console.log(c) ]]></description><category></category></item><item><title><![CDATA[JS函数中 this 的指向问题]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/117528449</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/117528449</guid><author>LittlePoem</author><pubDate>Thu, 03 Jun 2021 17:31:00 +0800</pubDate><description><![CDATA[直接使用

function fn(data){
   console.log(data);
}
fn('hello') //hello
//fn('hello') 等同于 fn.call(window,'hello')，此时 this 指向 window


函数作为对象的方法被调用时，谁调用就指向谁

let someone = {
   name: '石昊',
   intro: function (age) {
       console.log(`${this.name}在${age}岁时就比.]]></description><category></category></item><item><title><![CDATA[Vue跨域问题的解决]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/117463518</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/117463518</guid><author>LittlePoem</author><pubDate>Wed, 02 Jun 2021 17:38:56 +0800</pubDate><description><![CDATA[出现跨域的原因
请求接口时，控制台提示：Access-Control-Allow-Origin，说明请求跨域了

为了安全考虑，一个源的脚本（网页，网站）不能与另一个源的资源进行交互，所以就引发一个词叫做“同源策略”。
同源策略：同源策略是一种约定，它是浏览器最核心的也最基本的安全功能，如果没有同源策略我们的浏览器将会十分的不安全，随时都可能受到攻击。
同源：所谓同源（即指在同一个域），就是两个页面具有相同的协议（protocol）,主机（host）和端口号（port）
当协议，主机，和端口号有一个不同时，]]></description><category></category></item><item><title><![CDATA[浏览器内核简介]]></title><link>https://blog.youkuaiyun.com/LittlePoem/article/details/117461167</link><guid>https://blog.youkuaiyun.com/LittlePoem/article/details/117461167</guid><author>LittlePoem</author><pubDate>Wed, 02 Jun 2021 10:59:04 +0800</pubDate><description><![CDATA[常用浏览器及其内核

浏览器的内核是分为两个部分的，渲染引擎和 JS 引擎。它负责取得网页的内容（HTML、XML、图像等等）、整理讯息（例如加入 CSS 等），以及计算网页的显示方式，然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同，所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。JS 引擎则是解析 Javascript 语言，执行 javascript 语言来实现网页的动态效果。现在JS引擎比较独立，内核更加倾向于说渲染引]]></description><category></category></item></channel></rss>