toxic-johann / toxic-johann.github.io

my blog
6 stars 0 forks source link

【2016-01-01】最近做过的一些事 #8

Open toxic-johann opened 7 years ago

toxic-johann commented 7 years ago

很久都没有空写博客了。难得元旦,回来记录下最近做的事。

svg

svg还是一个挺有用的属性,用来绘制一些想要的形状。他最大的优点是可以随便切换颜色。这很符合我们的组件需求。

内联svg还是比较容易的,直接在页面上写入代码就好了。支持度还是不错。

当然你还有很多种方法使用svg,例如在属性的backgroud上写入svg代码,又或者直接引入svg图片。

不过这里需要注意一个点,在android手机上,svg得stroke-width:0px属性会失效。因此如果你又有stroke属性,又需要调整它的宽度为0。在安卓手机上你可以直接把stroke设为transparent或者移除等等。

微信授权页面跳转问题

这算是一个颇为常用的场景。一个web应用,走到某一步需要跳转微信进行授权,但是微信授权完毕后是一个redirect,给你带回来一些微信上的信息。这相当于重新打开一次你的应用。这对于客户体验来说未必是最佳的。

那么也就是说,我们在微信授权的时候,要记录一下我们现在得web APP的状态。当然办法有很多,例如我们可以写localStorage等等。但是我还死嫌这个办法稍微有点麻烦。

既然微信会重定向到我们这个页面的地址,那么我们只要在这个页面的地址上做些手脚,记录下一些参数表明状态就好。

一般来说我们会才用window.location.hash或者window.location.search属性。但是令人可悲的是,微信会把他们清掉。

不过还是有机会的,微信会在你的页面上读取你的当前地址,无论这个地址是什么形式。那么问题就变得简单了,我们只需要修改window.location.href就可以了。当然我们不能直接更改,那样子会刷新页面,于是就用一个很传统的方法。

window.history.pushState("test", "test", location.href +"some code you need to write");

多说接口利用

多说是个很方便的应用,你只要插入就可以使用,不需要自己架构评论系统。不过有的时候,我们的需求会多一点。比如,我们想在自己的微信公众号的一些页面里面接入多说评论,你就会发现一个很奇葩得状况,你评论竟然要去多说的公众号进行授权。这显然不是我们想要的结果。

于是这个时候,就直接使用多说的接口就好了。

翻阅一下多说文档,我们很快可以找到自己需要得接口,获取评论啊各种。这些按下不表。我们谈谈怎么不授权进行评论。

我采用的是多说的匿名评论接口。不过你很快就会发现,匿名评论下不能写入头像。辣肿么办呢。你可以用其余字段表示你的头像,例如author_url,第一这个字段不常用、第二他也是地址,在数据库保存的格式应该会一致。然后就可以解决这个问题了。

不过多说的所有接口都没有cros设置,因此你要自己进行跨域请求,万幸的是他提供了jsonp的格式。那么就好办很多了。

如果是get的话,直接这么调用

$.ajax({
    url: 'http://api.duoshuo.com/threads/listPosts.jsonp?',
    type: 'GET',
    data:{},
    dataType: 'jsonp',
    error: function(xhr, status, error) {
        console.log(error);
    },
    success: function(data) {}
});

如果是post的话,自己找方法吧。因为我只是评论接口需要post,然后他能够收到,其余的我就不管鸟。

数据的版本系统建立

这个给我的一个很深刻的体会是。如果是主数据,一定要做version版本处理,并且最好备份多一份。然后建立一个升级体系。当升级出错的时候,调用最初的备份,重新升级。能解决很多问题。

一些编写代码的反思

修改了比较多的代码,看到过一个弹窗,每次交互都会进行全弹窗重绘和跟后台数据拉取。

在代码设计的时候,一定要注意组件化,把东西抽取出来。

和后台的交互,要充分考虑到压力和延时的问题。删除不必要的链式等待等等。

CSS样式

CSS真的很强大。最近用calc()属性解决了页面footer的问题。

一般来说,footer最烦的问题是,页面太短怎么办。假如页面太短,footer很容易顶上去,底下留下一段空白,这无疑是极难容忍的。

这个时候,我们需要给中间的content设置一个高度,把它顶下去。那么这个高度真么算呢。

 min-height: 500px;
 height: calc(100% - 200px);

这样设置就好了,首先,根据你的content,给他一个最小高度。以免遇到极小的屏幕,他被收了进去,footer反而一直在页面上看不到一部分。

然后利用calc属性,才用视口高度(100%)减去footer和header的高度,这个是用于屏幕太大的时候,撑开footer和header。

这样子就完美解决了页面过短的时候的footer问题了。