JS确实不容易,CSS也是。
@
mengzhuo 两年多前端经验的过来挑战下:
CSS
1. IE 6 7 8和国内各种浏览器兼容性怎么解决
JS兼容性一般 Jquery1.x 即可解决,对于CSS兼容性有几种方式,一种是特殊的css标记,比如_width, *width 让特定的IE浏览器识别,IE6兼容性问题其多,经典的如双倍 margin,不支持dispaly:inline-block, select input控件阻挡iframe等问题...这里珍爱生命就不一一列举了。
2. 怎么做手机浏览器的兼容或者适当降级
手机浏览器做的不多,似乎遇到的问题多是两种,一是适应多种屏幕分辨率的情形,二是某些手机浏览器不支持某些CSS3标签的情形,对于一,可以使用响应式设计,即通过媒体查询,为不同宽度的屏幕指定不同的样式,对于二,可以使用moderniz对手机浏览器的css属性进行特性嗅探。若存在css3标签不支持的情形,则用JS动态的设置兼容的CSS属性。
3. 一开网站CPU 100%怎么破
100%是由于启动网站时长时间执行了过多脚本。
实际上,如果合理的分模块的话,通常一个网站首页是不需要初始化那么多JS模块的。
可以使用AMD/CMD标准,即按需加载模块,尽量延迟执行依赖模块。具体可以参照requirejs 延迟执行 的官方文档。
JS
1. 怎么做数据双向绑定 以便和Java写的Restful API对接
这个问题问的不太好。
数据传输一般采用AJAX + JSON格式,即可与JAVA通讯。
而双向绑定一般指的是前端从 View层 及Model层的双向数据绑定,一般而言大项目而言,类似angular这样的双向绑定框架,由于dirty check会存在性能问题,建议使用 react.js/ flux 类似架构的 单向数据流动,或是Ember的属性设置方式实现。当然了,要兼容IE6/7进行上述的双向绑定的话,暂时我只看到avalon有一种使用VB方式实现的形式。总的来说,除非是试验性项目,否则不建议使用双向数据绑定。
2. CSRF防跨域,又兼容JSONP跨域传数据
Httponly即可防范所有cookie攻击。
这里问题并没有具体描述用例场景,我按我的理解扩展一下
在不打开Httponly的前提下,网站A 需要向网站B 通过JSONP获取JSON数据,同时网站A中若打开 网站C,在C中进行任何操作均不影响A的安全性。
可能我的场景列的不太准确,个人觉得上述两者关联性不是很大,JSONP只是动态的在DOM中创建script标签并等待响应返回即可。而对于其他外链的网站的CSRF跨域攻击,比如网站C,可以通过先跳转到一个其他域名的(比如:
subdomain.A.com)公共页面再提供按钮跳转到 C.com来防止携带
A.com 的cookie。另外也可以对每次客户端的post请求添加一个随机数供服务器端来确认用户身份。
抛砖引玉,欢迎讨论。