<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chenxiaodage的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chenxiaodage</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenxiaodage]]></copyright><item><title><![CDATA[client，offest，scorll的区别]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/113388724</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/113388724</guid><author>chenxiaodage</author><pubDate>Fri, 29 Jan 2021 15:02:12 +0800</pubDate><description><![CDATA[client：元素可视宽高：content+padding
offest:元素占位宽高：content+padding+border
scorlltop，scorllleft:元素被卷曲的宽高
scorllwidth，scorllheight：元素宽高

]]></description><category></category></item><item><title><![CDATA[js数组方法和字符串方法，数学方法总结]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/113385630</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/113385630</guid><author>chenxiaodage</author><pubDate>Fri, 29 Jan 2021 14:42:24 +0800</pubDate><description><![CDATA[数组方法：
push()后面添加
pop()后面删除
unshift()前面添加
shift()前面删除
sort()排序
jion()将数组变成字符串，可以在每一个字符中间添加连接符，原数组不变
reverse()翻转数组
concat()合并数组
slice()返回数组指定下标和结束下标的新数组
splice()可以实现删除，插入和替换
删除：要删除的下标位置和数量
插入：起始位置，数量(0)，要插入的项
替换：起始位置，数量，插入项
indexof：从左到右查找，要查找的项，下标
lastindexo]]></description><category></category></item><item><title><![CDATA[iframe的作用]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/113373112</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/113373112</guid><author>chenxiaodage</author><pubDate>Fri, 29 Jan 2021 11:01:38 +0800</pubDate><description><![CDATA[iframe标签可以创建一个新的框架，通过这个框架可以在同一个浏览器窗口显示不止一个页面

]]></description><category></category></item><item><title><![CDATA[eval的功能和缺点]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/113367830</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/113367830</guid><author>chenxiaodage</author><pubDate>Fri, 29 Jan 2021 10:04:20 +0800</pubDate><description><![CDATA[eval的功能是将对应的字符串解析成js代码
缺点是不安全，消耗性能
有json字符串转换成json对象的时候可以用eval，
var obj = eval('('+str+')')


]]></description><category></category></item><item><title><![CDATA[hash模式和history模式]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/113337745</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/113337745</guid><author>chenxiaodage</author><pubDate>Thu, 28 Jan 2021 14:33:08 +0800</pubDate><description><![CDATA[hash模式，浏览器会自带#，#后面的字符都是hash，hash虽然在url中，但不会在http请求中，对服务器安全性没有影响，hash不会重新加载页面。
history模式，可以浏览历史栈，也可以修改（pushState（），replaceState（）），可以监听状态变更（popState）

...]]></description><category></category></item><item><title><![CDATA[前端性能优化]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/113311063</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/113311063</guid><author>chenxiaodage</author><pubDate>Thu, 28 Jan 2021 10:51:51 +0800</pubDate><description><![CDATA[避免使用css表达式，避免使用高级选择器
精灵图
懒加载
少用全局变量
使用settimeout避免页面失去响应
避免写在html标签中的style属性

]]></description><category></category></item><item><title><![CDATA[js数组转对象]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/111313093</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/111313093</guid><author>chenxiaodage</author><pubDate>Thu, 17 Dec 2020 13:17:34 +0800</pubDate><description><![CDATA[let arr = [
{name:"hhh",tit:"哈哈哈"},
{name:"eee",tit:"呵呵呵"},
]
let obj = {}
arr.forEach((item)=&gt;{
obj[item.name] = item.tit
})
console.log(obj)
/*
obj--{hhh:"哈哈哈",eee:"呵呵呵"}
*/



]]></description><category></category></item><item><title><![CDATA[基本数据类型和引用数据类型]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109459998</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109459998</guid><author>chenxiaodage</author><pubDate>Mon, 02 Nov 2020 23:23:19 +0800</pubDate><description><![CDATA[ECMAScript包括两个不同类型的值：基本数据类型和引用数据类型。

基本数据类型指的是简单的数据段，引用数据类型指的是有多个值构成的对象。
　　当我们把变量赋值给一个变量时，解析器首先要确认的就是这个值是基本类型值还是引用类型值。
　　基本数据类型：
　　number，string，boolean，null，undefined
　　引用数据类型：
object、array、function、data，math，regexp等

...]]></description><category></category></item><item><title><![CDATA[js递归、循环、迭代、遍历和枚举区别和js的遍历方法]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109459128</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109459128</guid><author>chenxiaodage</author><pubDate>Mon, 02 Nov 2020 23:08:46 +0800</pubDate><description><![CDATA[递归、循环、迭代、遍历和枚举
递归：一个函数不断调用自身的行为
循环：指的是在满足条件的情况下，重复执行同一段代码。一般语言都会有三种类型的循环语句:for语句、while语句和do While语句
迭代：按照某种顺序逐个访问列表中的每一项
遍历：树形结构的一种重要运算，指的是按照一定的规则访问树形结构中的每个节点，而且每个节点都只访问一次。
枚举：在数学和计算机科学理论中，一个集的枚举是列出某些有穷序列集的所有成员的程序，或者是一种特定类型对象的计数。这两种类型经常（但不总是）重叠。枚举是一个被命名的整型]]></description><category></category></item><item><title><![CDATA[uni-app封装数据请求]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109440583</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109440583</guid><author>chenxiaodage</author><pubDate>Sun, 01 Nov 2020 23:19:06 +0800</pubDate><description><![CDATA[新建utils文件
utils/config.js
let  baseUrl = null; 
if(process.env.NODE_ENV === "development"){
	//开发环境
	baseUrl="http://localhost:3000"
}else{
	baseUrl = "https://api.zhaowei.shop"
}
export default baseUrl;

utils/http.js
import baseUrl from './config.js'
con]]></description><category></category></item><item><title><![CDATA[ajax封装]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109440077</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109440077</guid><author>chenxiaodage</author><pubDate>Sun, 01 Nov 2020 22:45:03 +0800</pubDate><description><![CDATA[//    ajax封装
    function ajax(json){
        json.type = json.type ? json.type : 'get';
        
        json.async = json.async == false ? false : true;
        
        json.contentType = json.contentType ? json.contentType : 'application/x-www-form-url]]></description><category></category></item><item><title><![CDATA[css重置浏览器标签样式表]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109384360</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109384360</guid><author>chenxiaodage</author><pubDate>Fri, 30 Oct 2020 14:18:54 +0800</pubDate><description><![CDATA[body,p,h1,h2,h3,h4,h5,h6,ul,ol,dl,dd{
margin: 0;
}
ul,li{
list-style: none;
}
ul,ol,input{
padding: 0;
}
em,i{
font-style: normal;
}
strong,b{
font-weight: normal;
}
a{
color: #333;
text-decoration: none;

}
img{
vertical-align: top;
}
input{
border: 1px s]]></description><category></category></item><item><title><![CDATA[vue的计算属性 computed， computed和watch的区别]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109373489</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109373489</guid><author>chenxiaodage</author><pubDate>Thu, 29 Oct 2020 22:56:36 +0800</pubDate><description><![CDATA[计算属性
计算属性就是当其依赖属性的值发生变化时，这个属性的值会自动更新，与之相关的DOM部分也会同步自动更新。通常被用在购物车计算总价上面
computed和watch的区别
watch是监听属性，监听data或者watch里面的数据变化，根据当前不同值的情况，做出不同的处理。

&lt;script&gt;
    export default {
        name: "JobDataUpdate",
        data(){
            return {
          ]]></description><category></category></item><item><title><![CDATA[vue的组件通信]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109373130</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109373130</guid><author>chenxiaodage</author><pubDate>Thu, 29 Oct 2020 22:44:30 +0800</pubDate><description><![CDATA[父组件与子组件传值
父组件传给子组件：子组件通过props方法接受数据;
//父组件
&lt;子组件  属性1="值" 属性2="值"&gt;&lt;/子组件&gt;
&lt;子组件  ：属性="变量"&gt;&lt;/子组件&gt;

{{属性1}}
&lt;li v-for="item in 属性1"&gt;&lt;/li&gt;
&lt;script&gt;
   export default {
     props:['属性1'，'属性2']
   }
&lt;/script&gt;

注意：vu]]></description><category></category></item><item><title><![CDATA[Vue-loader]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109373045</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109373045</guid><author>chenxiaodage</author><pubDate>Thu, 29 Oct 2020 22:33:40 +0800</pubDate><description><![CDATA[vue-loader就是一个加载器，把Vue编译javaScript的模块，方便浏览器读文件。
为什么要转译vue组件

动态的渲染一些数据
对三个标签（template、script、style）都做了优化script中可以直接使用es6 style 也默认使用sass，
提供作用域的选择
开发阶段提供热加载


...]]></description><category></category></item><item><title><![CDATA[vue导航的钩子有哪些]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109372945</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109372945</guid><author>chenxiaodage</author><pubDate>Thu, 29 Oct 2020 22:31:20 +0800</pubDate><description><![CDATA[导航钩子就是路由的生命周期函数，主要包括全局和局部。
全局钩子函数
beforeEach：路由切换开始调用，类似路由守卫
router.beforeEach((to,from,next)=&gt;{
//to:即将进入目标对象
//form:当前导航要离开的导航对象
//next:是一个函数，调用resolve
})

对于登录的设置案例：
router.beforeEach((to, from, next) =&gt; {
  if (to.name !== 'Login' &amp;&amp; !isA]]></description><category></category></item><item><title><![CDATA[前端模块化]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109372870</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109372870</guid><author>chenxiaodage</author><pubDate>Thu, 29 Oct 2020 22:28:41 +0800</pubDate><description><![CDATA[一个模块就是实现特定功能的文件，有了模块，我们就可以更方便地使用别人的代码，想要什么功能，就加载什么模块。模块开发需要遵循一定的规范，各行其是就都乱套了

]]></description><category></category></item><item><title><![CDATA[前端使用框架与不使用框架的区别、优缺点]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109372015</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109372015</guid><author>chenxiaodage</author><pubDate>Thu, 29 Oct 2020 22:18:40 +0800</pubDate><description><![CDATA[前端实际上就是html，css，js，而前端框架也是基于三者进行封装的。
不使用框架开发，使用原生开发或者jquery开发，开发者需要一步一步搭建，对于开发者来说这样开发对自己的代码也更熟悉
使用框架的优点：
用户体验会更好
开发效率高，成本降低
使用框架的缺点：
代码臃肿，使用者使用框架的时候会将整个框架引入，而框架封装了很多功能和组件，使用者必须按照它的规则使用，而实际开发中很多功能和组件是用不到的。
前端框架迭代更新太快，需要时间熟悉

...]]></description><category></category></item><item><title><![CDATA[构造函数，es6的class类，new操作符]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109370230</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109370230</guid><author>chenxiaodage</author><pubDate>Thu, 29 Oct 2020 21:19:23 +0800</pubDate><description><![CDATA[构造函数和普通函数的创建方式一样，但是构造函数习惯首字母大写。
构造函数与普通函数的区别：调用方式不一样
普通函数：函数名()
构造函数：new 函数名()
new操作符干了什么：
创建了一个空对象，this变量引用该对象，并且继承该对象的原型。
将属性和方法加入到引用对象中
新创建的对象由this引用，并且隐式返回this
//函数名和实例化构造名相同且大写（非强制，但这么写有助于区分构造函数和普通函数）
function Person(name,age) {
    this.name = name;
]]></description><category></category></item><item><title><![CDATA[axios的安装与使用]]></title><link>https://blog.youkuaiyun.com/chenxiaodage/article/details/109265270</link><guid>https://blog.youkuaiyun.com/chenxiaodage/article/details/109265270</guid><author>chenxiaodage</author><pubDate>Sat, 24 Oct 2020 20:38:45 +0800</pubDate><description><![CDATA[地址：http://www.axios-js.com
含义：易用、简洁且高效的（基于promise）http库  （一个封装好的http插件）
特点：
支持node端和浏览器端
支持promise
丰富的配置项
全局安装axios
npm/cnpm  install  axios  -S
import axios from axios  //每个组件里单独引入
常用的方法
get方法：
&lt;template&gt;
    &lt;div&gt;
       &lt;li v-for="item in]]></description><category></category></item></channel></rss>