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


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

    如果,各位同学有定制开发ie6-8版本的需求,还是尽量不要用单页应用模式了,也不要用avalon这类mvvm框架了,也不是不能做,这种mvvm模式写起来还是挺爽的。

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

     

    基础框架

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

    avalon

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

    requireJS

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

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

    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-promise

    • jquery.placeholder(不是特完美)

  • 相关阅读:
    es6中promise的实现及原理
    移动端
    javascript知识点复习
    html和css基本常识总结
    kafka,查看指定group下topic的堆积数量
    解决问题:Android设备运行自动化脚本报错 ioerror RPC server not started
    linux下安装python3
    使用vsftpd搭建FTP服务
    前端性能监控平台showslow+Yslow搭建
    学习笔记-- Python网络编程
  • 原文地址:https://www.cnblogs.com/youryida/p/7259528.html
Copyright © 2020-2023  润新知