apache中关于ProxyPass和ProxyPassReverse的配置

作者:JerryXia | 发表于 , 阅读 (0)
对于ProxyPass很好理解,就是将本地的url请求映射到远程的url请求(上面的配置表示将本地的/foo下的请求映射到远程的http://foo.example.com/bar)。
对于ProxyPassReverse就不怎么理解,这又是干嘛的。其实这个配置是针对远程请求出现302重定向的时候发挥其功效的。假设本地的ServerName是local.test.com,当远程响应302重定向时,本地的apache代理服务器做了一件事,将请求地址改为本地的/foo进行重定向。
例如:远程的http://foo.example.com/bar响应302重定向到http://foo.example.com/bar/login,那么apache会将重定向地址调整为http://local.test.com/foo/login。
...阅读全文

css animation的十二个原则

作者:JerryXia | 发表于 , 阅读 (0)
css animation的十二个原则CSS的Animation是一个很有意思的东西,也是CSS中较为复杂也难设计的一部分。熟不知在Web的动画设计中有12个关键原则。在Animation 101将这十二原则剖析出来。今天特意转载@刘英滕翻译《Animation Principles for the Web》的中文
作为前端的设计师和工程师,我们用 CSS 去做样式、定位并创建出好看的网站。我们经常用 CSS 去添加页面的运动过渡效果甚至动画,但我们经常做的东西不会超过这些。
动效是一个有助于访客和消费者理解我们设计的强有力工具。这里有些原则能最大限度地应用在我们的工作中。
迪士尼经过基础工作练习的长时间累积,在 1981 年出版的 The Illusion of Life: Disney Animation 一书中发表了动画的十二个原则 (12 Principles of Animation) 。这些原则描述了动画能怎样用于让观众相信自己沉浸在现实世界中。
在本文中,我会逐个介绍这十二个原则,并讨论它们怎样运用在网页中。你能在 Codepen 找到它们全部的开源 HTML 和...阅读全文

position sticky

作者:JerryXia | 发表于 , 阅读 (0)
什么是position:sticky用户在浏览网页时已经习惯导航栏、菜单栏、搜索筛选栏等常用操作的工具栏始终停留在窗口的顶部。页面滚动到某处将元素固定在窗口某个位置的布局方式,我们称之为黏性布局。
在pc端,为了实现这种布局,通常的做法是监听window的scroll事件,判断页面滚动到某个元素时,把元素的position设置为fixed,否则,取消fixed。
然而在移动端浏览器,这种效果就不够平滑了,特别是在ios设备上。因为在ios设备上,当页面滚动时,会暂停所有js的执行,直到滚动停止才会继续执行js。因此,scroll事件在页面滚动的时候并不会被触发,而是在页面停止滚动的时候才触发。
这样导致的一个结果是,无法通过监听scroll事件来实现黏性布局,那么监听touchmove事件可以做到吗?
答案是同样做不到。
在touchmove的过程中可以实时地执行回调,但是在手指离开屏幕,页面继续减速滚动,直到听下的这段过程,js还是无能为力。
position:sticky就是为了解决这个问题而引入的一个试验性属性。position:sticky表现上是position:...阅读全文

初识Koa(二)

作者:JerryXia | 发表于 , 阅读 (0)
我们已经知道了thunks是如何工作的,现在来看看其他类型吧
并行执行var read = thunkify(fs.readFile);co(function *() {// 3 concurrent readsvar reads = yield [read('input.txt'), read('input.txt'), read('input.txt')];console.log(reads);// 2 concurrent readsreads = yield { a: read('input.txt'), b: read('input.txt') };console.log(reads);})();如果在yield后面是array类型或者object类型,那么将会并行执行。需要注意的是数组或对象的成员必须是thunks或者generators,还可以相互嵌套。如下所示:
var read = thunkify(fs.readFile);co(function *() {var a = [read('input.txt'), read('input.txt')];var b ...阅读全文