<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sinat_39049092的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sinat_39049092</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sinat_39049092]]></copyright><item><title><![CDATA[解决微信小程序bindgetphonenumber和wx.login获取的code不同步问题]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/131292254</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/131292254</guid><author>sinat_39049092</author><pubDate>Mon, 19 Jun 2023 17:45:49 +0800</pubDate><description><![CDATA[在获取用户手机号的时候，经常会因为提交参数的code和iv、encryptedData参数匹配不一致而报错。]]></description><category></category></item><item><title><![CDATA[UniApp-Vue3踩坑记录&心得体会]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/125503995</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/125503995</guid><author>sinat_39049092</author><pubDate>Tue, 28 Jun 2022 15:53:17 +0800</pubDate><description><![CDATA[开发时路径：编译后路径：引用路径：如上1.1图示。只能让它作用的背景变模糊，当有元素拖动到它下面时，不会模糊下面的元素。仅仅是当前背景变模糊。这个属性可以让你为一个元素后面区域添加图形效果（如模糊或颜色偏移）。 因为它适用于元素背后的所有元素，为了看到效果，必须使元素或其背景至少部分透明。很多时候我们需要动态渲染某些“选中”、“切换”、“不同状态”等样式或者需要计算才能得到的样式，这时候我们就可以使用Vue3的状态驱动的动态css——v-bind效果：父组件：子组件：在谷歌浏览器>扩展程序 里面添加http]]></description><category></category></item><item><title><![CDATA[h5在iOS上，回退页面，出现白屏，滑动页面，页面正常展示]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/122585006</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/122585006</guid><author>sinat_39049092</author><pubDate>Wed, 19 Jan 2022 16:57:06 +0800</pubDate><description><![CDATA[问题：h5在iOS上，回退页面，出现白屏，滑动页面，页面正常展示
scrollRestoration
描述：h5在ios上，第一个页面超过一屏，点击进入第二个页面，第二个页面滑动超过一屏时，返回第一个页面时，第一个屏幕有一块白的盖在上面，滑动页面，白屏消失，页面正常展示。这块白的是第二个页面滚动的部分，盖在第一个屏幕上了。
解决方法：window.history.scrollRestoration会记录上一个页面滚动的位置。
值：auto,将恢复用户已滚动到的页面上的位置; manual,未还原页上的位置。]]></description><category></category></item><item><title><![CDATA[给学弟建议的个人前端规划]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/120588268</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/120588268</guid><author>sinat_39049092</author><pubDate>Sat, 02 Oct 2021 19:12:18 +0800</pubDate><description><![CDATA[前端这个行业，一般大致就是分为三个阶段。
第一个就是前一年，这个时候大部分人都还在是在熟悉各种框架、技术栈和不同类型的项目开发的一个阶段，这个阶段主要要掌握各种框架技术api的使用熟练度，不断拓展自己的知识面，这个阶段主要目标就是能够达到理解各类主流技术和框架的用法，并且熟练使用。
第二个阶段就是三年，这个时候对技术的接触多多少少会深一些了，当然学习是一直要有的，每个阶段的学习肯定是不一样的，这个后面可以再单独给你说一下。但我理解这个阶段，一方面，主要是以培养自己的编程思维和逻辑思维为主（当然学习方案就是算]]></description><category></category></item><item><title><![CDATA[2021中高级前端面试题及解析]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/117265578</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/117265578</guid><author>sinat_39049092</author><pubDate>Tue, 25 May 2021 23:08:42 +0800</pubDate><description><![CDATA[1.对闭包的看法，为什么要用闭包？说一下闭包原理以及应用场景
1）什么是闭包
函数执行后返回结果是一个内部函数，并被外部变量所引用，如果内部函数持有被执行函数作用域的变量，即形成了闭包。
可以在内部函数访问到外部函数作用域。使用闭包，一可以读取函数中的变量，二可以将函数中的变量存储在内存中，保护变量不被污染。而正因闭包会把函数中的变量值存储在内存中，会对内存有消耗，所以不能滥用闭包，否则会影响网页性能，造成内存泄漏。当不需要使用闭包时，要及时释放内存，可将内层函数对象的变量赋值为null。
2）闭包原理
函]]></description><category></category></item><item><title><![CDATA[js 原型的之—— Object 和 Function 的关系]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/117235554</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/117235554</guid><author>sinat_39049092</author><pubDate>Mon, 24 May 2021 23:53:48 +0800</pubDate><description><![CDATA[var F = function(){};
Object.prototype.a = function(){};
Function.prototype.b = function(){};
F既能访问到a，也能访问到b(Object 和 Function也同样， 但是所有的实例只能访问到a)，F是Object 和 Function两个的实例， 那么 Object 和 Function 到底是什么关系？
这是我对 Object 和 Function 的了解
F instanceof Object //true
]]></description><category></category></item><item><title><![CDATA[element-ui upload multiple多选时  Cannot set property ‘status‘ of null错误解决方案]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/115964741</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/115964741</guid><author>sinat_39049092</author><pubDate>Wed, 21 Apr 2021 17:21:56 +0800</pubDate><description><![CDATA[在使用element-ui中的Upload组件时, 当我们需要手动修改fileList的时候会报错如下：

其实这是element组件告诉我们不能直接修改fileList的值。网上有罗列出几种方法来阻止组件的原生事件，实际上这些方法在指定上传文件可多选时是不可取的。这里我通过自己的踩坑，得出一下完美解决方案：
1.在data里面定义再一个变量uploadList用于操作fileList

这里我们定义的uploadList可用于更改fileList的值，并且传回给父组件或者做其他事情
2.上传成功回调里面给]]></description><category></category></item><item><title><![CDATA[JavaScript高级程序设计之——递增/递减操作符的前缀版和后缀版]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/115802775</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/115802775</guid><author>sinat_39049092</author><pubDate>Sat, 17 Apr 2021 22:31:56 +0800</pubDate><description><![CDATA[在javascript的语法里，我们把只操作一个值的操作符称为一元操作符。这里我将针对一元操作符里面的递增操作符和递减操作符做一下详细介绍。
1.前缀操作符
顾名思义，前缀操作符就是位于要操作的变量前头。前缀递增操作符会给数值加1，把两个加号放到变量前面即可：
let age = 29;
++age;

在这个例子中，前缀递增操作把age的值变成了30（给之前的值29加1）。因此，它实际上等于如下表达式：
let age = 29;
age = age + 1;

前缀递减也类似，只不过是从一个数值减1。使]]></description><category></category></item><item><title><![CDATA[前端高频面试题记录]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/114909044</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/114909044</guid><author>sinat_39049092</author><pubDate>Wed, 17 Mar 2021 00:17:44 +0800</pubDate><description><![CDATA[1.求以下代码的输出结果
    setTimeout(function () { console.log(1) }, 0);
        new Promise(function (resolve, reject) {
            console.log(2);
            resolve();
        }).then(function () {
            console.log(3)
        }).then(function () { conso]]></description><category></category></item><item><title><![CDATA[基于Vue的SPA如何优化页面加载速度]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/114906107</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/114906107</guid><author>sinat_39049092</author><pubDate>Tue, 16 Mar 2021 23:04:56 +0800</pubDate><description><![CDATA[基于Vue的SPA如何优化页面加载速度

常见的几种SPA优化方式


	减小入口文件体积
	
	
	静态资源本地缓存
	
	
	开启GZip压缩
	
	
	使用SSR
	
.....


	减小入口文件体积，常用的手段是路由懒加载，开启路由懒加载之后，待请求的页面会单独打包js文件，使得入口文件index.js变小，开启懒加载之后，js是这样请求加载的：
	


2. 静态文件本地缓存有两种方式


	HTTP缓存，设置Cache-Control，Last-Modified，Etag等响应头，很多文章讲的]]></description><category></category></item><item><title><![CDATA[微前端]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/114603251</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/114603251</guid><author>sinat_39049092</author><pubDate>Tue, 09 Mar 2021 22:12:58 +0800</pubDate><description><![CDATA[一、微前端的概念
将前端应用分解成一些更小、更简单的能够独立开发、测试、部署的小块，而在用户看来仍然是内聚的单个产品。
二、微前端的特点
简单来讲，微前端的理念类似于微服务：
将庞大的整体拆成可控的小块，并明确它们之间的依赖关系。关键优势在于：

代码库更小，更内聚、可维护性更高
松耦合、自治的团队可扩展性更好
渐进地升级、更新甚至重写部分前端功能成为了可能

1.简单、松耦合的代码库
比起一整块的前端代码库，微前端架构下的代码库倾向于更小/简单、更容易开发。此外，更重要的是避免模块间不合理的隐式耦合造成的]]></description><category></category></item><item><title><![CDATA[2021Web前端中高级面试题复盘]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/114260739</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/114260739</guid><author>sinat_39049092</author><pubDate>Sat, 06 Mar 2021 22:32:24 +0800</pubDate><description><![CDATA[一、js基础
1.call、apply、bind三者的用法和区别
（1）三者的使用
func.call(thisArg, arg1, arg2, ...)
func.bind(thisArg, arg1, arg2, ...)
func.apply(thisArg, [arg1, arg2, ...]) 

（2）手写call()方法
Function.prototype.myCall = function(thisArg, ...args) {
    thisArg.fn = this         ]]></description><category></category></item><item><title><![CDATA[常用的CSS默认样式]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/114336063</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/114336063</guid><author>sinat_39049092</author><pubDate>Wed, 03 Mar 2021 21:31:39 +0800</pubDate><description><![CDATA[以下是个人习惯性用的css reset 重置浏览器默认样式，在这里立个flag，有需要的同仁可以直提
@charset "gb2312";
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li,
pre, form, fieldset, legend, button, input, textarea, th, td {
margin: 0;
padding: 0
}
body, button, input, selec]]></description><category></category></item><item><title><![CDATA[vue常见面试题]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/114004872</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/114004872</guid><author>sinat_39049092</author><pubDate>Tue, 23 Feb 2021 22:45:51 +0800</pubDate><description><![CDATA[1.vue优点？
答：轻量级框架：只关注视图层，是一个构建数据的视图集合，大小只有几十kb；
简单易学：国人开发，中文文档，不存在语言障碍 ，易于理解和学习；
双向数据绑定：保留了angular的特点，在数据操作方面更为简单；
组件化：保留了react的优点，实现了html的封装和重用，在构建单页面应用方面有着独特的优势；
视图，数据，结构分离：使数据的更改更为简单，不需要进行逻辑代码的修改，只需要操作数据就能完成相关操作；
虚拟DOM：dom操作是非常耗费性能的， 不再使用原生的dom操作节点，极大解放d]]></description><category></category></item><item><title><![CDATA[快速带你了解VUE3.0优势在哪里]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/114004768</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/114004768</guid><author>sinat_39049092</author><pubDate>Tue, 23 Feb 2021 22:39:53 +0800</pubDate><description><![CDATA[3.0比2.0 快2倍
	Tree-shaking 更友好；
	新的 core runtime：~ 10kb gzipped；
	3.0 新加入了 TypeScript 以及 PWA 的支持
	3.0去掉了filter, 么有beforeCreate created,用setup取代
	reactivity是可以单独作为库使用的
	单独功能可以抽离 取代了mixin 优于mixin 解决上下反复横跳 ·
	List item支持多个子节点 fragment
	setup里没有this
	Proxy实现...]]></description><category></category></item><item><title><![CDATA[github部署项目到服务器且在线访问]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/113436815</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/113436815</guid><author>sinat_39049092</author><pubDate>Sat, 30 Jan 2021 16:07:34 +0800</pubDate><description><![CDATA[1. git init 初始化
2.git add .
3.git commit -m “注释内容”
4. 创建github仓库 New repository,
5，关联github仓库，获取到github仓库地址后，将本地仓库与github仓库关联
git remote add origin http://github.com/husanfeng/vue-components-web.git

6.上传本地项目：
git push -u origin master

7，刷新github 仓库

8，选择]]></description><category></category></item><item><title><![CDATA[git 本地仓库关联到远程仓库]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/113417142</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/113417142</guid><author>sinat_39049092</author><pubDate>Sat, 30 Jan 2021 10:42:07 +0800</pubDate><description><![CDATA[将本地仓库关联到远程仓库
方式一：远程仓库没有文件
第一步：
git init（初始化git仓库）；

第二步：
git remote add 地址（设置remote地址）；

第三步：
git add . （将所有变更提交到本地仓库）；

第四步：
git commit -m '' （提交注释）；

第五步：
git push（本地仓库推送到远程仓库）

方式二：远程仓库有文件
第一步：
git init（初始化git仓库）；

第二步：
git remote add origin 地址（设置远程remo]]></description><category></category></item><item><title><![CDATA[js判断ie版本及是否是IE环境]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/112462005</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/112462005</guid><author>sinat_39049092</author><pubDate>Mon, 11 Jan 2021 10:40:48 +0800</pubDate><description><![CDATA[有时候因为开发需要，我们的项目需要针对ie浏览器做单独的适配，这是我们就需要用到一些比较特殊的手段。这种情况我们首先既要保证正常浏览器（如谷歌、火狐、360、QQ等等）样式又要保证ie浏览器的样式，所以大多时候采用的解决方案是编写两套样式，这里我们简要举例说明一下一般的解决方案：
1、项目方案–引入两套css
在ie9以下浏览器环境里面，可以识别一个css判断代码，引用这段代码就意味着所引入的样式只在ie9以下的环境中生效，这样的话就可以让我们做到对ie9以下的版本做两套代码的适配：
  &lt;scrip]]></description><category></category></item><item><title><![CDATA[简述http和https区别]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/109351867</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/109351867</guid><author>sinat_39049092</author><pubDate>Thu, 29 Oct 2020 09:54:57 +0800</pubDate><description><![CDATA[http协议和https协议的区别主要是：传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同
一、传输信息安全性不同

http协议：是超文本传输协议，信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文，就可以直接读懂其中的信息。
https协议：是具有安全性的ssl加密传输协议，为浏览器和服务器之间的通信加密，确保数据传输的安全。

二、连接方式不同

http协议：http的连接很简单，是无状态的。
https协议：是由SSL＋HTTP协议构建的可进行加密传输、身份认证的网]]></description><category></category></item><item><title><![CDATA[前端经典面试题：从输入URL到页面加载发生了什么？]]></title><link>https://blog.youkuaiyun.com/sinat_39049092/article/details/109315401</link><guid>https://blog.youkuaiyun.com/sinat_39049092/article/details/109315401</guid><author>sinat_39049092</author><pubDate>Wed, 28 Oct 2020 14:29:45 +0800</pubDate><description><![CDATA[总体来说分为以下几个过程:
1. DNS解析
2. TCP连接
3. 发送HTTP请求
4. 服务器处理请求并返回HTTP报文
5. 浏览器解析渲染页面
6. 连接结束
具体过程
DNS解析
DNS解析的过程就是寻找哪台机器上有你需要资源的过程。当你在浏览器中输入一个地址时，例如www.baidu.com，其实不是百度网站真正意义上的地址。互联网上每一台计算机的唯一标识是它的IP地址，但是IP地址并不方便记忆。用户更喜欢用方便记忆的网址去寻找互联网上的其它计算机，也就是上面提到的百度的网址。所以互联网设计者]]></description><category></category></item></channel></rss>