ie6-8 avalon2 单页应用项目实战备忘

坑爹的ie,做为小组leader,尼玛,小伙伴儿们不乐意作的事情,我来作好了。。心累、、、css

若是,各位同窗有定制开发ie6-8版本的需求,仍是尽可能不要用单页应用模式了,也不要用avalon这类mvvm框架了,也不是不能作,这种mvvm模式写起来仍是挺爽的。html

只是一旦在 ie6上遇到奇葩问题,你会很闹心,这个风险在工期约束比较紧的状况下,尤为须要注意。html5

 

基础框架

本项目为单页应用,框架搭建为:avalon(双向数据绑定)+requireJS(js及模板动态加载)+director(路由管理)jquery

avalon

  • 只用到了数据绑定和指令,其余如组件等未使用

requireJS

  • 业务代码(js&&html)模块化加载
  • html模板动态加载使用require的插件text.js实现

注:css在scss中引入命名空间,实现的模块管理(原则上也能够作require动态加载,可是没大必要了)git

director.js

  • 很是优秀的路由管理库。git地址:https://github.com/flatiron/director.js (调研过竞品page.js,其开发文档以及ie6-8支持度远不如其文档描述的那样友好,果断放弃)
  • 一些源码改动。由于业务中须要设置document.domain,这会致使ie6-8中操做或者访问location对象或者iframe时遇到不一样程度的“拒绝访问”限制,因此,手动修改了director.js的源码,改动部分见内网项目

js&&css 兼容性

最佳实践:
尽可能避开使用ie6-8不支持的特性(如css属性选择器等等等等),由于多数polyfill并不像他们声称的那样靠谱(好比ieBetter、selectivizr)

一些可用的polyfill

  • 少许代码段 一些特性几句代码便可支持,如html5标签支持、IE6背景图闪烁es6

  • es6-promisegithub

  • jquery.placeholder(不是特完美)promise

相关文章
相关标签/搜索