![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
干货系列
文章平均质量分 75
精选
李唐敏民
杂食程序猿。
展开
-
this与bind apply call
thisthis 机制是 JavaScript 特有的,它是为了解决在对象内部的方法中使用对象内部的属性的需求。如果不使用 this 来实现对对象内部的属性 JavaScript 可以使用对象.属性访问到:let people = { name: 'litangmm', logName: function(){ console.log(people.name) }}这种方法,方法与对象强耦合。对象变量变化,方法必须接着改变。如果有一个匿名对象数组,那么对象位置原创 2021-03-23 14:14:07 · 124 阅读 · 0 评论 -
web安全
CSP简介全称content-security-policy,内容安全策略。网络是开放的,所以http协议规定,网页可以加载第三方资源,而这也带来了安全问题。黑客可以注入恶意脚本,通过操作DOM获取用户信息,或修改DOM,影响用户体验。所以,就出现了CSP,通过CSP,设置资源白名单,可以限制第三方资源的加载,由此防范跨站脚本攻击。另外,CSP可以上报违例报告。设置方法服务器返回返回 Content-Security-Policy HTTP头部。Content-Security-Pol原创 2021-03-22 14:56:06 · 210 阅读 · 0 评论 -
公众号网页获取openid
前端需要做的事App.vue:监听路由,如果发生变化,就去localStorage里检查token,如果没有token,即没有进行授权。同时,如果路由不是授权页面,那么需要进行跳转到授权页面进行授权。// App.vuewatch: { '$route' () { const token = localStorage.getItem('token') if (this.$route.path === '/auth' || this.$route.path === '原创 2021-03-03 17:11:18 · 360 阅读 · 1 评论 -
前端面试题:信号控制灯
题目使用Vue实现一个信号控制灯控制器,要求:默认情况下红灯亮20秒,并且最后闪烁5秒绿灯亮20秒,并且最后闪烁5秒黄灯亮10秒灯的个数、颜色、持续时间、闪烁时间、灯光次序都可配置。如:[{color:'#fff',duration: 10000,twinkleDuration: 5000}, ...]分析可以简单的分成两部来做:信号灯控制器信号灯需要做的事情:接受颜色亮、闪烁结束后通知控制器控制器需要做的事情:接收创建信号灯接受信号灯的结束原创 2021-02-28 14:02:25 · 694 阅读 · 0 评论 -
万字:长文彻底弄懂ES5中的类和继承
前置知识原型定义每个构造函数都有一个原型对象①,原型有一个属性指回构造函数②,而实例有一个内部指针指向原型③。问题function Person(){ this.name = "litangmm";}Person.prototype.getName = function(){ return this.name;}let instance = new Person();console.log(instance.getName()); // litangmm那么这段代原创 2021-02-26 14:25:20 · 127 阅读 · 0 评论 -
浏览器运行原理
渲染过程按照时间顺序分为:构建DOM树、样式计算、布局阶段、分层、绘制、分块、光栅化和合成。构建DOM树浏览器无法解析HTML,将HTML解析为浏览器可以理解的DOM树样式计算浏览器无法理解CSS,转换为stylesheets。转换样式表中的属性值,使其标准化(长度->px,颜色->rgb,变量->数值)。计算DOM树中每个节点的具体样式。继承和层叠。最终输出每个节点的ComputedStyle值。布局过程计算DOM树中***可见元素***的几何位置。创建布局树原创 2021-02-25 00:01:28 · 63 阅读 · 0 评论 -
JavaScript 并发控制
目的:现有多个异步请求,需要并发请求,并限制并发数。用例let request = (delay, id) => { return new Promise((resolve) => { setTimeout(resolve, delay, id) })}let test_requests = [ request(6000, 1), request(3000, 2), request(4000, 3), request(60原创 2021-02-04 15:04:02 · 373 阅读 · 0 评论 -
手撕Promise.all()
要实现Promise.all(),首先我们得知道这个函数的接受什么、做了什么和返回了什么。引用MDN的描述:Promise.all() 方法接收一个promise的iterable类型(注:Array,Map,Set都属于ES6的iterable类型)的输入,并且只返回一个Promise实例, 那个输入的所有promise的resolve回调的结果是一个数组。这个Promise的resolve回调执行是在所有输入的promise的resolve回调都结束,或者输入的iterable里没有promise原创 2021-01-28 16:10:43 · 382 阅读 · 0 评论 -
百度新闻爬虫搜索引擎实战---部署篇
pass原创 2019-08-17 09:50:42 · 202 阅读 · 0 评论 -
百度新闻爬虫搜索引擎实战---后端篇(2)
pass原创 2019-08-17 09:49:47 · 212 阅读 · 0 评论 -
百度新闻爬虫搜索引擎实战---后端篇(1)
pass原创 2019-08-16 15:19:48 · 335 阅读 · 0 评论 -
百度新闻爬虫搜索引擎实战---爬虫篇(3)
爬虫部分书接上回,我们讲到,要用elasticsearch来存储信息,那么我们首先就得安装elasticsearch。这里就不介绍了,默认已经装好elasticsearch,那我们就正式开始写爬虫了。1. Scrapy创建爬虫项目(baidunewsspider) C:\Users\LiTangMM\PycharmProjects>scrapy startproject baiduNe...原创 2019-08-16 15:12:39 · 1062 阅读 · 1 评论 -
百度新闻爬虫搜索引擎实战---爬虫篇(2)
爬虫部分新闻链接爬取(2)书接上回,我们获取到了使用动态加载技术加载的新闻链接,但是,有些不是动态加载的新闻链接,我们还没有处理。我们将doc类型文档拷贝下来,放入HBuilder X编辑器中,然后打开内置浏览器,打开开发者工具。这里不直接使用chrome定位元素,因为chrome看到的html实际上不是我们这个请求获取到的代码。我们定位到了一个 div 它子元素 是一个 div 和...原创 2019-08-15 18:03:49 · 2589 阅读 · 0 评论 -
百度新闻爬虫搜索引擎实战---爬虫篇(1)
爬虫部分首先,我们得爬取百度新闻的信息。爬虫分为两部分:获取新闻链接通过链接爬取新闻信息1.获取新闻链接1.1 分析请求打开chrome浏览器,输入百度新闻链接,按F12打开开发者工具,依次点击Network->Doc,再刷新一次网页,效果如下:我们看到了所有返回doc的请求。接着,我们点击Preview选项卡:通过预览,我们可以看到这个请求热点要闻、热搜新闻词和百...原创 2019-08-14 12:49:17 · 4154 阅读 · 1 评论