<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[high_height的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/high_height</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; high_height]]></copyright><item><title><![CDATA[通过fetch请求下载文件（各种不同类型的附件）]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/118341158</link><guid>https://blog.youkuaiyun.com/high_height/article/details/118341158</guid><author>high_height</author><pubDate>Tue, 29 Jun 2021 18:20:41 +0800</pubDate><description><![CDATA[一个通过fetch请求下载文件的方法，记录一下


//url：完整附件地址   filename：文件名称（通常两者都是接口返回）
downLoadByFetch(url, filename){
    fetch(url,{
        method: 'get',
        mode: 'cors'
    }).then(blob =&gt; {
        let a = document.createElement('a')
        let newUrl = window.]]></description><category></category></item><item><title><![CDATA[react-native 安卓系统和ios系统样式兼容性整理(未完待续)]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/114791685</link><guid>https://blog.youkuaiyun.com/high_height/article/details/114791685</guid><author>high_height</author><pubDate>Fri, 26 Mar 2021 15:26:27 +0800</pubDate><description><![CDATA[初次接触rn，记录一下小坑

1.text 写按钮圆角设置 安卓展示正常，ios会变成椭圆形？

 解决方法：设置text的宽高和lin，不能使用padding来撑高容器

2.text的border在ios不起作用需要在外包一个view标签方可实现border出现

3.


...]]></description><category></category></item><item><title><![CDATA[雅虎前端优化14条规则]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/108165908</link><guid>https://blog.youkuaiyun.com/high_height/article/details/108165908</guid><author>high_height</author><pubDate>Sat, 22 Aug 2020 11:35:17 +0800</pubDate><description><![CDATA[1.减少HTTP请求数

　　常用的方法，合并css，js（将一个页面中的css和js文件分别合并）以及Image maps和css sprites等。

2.使用CDN（内容分发网络）

　　通过在现有的Internet中增加一层新的网络架构，将网站的内容发布到最接近用户的cache服务器内，通过DNS负载均衡的技术，判断用户来源就近访问cache服务器取得所需的内容。

3.添加Expire/Cache-Control 头

　　Expire其实就是通过header报文来指定特定类型的文件在浏览器中..]]></description><category></category></item><item><title><![CDATA[js链式调用]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/105412649</link><guid>https://blog.youkuaiyun.com/high_height/article/details/105412649</guid><author>high_height</author><pubDate>Thu, 09 Apr 2020 15:58:28 +0800</pubDate><description><![CDATA[链式调用在JavaScript 语言界很常见，如jQuery 、Promise 等，都是使用的链式调用。链式调用可以让我们在进行连续操作时，写出更简洁的代码。

简单的实现代码如下：


function Person() {}

Person.prototype.name= function(name) {
    alert("my name is "+name);
    ...]]></description><category></category></item><item><title><![CDATA[模块化开发的CMD和AMD区别]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/105391910</link><guid>https://blog.youkuaiyun.com/high_height/article/details/105391910</guid><author>high_height</author><pubDate>Wed, 08 Apr 2020 17:02:43 +0800</pubDate><description><![CDATA[AMD 是 RequireJS 在推广过程中对模块定义提出的概念。
CMD 是 SeaJS 在推广过程中对模块定义提出的概念。

RequireJS 和 Sea.js 都是模块加载器，倡导模块化开发理念，核心价值是让 JavaScript 的模块化开发变得简单自然。

不同之处

两者的主要区别如下：


	定位有差异。RequireJS 想成为浏览器端的模块加载器，同时也想成为 Rhino / ...]]></description><category></category></item><item><title><![CDATA[前端工程化浅识]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/105390245</link><guid>https://blog.youkuaiyun.com/high_height/article/details/105390245</guid><author>high_height</author><pubDate>Wed, 08 Apr 2020 16:42:46 +0800</pubDate><description><![CDATA[最近看了很多关于前端工程化的文章，记录一下自己的简单理解。

前记（废话）：日益复杂的前端业务已经前端技术的飞速发展，现在已经不是刚刚兴起时的html+css+javascript以及搭配一个的jquery就走遍天下的时代了，各种前端mvvm框架，ui库，各种轮子，造轮子能力，打包工具，前端测试工具。。。并且还在不停地更新，前端这个曾经被误认为最低门槛的岗位，变得日益“不凡”。开发一个项目需要更完...]]></description><category></category></item><item><title><![CDATA[Async/Await与Promise区别]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/105389705</link><guid>https://blog.youkuaiyun.com/high_height/article/details/105389705</guid><author>high_height</author><pubDate>Wed, 08 Apr 2020 15:55:08 +0800</pubDate><description><![CDATA[自从Node的7.6版本，已经默认支持async/await特性了。如果你还没有使用过他，或者对他的用法不太了解，这篇文章会告诉你为什么这个特性“不容错过”。本文辅以大量实例，相信你能很轻松的看懂，并了解Javascript处理异步的一大杀器。

初识Async/await

对于还不了解Async/await特性的同学，下面一段是一个“速成”培训。
Async/await 是Javascr...]]></description><category></category></item><item><title><![CDATA[js控制最大并发请求实现，promise]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/104798109</link><guid>https://blog.youkuaiyun.com/high_height/article/details/104798109</guid><author>high_height</author><pubDate>Wed, 11 Mar 2020 15:45:25 +0800</pubDate><description><![CDATA[背景

通常，我们在需要保证代码在多个异步处理之后执行，会用到：


Promise.all(promises:[]).then(fun:function);

Promise.all可以保证，promises数组中所有promise对象都达到resolve状态，才执行then回调。

这时候考虑一个场景：如果你的promises数组中每个对象都是http请求，或者说每个对象包含了复杂的调用处...]]></description><category></category></item><item><title><![CDATA[判断某个变量是否为数组（判别其它类型可类比某些方法进行）]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/104658968</link><guid>https://blog.youkuaiyun.com/high_height/article/details/104658968</guid><author>high_height</author><pubDate>Wed, 04 Mar 2020 18:13:11 +0800</pubDate><description><![CDATA[自己整理的比较简单和常用的三种方法去判断某个变量是不是为数组

第一种方法 instanceof：


function checkIsArray(arr){

    return arr instanceof Array;

}

第二种方法 直接使用array的一个方法 =&gt;isArray:


function checkIsArray(arr){
    
    return ...]]></description><category></category></item><item><title><![CDATA[数组内的对象去重（基于对象的某个字段）]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/104282837</link><guid>https://blog.youkuaiyun.com/high_height/article/details/104282837</guid><author>high_height</author><pubDate>Wed, 12 Feb 2020 18:14:27 +0800</pubDate><description><![CDATA[一.非es6方法：


//去重方法
function filterSame(arrays){

    var obj = {};

    var newArrays= [];

    for(var i =0; i&lt;arrays.length; i++){

        if(!obj[arrays[i].id]){

            arrays.push(arrays...]]></description><category></category></item><item><title><![CDATA[前端要持续监听事件的性能优化（节流/防抖），scroll方法为例。]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/103905889</link><guid>https://blog.youkuaiyun.com/high_height/article/details/103905889</guid><author>high_height</author><pubDate>Thu, 09 Jan 2020 12:59:25 +0800</pubDate><description><![CDATA[以滚动事件为例吧，移动端要实现一个简单的滚动到底部加载下一页的需求，就需要监听页面的scroll事件了代码如图：


let timeOutFn = false; //

$(window).scroll(function () {  //监听窗口的滚动事件

    clearTimeOut(timeOutFn);     //100毫秒内仍然执行滚动就把需要执行的逻辑清除掉，停下来在执行具体函...]]></description><category></category></item><item><title><![CDATA[react配置路由的时候地址栏的井号（#）去除方法，新方法。]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/103818224</link><guid>https://blog.youkuaiyun.com/high_height/article/details/103818224</guid><author>high_height</author><pubDate>Fri, 03 Jan 2020 12:12:52 +0800</pubDate><description><![CDATA[今天在搭建框架的时候使用了router之后，地址栏的#号很碍眼，查了资料后发现react-router的新版本不能直接import browserHistory方法去解决这个井号，找到了这个方法：





把history的改为这个就ok的了，很简单，做一次记录。
...]]></description><category></category></item><item><title><![CDATA[canvas的图片与img图片互转（生成base64编码的图片）]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/102386021</link><guid>https://blog.youkuaiyun.com/high_height/article/details/102386021</guid><author>high_height</author><pubDate>Tue, 08 Oct 2019 14:47:43 +0800</pubDate><description><![CDATA[canvas图片转img标签的base64编码地址  js代码片段如下：


//从网页中的canvas标签中提取图片
function convertCanvasToImage(canvas) {  
    var image = new Image();  
    // canvas.toDataURL 返回的是一串Base64编码的URL
    // 指定格式 PNG  
    ...]]></description><category></category></item><item><title><![CDATA[一个超级简单的Python爬虫例子]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/101211446</link><guid>https://blog.youkuaiyun.com/high_height/article/details/101211446</guid><author>high_height</author><pubDate>Mon, 23 Sep 2019 16:31:11 +0800</pubDate><description><![CDATA[首先要安装两个库（requests、BeautifulSoup）

爬了中国旅游网的某一条消息


import requests
from bs4 import BeautifulSoup
url = "http://www.cntour.cn/"
page=requests.get(url)
soup = BeautifulSoup(page.text,'lxml')

//dom节点位置
d...]]></description><category></category></item><item><title><![CDATA[iPhone手机上h5页面输入内容后，失去焦点页面底部有空白问题解决]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/98851669</link><guid>https://blog.youkuaiyun.com/high_height/article/details/98851669</guid><author>high_height</author><pubDate>Thu, 08 Aug 2019 11:10:02 +0800</pubDate><description><![CDATA[这真是一个cd的问题，这ios也太傲娇了吧
在页面的input框输入完成后，它竟然就挂在那里了，底部的按钮一直在屏幕的中部，多出了一大块空白，要手动滑动几次才能回复正常，不自动归位，真的cd。解决办法如下：

jq方法：
$("input").on("blur",function(){

  //设置屏幕滚回到顶部，很简单很粗暴
  window.scroll("0,0");
})
事情就...]]></description><category></category></item><item><title><![CDATA[通过递归的方法使用setTimeout模拟setInterval行为]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/94581471</link><guid>https://blog.youkuaiyun.com/high_height/article/details/94581471</guid><author>high_height</author><pubDate>Wed, 03 Jul 2019 17:54:08 +0800</pubDate><description><![CDATA[今天在优化项目的代码时候用到了递归方法，然后看到网上一个有趣的题目：怎么用setTimeout模拟setInterval行为？

感觉挺过瘾的，就去实现了一下，果然有趣，直接上代码吧：


//实现的方法挺简单的 ，如下代码
//参数： 毫秒  需要执行的方法
function setInter(s,fn){
  let timeOut = (s,fn)=&gt;{
      setTimeou...]]></description><category></category></item><item><title><![CDATA[关于使用display:flex的弹性布局，结合js实现最后一行自动左对齐（跪求纯css实现的方法）]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/94028662</link><guid>https://blog.youkuaiyun.com/high_height/article/details/94028662</guid><author>high_height</author><pubDate>Fri, 28 Jun 2019 18:22:41 +0800</pubDate><description><![CDATA[一个考验基本功的功能，而我现在也才用了最流行的一种方法，希望看到的有思路的可以写下自己的做法，一整段代码如下：

实现思路：通过获取父元素的宽度以及子元素宽度进行一系列计算，补齐最后一行，达到justify-content：wrap的时候，依旧完美左对齐


&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;&lt;/title&gt;
    ...]]></description><category></category></item><item><title><![CDATA[react改变this.state的对象里面的值的方法]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/84305862</link><guid>https://blog.youkuaiyun.com/high_height/article/details/84305862</guid><author>high_height</author><pubDate>Tue, 20 Nov 2018 17:08:45 +0800</pubDate><description><![CDATA[
//伪代码
this.state={
   person:{
     sex:'',
     age:'',
   }
}

//改变state内部值
changeState=(type1,type1_child,data)=&amp;gt;{
  let state = {...this.state}
  state[type1][type2] = data
  this.setState({
 ...]]></description><category></category></item><item><title><![CDATA[react的识别html标签输出]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/82626872</link><guid>https://blog.youkuaiyun.com/high_height/article/details/82626872</guid><author>high_height</author><pubDate>Tue, 11 Sep 2018 15:39:59 +0800</pubDate><description><![CDATA[初学react学习到的，方法很简单，如下：

str = `&amp;lt;p style=&quot;color:red&quot;&amp;gt;输入正常的文字&amp;lt;/p&amp;gt;`

&amp;lt;div dangerouslySetInnerHTML={{ __html: str}} /&amp;gt;

输出结果：

输入正常的文字...]]></description><category></category></item><item><title><![CDATA[根据经纬度，计算地图两点之间的距离（可在高德地图api接口验证结果是否正确）]]></title><link>https://blog.youkuaiyun.com/high_height/article/details/80798298</link><guid>https://blog.youkuaiyun.com/high_height/article/details/80798298</guid><author>high_height</author><pubDate>Mon, 25 Jun 2018 10:32:50 +0800</pubDate><description><![CDATA[function getdistance($lng1,$lat1,$lng2,$lat2){	//将角度转为狐度	$radLat1=deg2rad($lat1);//deg2rad()函数将角度转换为弧度	$radLat2=deg2rad($lat2);	$radLng1=deg2rad($lng1);	$radLng2=deg2rad($lng2);	$a=$radLat1-$radLat2;	...]]></description><category></category></item></channel></rss>