<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[WODE1102的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/WODE1102</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; WODE1102]]></copyright><item><title><![CDATA[scss之px单位转成vw单位]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487681</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487681</guid><author>WODE1102</author><pubDate>Thu, 22 Aug 2019 17:29:00 +0800</pubDate><description><![CDATA[@charset "UTF-8";

// px单位转成vw单位
@function px2vw($size: 14px, $width: 375px) {
  @if (type-of($size) == "number" and unit($size) == "px") {
    @return $size * 100vw / $width;
  } @else {...]]></description><category></category></item><item><title><![CDATA[验证数据是否不为空（空值时返回false，null、undefined、空字符串、空数组、空对象都被设定为空）...]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487682</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487682</guid><author>WODE1102</author><pubDate>Thu, 22 Aug 2019 15:04:00 +0800</pubDate><description><![CDATA[//验证数据是否不为空（空值时返回false，null、undefined、空字符串、空数组、空对象都被设定为空）export const isNotEmpty = value =&gt; {  switch (typeof value) {    case "undefined": {      return false;    }
    case "string": {     ...]]></description><category></category></item><item><title><![CDATA[将对象转换成params]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487679</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487679</guid><author>WODE1102</author><pubDate>Thu, 22 Aug 2019 14:59:00 +0800</pubDate><description><![CDATA[json2params(json, slice = '&amp;') {
return Object.keys(json)
.reduce((acc, item) =&gt; {
return String(acc) + item + '=' + json[item] + slice;
}, '')
.slice(0, -1);
}


转载于:https://www....]]></description><category></category></item><item><title><![CDATA[在线压缩html/css/js文件成一行]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487677</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487677</guid><author>WODE1102</author><pubDate>Wed, 21 Aug 2019 11:07:00 +0800</pubDate><description><![CDATA[压缩网站为：http://tool.oschina.net/jscompress/

转载于:https://www.cnblogs.com/aisiqi-love/p/11387542.html]]></description><category></category></item><item><title><![CDATA[截取字符串substring]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487680</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487680</guid><author>WODE1102</author><pubDate>Mon, 12 Aug 2019 15:20:00 +0800</pubDate><description><![CDATA[ShowBookName= (bookName) =&gt; {
if(bookName &amp;&amp; bookName.length &gt; 12) {
return bookName.substring(0, 6) + '...' + bookName.substring(bookName.length - 6);
} else {
return bookNam...]]></description><category></category></item><item><title><![CDATA[js利用对象属性唯一，数组去重]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487675</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487675</guid><author>WODE1102</author><pubDate>Mon, 12 Aug 2019 14:50:00 +0800</pubDate><description><![CDATA[list有重复的数组
let result = []; // 去重数组
let obj = {}; // 去重对象
for(let i = 0; i &lt; list.length; i++) {
if(!obj[list[i].item]) {
result.push(list[i].item);
obj[list[i].item] = i + 1;
}
}

转载于...]]></description><category></category></item><item><title><![CDATA[js中!和!!的区别及用法]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487678</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487678</guid><author>WODE1102</author><pubDate>Tue, 09 Apr 2019 10:38:00 +0800</pubDate><description><![CDATA[js中!的用法是比较灵活的，它除了做逻辑运算常常会用！做类型判断，可以用！与上对象来求得一个布尔值，1、！可将变量转换成boolean类型，null、undefined和空字符串取反都为false，其余都为true。
1 !null=true
2 
3 !undefined=true
4 
5 !''=true
6 
7 !100=false
8 
9 !'abc'=f...]]></description><category></category></item><item><title><![CDATA[JavaScript中的instanceof和typeof]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487672</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487672</guid><author>WODE1102</author><pubDate>Tue, 26 Mar 2019 09:59:00 +0800</pubDate><description><![CDATA[instanceof运算符用来检测constructor.prototype是否存在于参数object的原型链上。
// 定义构造函数
function C(){} 
function D(){} 

var o = new C();


o instanceof C; // true，因为 Object.getPrototypeOf(o) === C.prot...]]></description><category></category></item><item><title><![CDATA[原生js实现on emit]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487676</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487676</guid><author>WODE1102</author><pubDate>Mon, 25 Mar 2019 16:22:00 +0800</pubDate><description><![CDATA[let obj = {};
const $on = (name,fn)=&gt;{
    if(!obj[name]){
        obj[name] = [];
    }
    obj[name].push(fn);
}

const $emit = (name,val)=&gt;{
    if(obj[name]){
        obj[name...]]></description><category></category></item><item><title><![CDATA[前端JS转图片为base64并压缩]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487670</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487670</guid><author>WODE1102</author><pubDate>Sun, 24 Mar 2019 19:57:00 +0800</pubDate><description><![CDATA[addImg(event) {
var imgFile=event.target.files[0];
//判断类型是不是图片
if(!/image\/\w+/.test(imgFile.type)){
alert("请确保文件为图像类型");
return ;
}
//通过html5 特性fileReader转换base64 通过compressImg方法进行...]]></description><category></category></item><item><title><![CDATA[sass样式预处理]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487673</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487673</guid><author>WODE1102</author><pubDate>Thu, 14 Mar 2019 20:11:00 +0800</pubDate><description><![CDATA[$blue: #1e82d0;
$bc: #e4e4e4;
$fc:#fff;

// 背景图片地址和大小
@mixin bis($url) {
background-image: url($url);
background-repeat: no-repeat;
background-size: 100% 100%;
}

@mixin ...]]></description><category></category></item><item><title><![CDATA[angular和vue的双向绑定原理]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487668</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487668</guid><author>WODE1102</author><pubDate>Thu, 07 Mar 2019 13:14:00 +0800</pubDate><description><![CDATA[脏值检查:angular.js 是通过脏值检测的方式比对数据是否有变更，来决定是否更新视图，最简单的方式就是通过setInterval()定时轮询检测数据变动，当然Google不会这么low，angular只有在指定的事件触发时进入脏值检测，大致如下：


DOM事件，譬如用户输入文本，点击按钮等。( ng-click )


XHR响应事件 ( $http )

...]]></description><category></category></item><item><title><![CDATA[Angular5.x——组件通讯]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487671</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487671</guid><author>WODE1102</author><pubDate>Thu, 07 Mar 2019 12:28:00 +0800</pubDate><description><![CDATA[2 Angular组件间的通讯
 2.1 父子组件间的通讯
  2.1.1 父组件设置子组件属性
  2.1.2 父组件调用子组件事件
  2.1.3 子组件向父组件发射事件
 2.2 非父子组件通讯
  2.2.1 Service
  2.2.2 路由传值
   2.2.2.1 传递一个值
   2.2.2.2 ...]]></description><category></category></item><item><title><![CDATA[javascript中的Function和Object，及原型链]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487665</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487665</guid><author>WODE1102</author><pubDate>Thu, 28 Feb 2019 15:14:00 +0800</pubDate><description><![CDATA[写的很好，理解了很多，特此转发记录
转自：http://blog.youkuaiyun.com/tom_221x/archive/2010/02/22/5316675.aspx

在JavaScript中所有的对象都继承自Object原型，而Function又充当了对象的构造器，那么Funtion和Object到底有着什麽样的关系呢 ？

首先，一切都是对象。





...]]></description><category></category></item><item><title><![CDATA[渲染优化]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487669</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487669</guid><author>WODE1102</author><pubDate>Thu, 21 Feb 2019 16:46:00 +0800</pubDate><description><![CDATA[1.禁止使用iframe（阻塞父文档onload事件）；
        *iframe会阻塞主页面的Onload事件；
        *搜索引擎的检索程序无法解读这种页面，不利于SEO;
        *iframe和主页面共享连接池，而浏览器对相同域的连接有限制，所以会影响页面的并行加载。

        使用iframe之前需要考虑这两个缺点。如果需要使用i...]]></description><category></category></item><item><title><![CDATA[从输入URL到页面渲染完成（转）]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487664</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487664</guid><author>WODE1102</author><pubDate>Thu, 21 Feb 2019 14:58:00 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/allenliu6/article/details/70313492

转载于:https://www.cnblogs.com/aisiqi-love/p/10412587.html]]></description><category></category></item><item><title><![CDATA[前端面试笔记（整理）]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487666</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487666</guid><author>WODE1102</author><pubDate>Thu, 21 Feb 2019 11:34:00 +0800</pubDate><description><![CDATA[1.CSS的盒子模型
包含元素内容content、内边距padding、边框border、外边距marginbox-sizing:border-box;content-box;inherit;1)content-box:总宽度=margin+border+padding+width，即为标准模型；2)border-box:总宽度=margin+width，即为IE模型；3)inh...]]></description><category></category></item><item><title><![CDATA[这样“断舍离”，你会活得更高级]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487662</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487662</guid><author>WODE1102</author><pubDate>Mon, 28 Jan 2019 22:37:00 +0800</pubDate><description><![CDATA[来源：慈怀读书会
断舍离，是近年来比较流行的说法，它提醒我们舍弃那些无意识中膨胀的物欲，呼吁人们扔掉那些不必要的，不再让人怦然心动的东西，留下重要的东西，过简单的生活。

其实，膨胀的何止是物欲，该扔掉的又何止是堆满屋子的东西，过时的思想，守旧的观念，一直坚持的原则，都和成长中的我们格格不入。

如果我们不愿改变，一味因循守旧，那我们失去的可能是财富，可能是朋友，也可能是...]]></description><category></category></item><item><title><![CDATA[angular5.x全局loading解决方法]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487580</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487580</guid><author>WODE1102</author><pubDate>Mon, 28 Jan 2019 20:06:00 +0800</pubDate><description><![CDATA[import { Router, ActivatedRoute, NavigationEnd, NavigationStart } from '@angular/router';

private allLoading: boolean = false;


constructor(
private router: Router,
private activate...]]></description><category></category></item><item><title><![CDATA[angular路由守卫]]></title><link>https://blog.youkuaiyun.com/WODE1102/article/details/101487582</link><guid>https://blog.youkuaiyun.com/WODE1102/article/details/101487582</guid><author>WODE1102</author><pubDate>Fri, 25 Jan 2019 11:32:00 +0800</pubDate><description><![CDATA[import { CanActivateChild, Router, ActivatedRouteSnapshot } from '@angular/router';

export class AuthGuard implements CanActivateChild {


public async canActivateChild(childRoute: Acti...]]></description><category></category></item></channel></rss>