请假半个月回学校准备考试,这周正式恢复上班~
这周还是做的活动页需求,本来预计2,3个接口完成的活动页因为后面两部分不需要后台,最后只剩一个接口,以为这是个很快可以完成的小玩意,两天半还做,还是测到了周五...与此同时也在准备开始动画的项目,准备用React配合Rematch重构之前的代码,但是目前还没有什么头绪...
这周遇到的坑有几个:
1. IE9下使用 ```absolute```+left,right,top,bottom: 0 ,内部元素定宽高实现垂直居中的坑:IE9下定宽高如果使用的是 ```max-width``` 是无效的,必须使用```width```。这个还好解决。
2.
``` ```window.open()```的两个坑:
一、使用```window.open()```唤起下载链接在 IE7,8会调用失败,可以换用 ```window.location.href```可以调起下载页。
二、 ```window.open()```在以下几个情况下会被当做广告拦截:
· 页面刚打开,用户还没操作就调用```window.open()```试图打开一个页面,会被认为是广告。
· 在调用了一个异步请求后调用```window.open()```会被认为是一个广告被拦截。解决方案是把需要请求的东西先在另一个函数做好请求,不要在```window.open()```之前发请求。网络上有文章说有异步调用+```window.open()```就会拦截,实测是异步请求+```window.open()```会被拦截。
3. jQuery 事件绑定的可重叠:如果有一个函数,每次调用他就给一个按钮做一次jQuery事件绑定,这样一个按钮点击一次会导致触发多次事件,解决方案是每次调用完就把事件用```unbind()```清除元素上的事件。
4. 要可兼容地获取时间戳,要使用```new Date().getTime()```。
一些做网页需要注意的细节:
1. 不要对一个可能不存在的数组变量取 ```xx[0]```,这会报 ```Uncaught ReferenceError```;
2. 对要在 url 上带查询字符串,从查询字符串取数据发请求的,可以先写一个默认数据,如果 Url 上没有这个查询字符串就取默认值,这样也方便调试。
这周空闲时间钻研后端比较多,看 koa2 ,后端数据请求到响应的流畅大概是:
不同的请求 url 对应到不同的 router,router 根据请求方式不同(get,post...)将请求交给不同的 controller,controller 负责请求的接收与回复,那么中间这一段对请求数据的处理交给谁呢?交给 service 层,service 层是业务层,根据不同的业务场景调用不同的 modal 层 API,所以 service 层一般复用性不高, modal 层呢,是处理数据的,做数据库的增删改查的,又叫 Dao 层,这层的复用性就很高了。
前后端不分离的情况下,登录状态登录的实现就是通过后端验证用户登录成功后生产一个session,将 session 保存在数据库,发一个带 ```Set-cookie```的响应,将一串 hash 保存在用户浏览器,每次用户发请求时就带上这个 Cookie 去访问,后端跟服务器的 session 比对就知道用户有没有登录或者其他信息。
还有一个是更加理解了为什么要用 Node 去做中间层请求转发:如果后端的每个接口请求的数据细粒度很高的话,就是一个接口只能读到一丁点数据,假设有个个人中心页面,这个页面有用户信息,用户购物车记录,用户商品推荐目录,每一块需要用到一个接口,如果我设计一个接口,只要请求这个接口,这个接口就会自动取请求以上三个接口,帮我做数据整合,这样我只要做一次请求,就能得到三个接口的内容,虽然实际上还是做了三次请求,但是用具有异步特性的 Node 来做请求转发无疑是再合适不过了。
网友评论