<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[beeliang]]></title><description><![CDATA[褪去身上的枷锁 今日方只我是我]]></description><link>https://blog.youkuaiyun.com/L_SERAFINA</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; L_SERAFINA]]></copyright><item><title><![CDATA[【无标题】后台管理系统-个人中心]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/125015955</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/125015955</guid><author>L_SERAFINA</author><pubDate>Sat, 28 May 2022 11:07:40 +0800</pubDate><description><![CDATA[个人中心

一、获取用户信息
1.初始化路由模块


const express = require('express')
const router  = express.Router()
// 验证数据的中间件
const expressjoi = require('@escook/express-joi')
// 导入验证规则
const {update_userinfo_schema,update_password_schema,update_avatar_schema} = require('../]]></description><category></category></item><item><title><![CDATA[后台管理项目]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/125015473</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/125015473</guid><author>L_SERAFINA</author><pubDate>Sat, 28 May 2022 10:37:55 +0800</pubDate><description><![CDATA[一、创建项目
1.初始化包管理配置文件：


npm init -y


2.安装espress


npm i express@4.17.1


3.创建app.js作为整个项目的入口文件，导入需要的模块，并启动3007端口


// 导入 express 模块
const express = require('express') 
// 创建 express 的服务器实例 
const app = express() 

// 调用 app.listen 方法，指定端口号并启动web服务器 app.li]]></description><category></category></item><item><title><![CDATA[经常遇见的面试题]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124999896</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124999896</guid><author>L_SERAFINA</author><pubDate>Fri, 27 May 2022 10:57:25 +0800</pubDate><description><![CDATA[1.下述有关css属性position的属性值的描述，说法错误的是?(b )
A.static:没有定位，元素出现在正常的流中

B.fixed:生成绝对定位的元素，相对于父元素进行定位

C.relative:生成相对定位的元素，相对于元素本身正常位置进行定位。

D.absolute:生成绝对定位的元素，相对于 static定位以外的第一个祖先元素进行定位。、

2.下面有关浏览器中使用is跨域获取数据的描述，说法错误的是? (a)

A.域名、端口相同，协议不同，属于相同的域
B.js可以使用json]]></description><category></category></item><item><title><![CDATA[VUE项目--卖座app]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124999597</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124999597</guid><author>L_SERAFINA</author><pubDate>Fri, 27 May 2022 10:52:45 +0800</pubDate><description><![CDATA[一.由于做移动端，所以先根据设计稿设置好设置rem

二、做轮播图
2.使用swiper引入轮播图
1）现在flims文件下自定义film-swiper组件，来显示大轮播，注意加上key值，不然会加载过早。
2）自定义一个film-swiper-item组件包裹着轮播数据


&lt;film-swiper :key="datalist.length"&gt;
      &lt;film-swiper-item v-for="data in datalist" :key="data.filmId"
 cl]]></description><category></category></item><item><title><![CDATA[vue2基础]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124414260</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124414260</guid><author>L_SERAFINA</author><pubDate>Mon, 25 Apr 2022 20:59:23 +0800</pubDate><description><![CDATA[1.引入vue（练习使用，没有使用cli脚手架创建环境）
&lt;script src="js/vue.js"&gt;&lt;/script&gt;

2.底层实现原理
vue拦截原理：在object.defindPropety拦截 里面当你调用了一个对象的值会被get监听到，修改一对象值，会被set所监听到

每次数据更改都有一个setter拦截通知watcher进行触发和更新，watcher观察者收集了很多相关的依赖和发布者和订阅者，触发订阅者进行一个调用

3.动态绑定：


&lt;div :cla]]></description><category></category></item><item><title><![CDATA[javascript垃圾回收机制原理：]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124414190</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124414190</guid><author>L_SERAFINA</author><pubDate>Mon, 25 Apr 2022 20:54:11 +0800</pubDate><description><![CDATA[javascript垃圾回收机制原理：

解决内存的泄露，垃圾回收机制会定期（周期性）找出那些不再用到的内存（变量），然后释放其内存。

通常采用的垃圾回收机制有两种方法：标记清除，引用计数。
标记清除：js中最常用的垃圾回收方式就是标记清除。当变量进入环境时，例如，在一个函数中声明一个变量，就将这个变量标记为"进入环境"，从逻辑上讲，永远不能释放进入环境变量所占用的内存，因为只要执行流进入相应的环境，就可能会用到它们。而当变量离开环境时，则将其标记为"离开环境"。

引用计数：语言引擎有一张"引用表"，保]]></description><category></category></item><item><title><![CDATA[es6知识]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124344943</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124344943</guid><author>L_SERAFINA</author><pubDate>Fri, 22 Apr 2022 14:24:11 +0800</pubDate><description><![CDATA[1.let
1.在大括号中，才有let是块级作用域 ：防止循环变量变成全局变量
2.不存在变量提升 就是不会预解析
3.会存在暂时死区性 就是在外部定义var num，在funtion也存在let，这个let num会让区域绑定，不访问外部的num

2.const
1、具有块级作用域
const只在自己的{}内有效 不会影响其他的作用域
2.使用const设置常量一定要初始值
3.常量就是值（内存地址）不能变化的值
注意：复杂数据类型例如是数组:
const =[123，abc];arr[0]=321;
]]></description><category></category></item><item><title><![CDATA[正则表达式]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124317869</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124317869</guid><author>L_SERAFINA</author><pubDate>Thu, 21 Apr 2022 11:44:28 +0800</pubDate><description><![CDATA[一、正则表达式 （一种对象）
含义：是用于匹配字符串中字符组合一种模式
作用：
1.可以匹配要求的字符串
2.可以过滤敏感词
3.可以在字符串中提取我们想要的关键字
特点 ：灵活性强，逻辑能力高；可以极简单地达到字符串的控制

二、创建正则表达式
1.通过RegExp对象构造函数创建
var 变量名 = new RegExp（/表达式/）；

2.通过字面量来创建
var 变量名 = /表达式/

三、检测是否是正确的正则表达 test方法
regexp.test(str)
前面的regexp是正则变量..]]></description><category></category></item><item><title><![CDATA[函数的进阶]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124298114</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124298114</guid><author>L_SERAFINA</author><pubDate>Wed, 20 Apr 2022 15:03:58 +0800</pubDate><description><![CDATA[一、this的指向
1.普通函数 ：function fn（）{}
fn（）；
this指向window

2.对象的方法 ：var o ={ sayhai：function（）{}}
o.sathai；
this指向对象o

3.构造函数 ：function Start（）{}
new Star（）；
this指向实例对象

4.绑定事件 btn.onclick = function(){}
点击调用
this指向绑定按钮

5.定时器：setinterval（function（）{}，1000）
每个1]]></description><category></category></item><item><title><![CDATA[复盘面试题]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124293665</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124293665</guid><author>L_SERAFINA</author><pubDate>Wed, 20 Apr 2022 11:38:47 +0800</pubDate><description><![CDATA[‘5’+3和‘5’-3 输出多少

console.log('5'+3);//字符串拼接数字 就是53
console.log('5'-3);//使用了减法，就是默认有个隐式转换，把字符串五变成number型


2.下面输出是什么


 var val = 'hello';
console.log('Value is'+(val ==='hello')?'something':'Nothing');
//something



var ary =[0,1,2];
 ary[10] = 10
consol]]></description><category></category></item><item><title><![CDATA[js的轮播图]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124274990</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124274990</guid><author>L_SERAFINA</author><pubDate>Tue, 19 Apr 2022 15:26:55 +0800</pubDate><description><![CDATA[实现自动轮播、左右按钮切换上下一张图片、点击小圆点切换图片
效果图：

1.前期html和css布局


&lt;div class="main"&gt;
      &lt;div class="focu"&gt;
        &lt;!-- 左侧按钮 --&gt;
        &lt;a href="javascript:;" class="arrow-l"&gt;
             &lt;
        &lt;/a&gt;
        &lt;!-- 右侧按钮 --&gt..]]></description><category></category></item><item><title><![CDATA[移动端]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124272654</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124272654</guid><author>L_SERAFINA</author><pubDate>Tue, 19 Apr 2022 14:16:34 +0800</pubDate><description><![CDATA[1.触屏事件
touchstart 手指碰到Dom元素时触发
touchmove 手指在一个dom上滑动触发
touchend手指放开之后触发

2.触摸事件对象touchEvent
touches 正在触摸屏幕的所有手指的一个集合 （摸屏幕）
targetTouches正在触摸当前的Dom元素上的手指的一个列表（摸列表）
targetTouches【0】获取第一个手指触摸的信息
changedTouches 手指列表发生的变化，从有到无，从无到有
因为手指移动也会触发滚动屏幕所以这里要阻止默认的屏幕滚动
]]></description><category></category></item><item><title><![CDATA[小知识]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124261982</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124261982</guid><author>L_SERAFINA</author><pubDate>Mon, 18 Apr 2022 22:54:57 +0800</pubDate><description><![CDATA[定时器
setTimeout()
window.setTimeout(调用函数，【延迟毫秒数】)；一次性的
注意：
window在调用时候可省略
延时函数单位是毫秒，可以省略，如果省略就是0；
调用函数可以写函数名
页面中可能有很多定时器，我们可以给定时器加标志符（名字）
setTIimeout 也被称之为回调函数；需要等待时间，时间到了就调用；时间到了才执行function

2.setInterval（回调函数，【j间隔时间】）；（可以反复调用，时间到了就做）

3.清除定时器
1.window.cle]]></description><category></category></item><item><title><![CDATA[js杂七杂八的知识复习]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124225571</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124225571</guid><author>L_SERAFINA</author><pubDate>Sun, 17 Apr 2022 10:08:26 +0800</pubDate><description><![CDATA[1.API ：预先定义的函数；给开发者提供的工具，以便轻松实现自己需要的功能。
web API：是浏览器提供操作浏览器功能和页面元素的API（bom和dom）

2.DOM
文本对象模型，就是一个接口，用来处理可拓展的标记语言
1.文档：一个页面就是一个文档，DOM中使用document来表示
2.元素：页面的所有标签都是元素，用element表示
3.节点：页面中所有内容都是节点（标签、属性、文本、注释），DOM中用node表示
DOM把以上看做对象

3.DOM获取元素：
getElementByid（]]></description><category></category></item><item><title><![CDATA[内置对象]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124202453</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124202453</guid><author>L_SERAFINA</author><pubDate>Fri, 15 Apr 2022 19:46:22 +0800</pubDate><description><![CDATA[1.js当中对象分为3大类：自定义对象、内置对象、浏览器对象；
自定义对象和内置对象是js的基础内容，属于ecmascript；
浏览器对象属于js特有的

2.2.内置对象：js语言自带的一些对象，提供了一些简单或者是基本的必要功能（属性和方法）
特定：方便快速开发；
js提供多个内置对象：math、data、array、string等等

3.查文档：mdn/w3c查询内置对象

4.math
Math数学对象，不是一个构造函数，所以不需要使用new来调用，直接使用里面的属性和方法就可以了


  co]]></description><category></category></item><item><title><![CDATA[数组的小知识]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124188218</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124188218</guid><author>L_SERAFINA</author><pubDate>Fri, 15 Apr 2022 10:00:05 +0800</pubDate><description><![CDATA[创建数组的两个方法：
1.使用new Array创建新数组


var arr= new Array（）；


2.常用的是使用字面量创建数组


var arr = [ ];


3.获取数组元素
索引：数组的下标；数组从0开始的，
索引方法：数组名【索引号】


console.log(arr[1])


4.数组的新增
通过修改length长度来新增数组长度；length是可读写；


  var arr=['red','blue','yellow','black'];
        arr.len]]></description><category></category></item><item><title><![CDATA[对象创建的三种方法]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124171075</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124171075</guid><author>L_SERAFINA</author><pubDate>Thu, 14 Apr 2022 14:24:53 +0800</pubDate><description><![CDATA[1.简单说，对象就是一组“键值对”（key-value）的集合，是一种无序的复合数据集合。

2.创建对象三种方法：

利用字面量创建对象{}；

var obj={}/* 创建了个空对象 */
        var obj = {
            uname:'nima',
            age : 19,
            sex : '男'，
            sayhai9 :function name(params) {
                consol]]></description><category></category></item><item><title><![CDATA[javascript作用域：]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124165472</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124165472</guid><author>L_SERAFINA</author><pubDate>Thu, 14 Apr 2022 10:17:50 +0800</pubDate><description><![CDATA[作用域就是一个独立的地盘，让变量不会外泄、暴露出去。也就是说作用域最大的用处就是隔离变量，不同作用域下同名变量不会有冲突。

2..js的作用域：（以下讲的都是es6之前 没有块级作用域）：全局作用域 局部作用域
全局作用域：整个script或者是整个 js文件内生效的
注意：
1.如果是函数内部直接赋值，而没有声明的变量也称作为全局变量；
2.全局变量只有浏览器关闭的时候才会被销毁，比较占内存空间
局部作用域（函数作用域）：在函数内部的就是局部作用
域，这个代码名称只有在这个函数内起效果；
注意：
1.函]]></description><category></category></item><item><title><![CDATA[js的数据类型]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124149224</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124149224</guid><author>L_SERAFINA</author><pubDate>Wed, 13 Apr 2022 15:26:57 +0800</pubDate><description><![CDATA[基本数据类型
String、Number、Boolean、null、undefind、Symbol、BigInt
基本数据类型存储在栈内存中的，因为基础的数据类型占用空间比较小，大小值是固定的，通过值来访问，属于被频繁使用的数据
注意：Symbol和BigInt是ES6引入的新的数据类型

引用数据类型（复杂数据类型）
Object、Date、Function、Array等等
引用的数据类型存储在堆内存中，因为引用的数据类型占空间比较大，占用内存大小也不固定。如果存储在栈中，则会影响到程序运行的性能，引用数]]></description><category></category></item><item><title><![CDATA[animation]]></title><link>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124142600</link><guid>https://blog.youkuaiyun.com/L_SERAFINA/article/details/124142600</guid><author>L_SERAFINA</author><pubDate>Wed, 13 Apr 2022 10:41:04 +0800</pubDate><description><![CDATA[1.animation和transition
相同点：随着时间改变元素的值
不同点：transition需要事件触发才会改变其的css属性；而animation不需要触发事件。

2.动画帧：


animation: comby 1s linear 1s infinite;


分别对应：动画的id ，执行的时间，执行的速度，延迟的时间，执行的次数，infinite为无限次执行

设置两种动画设置：
第一种：


@keyframes bee{   /*后面随便设置的id  */
            ]]></description><category></category></item></channel></rss>