最近觉得有点遗憾,一个多月了没有学到系统得学到一些东西,更多的是碎片化的收集知识,没有形成一个体系。但是觉得还是有必要写一篇总结,说不定会有新的发现。
React 装载、更新、卸载时的生命周期,更新更是有两种不同类型的生命周期。服务端渲染中没有componentDidMount
这个生命周期,因为服务器端没有DOM树可以挂载,所以也没有DidMount这么一说。
IE8 以上的透明度使用opacity = .8
,IE8 使用-ms-filter: "alpha(opacity=85)"
,注意-ms-
前缀,IE8 的透明度是用滤镜实现,记得还有双引号。在 IE8 使用 png 按钮做透明度hover的时候还发现一个坑,鼠标移上去的时候发现图片周围透明的部分会变黑,网上的答案是说 IE8 不支持png-24格式的Png图片要用png-8的png,然而换了格式依然有黑边,最后用 jpg格式的图片代替实现了。
后来产品说在手机端的页面也要加一个点击后透明度变化的效果,因为移动端的特殊性,总是要有奇怪的姿势去实现。除了给按钮添加:active
之外,对苹果手机,还有在document
上绑定一个touchstart
事件,
document.body.addEventListener('touchstart', function () { });
还有算是体会到了这句<meta>的妙用了:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
这句话可以控制IE以最高版本的IE打开页面,IE浏览器有两个模式——浏览器模式和文本模式
用户的浏览器很有可能出现一个是 IE8 一个是 IE9 的问题,一个是旧的都会导致样式不一致,用了上面的<meta>就可以让这两个模式都是默认最高。
顺便查了一下 X-UA-Compatible 这个东西,发现他是 IE8 之后出现的一个设置(IE7 下无效),可以指定网页的兼容性设置。
网页判断用户设备做跳转:利用navigator.useragent
,与一个移动端设备字符串数组,判断属性中是否出现过这些名词,是就判定为 Mobile 利用window.location.href
把页面切到移动端页面。
上上周做了一个页面模版,就是一个活动页抽成模版以后给运营那边配让他们自己上线活动就行。要求抽出雪碧图和文字可配置。
CSS使用雪碧图的处理是给每个用了雪碧图的元素加一个"_sprite"的class ,class里只有一个样式就是背景图的 url 。而且为了抽出一张配置表,不让运营直接改<style>
,一来方便运营二来防止操作失误页面挂掉。
这样的话就要用到 js 的全局属性,在 js 中动态创建 <style>,颜色放在 js 对象里,从 js 中取出。同事牛逼的是把这段 js 不是写死在 html 的,而是通过 webpack 动态插入的。
用 node 试了下爬虫,cheerio + supergagent,爬豆瓣的个人相册,实现自动翻页下载全部相册,爬了几个后发现 IP 就被限制了... 看到的方法是去找免费代理网站,爬代理网站的 IP ,再一个一个去试能不能用,把能用的放进数据库,然后用 IP 代理去爬。
研究了算法,一直很想知道的动态规划,发现初级动态规划不难理解,解决斐波那契数列,爬楼梯问题。即可以使用递归,也可以使用自底向上叠加求最终问题的解。还要一个是找硬币问题,发现很多面试笔试的算法题其实都是经典问题。还有 JS 实现链表和数,现在看来没有初看那么难了,但是就是要这样一遍一遍地看才能换来现在的觉得容易,昨晚想快速排序想到12点才走,今天早上再看已经恍然大悟可以手动实现快排了,快排的思想无非是在每次排序后,都让数组左侧的数都小于分割点,右边的都大于等于分割点。再递归。
最近在研究Redux的使用,Redux的使用还是有一定学习曲线的,看了一些资料后有了大概的了解。Redux的思想是函数式编程,数据的单向流动。这与Vue的MVVM思想不同,view对数据的修改会实时反映在viewModule上,而Redux对数据的操作需要定义action,用一个dispatch
去触发这个action,而action并不会改变数据,它更像一个记录者,把发生动作的这件事记下来,发到reducers
,由reducers
根据action.type
看看你希望reducers执行哪个类型的action,然后把新的状态与旧的状态合并,迭代出一个新的state。
因为Redux对“纯函数”的追求,限定了redux不能做异步的网络请求操作,因为这会改变state