沉迷学习的最近

2019.5.7
梳理一下最近空余时间学习的东西,这几天需求不是很急,有待改动,所以在学习一些想学的东西
1.node.js
我选择的是看视频,学习了一下使用node.js来爬取数据
简单写写一个爬图片的代码:
const fs = require(‘fs’);
const url = require(“url”)
function GetUrl(sUrl,suc){
var urlObj = url.parse(sUrl)
var http = ‘’
if(urlObj.protocol == “http:”){
http = require(“http”)
}else{
http = require(“https”)
}
let req = http.request({
“hostname”:urlObj.hostname,
“path”:urlObj.path
},res=>{
var arr = []
res.on(‘data’,buffer=>{
arr.push(buffer)
});
res.on(“end”,()=>{
let b = Buffer.concat(arr)
suc && suc(b)
})
})
req.end()
req.on(“error”,()=>{
console.log(“404040404040404”)
})
}
GetUrl(‘https://bj.bcebos.com/v1/baikebcs/adpic/活力报告推广位.png’,data=>{
fs.writeFile(‘1.jpg’,data,()=>{})
})
这是我随意在网上找的一个图片的地址,然后利用node把他爬取下来下载到我的文件夹里。GetUrl是封装了一个方法,然后利用url.parse.protocol来查看协议是http还是https,最后使用http.request来爬取,这边res.on(‘data’,buffer=>{}),buffer是一个二进制文件,然后结束监听的时候 let b = Buffer.concat(arr) 用来转换真正的二进制文件,然后就可以把b传到suc函数里,也就是GetUrl的回调,在通过fs.writeFile方法 就可以把图片爬下来。
这是普通网站的方法,还有一个神奇的网站是例外。那就是------淘宝
淘宝对链接进行9次重定向,真的恐怖,如果按上述方法,会出现报错302\301,那么就只有添加判断咯,这边可以写一个递归的方法,什么是递归?就是自己调用自己。
这边用到res的一个参数,就是statusCode 如果是200就执行上述就完事了,如果是302,301就代表重新定向了,你就需要去找他返回给你的新的url再去爬。这么反复9次之后,你就可以爬到淘宝的页面了。如果你想看,可以打印一下 console.log(res.statusCode,res.headers.location)
后面的headers.location就是重定向之后返回给你的url,你需要手动换成这个url然后继续请求。这里面呢有个方法可以不用这么麻烦,就是递归。
我们可以在回调里添加判断,else if(res.statusCode == 302 || res.statusCode == 301){
console.log(这是第${index}次重定向)
GetUrl(res.headers.location,suc)
}
这里我还是加了一个index来看看淘宝重定向了几次。OK咯,运行
可以发现沉迷学习的最近
9次重定向,终于找到了真的淘宝页面数据。只能说一句,淘宝牛皮。之后比较深的东西我也不懂,还在继续学习中。。。

2.休息的时候看到一个笑话,就是商家跟消费者的消息,如果想退订,倒序回复下面的代码,感觉有意思,可以写个方法
var reverse = function( str ){
return str.split(’’).reverse().join(’’);
};
var string = ‘iloveyou’
reverse(string) // uoyevoli
这可难不倒程序员

3.看了一些提升幸福感的js小技巧
下面是链接
https://juejin.im/post/5ccf929fe51d453b80712815
虽然我有些也没有看懂。
4.学习了一下vue的插槽用法,以前是不敢用,也不太懂,现在终于明白怎么用了
比如我定义一个child组件
沉迷学习的最近
你在父组件里调用沉迷学习的最近
是这么显示的:沉迷学习的最近
可以注意到,slot这里面的东西调用的时候默认展示出来了
在看一种用法
在父组件里调用:沉迷学习的最近
这时候渲染出来是这样的:沉迷学习的最近
可以看到 我在父组件调用child的时候,如果在里面加了自定义的标签,或者是别的组件的时候,是会覆盖子组件里的slot内的内容的,这就是slot的用法,当然还有一种用name来覆盖的方法,就不赘述。
看这个问题的原因是来自有位朋友说了这种组件是怎么封装的沉迷学习的最近
5.昨天同事还跟我说了一下webpack的alias设置,现在是终于懂了路径的问题,配置的地方在这里
沉迷学习的最近
还有一些零碎的东西,记得不是很清楚了,下次在写吧。