编写可维护的javascript

    第一部分 编程风格

  1. 基本的格式化
    1. 缩进层级
    2. 语句终止
    3. 行的长度
    4. 行的分隔
    5. 命名
    6. 直接量
  2. 注释
    1. 单行注释
    2. 多行注释
    3. 书写注释
    4. 文档注释
  3. 语句和表达式
    1. 括号对齐
    2. 语句块间距
    3. switch语句
    4. with语句
    5. for循环
    6. for in 循环
  4. 变量、函数和操作符
    1. 变量声明
    2. 函数声明
    3. 函数调用间距
    4. 立即调用的函数
    5. 相等比较
    6. eval()
    7. 原始值的包装类型
  5. 第二部分 编程实践

  6. UI层的松耦合
    1. 什么是松耦合
    2. 将JavaScript从CSS中抽离
    3. 将CSS从JavaScript中抽离
    4. 将JavaScript从HTML中抽离
    5. 将HTML从JavaScript中抽离
  7. 避免全局变量
    1. 全局变量带来的问题
    2. 意外的全局变量
    3. 单全局变量
    4. 零全局变量
  8. 事件处理
    1. 典型用法
    2. 规则1:隔离应用逻辑
    3. 规则2:不要分发事件对象
  9. 避免”空比较”
    1. 检测原始值
    2. 检测引用值
    3. 检测属性
  10. 将配置数据从代码中抽离
    1. 什么是配置数据
    2. 外化配置数据
    3. 保存配置数据
  11. 抛出自定义错误
    1. 错误的本质
    2. 在JavaScript中抛出错误
    3. 抛出错误的优点
    4. 何时抛出错误
    5. try-catch语句
    6. 错误类型
  12. 不是你的对象不要动
    1. 什么是你的?
    2. 原则
    3. 更好的方法
    4. 关于Polyfills
    5. 阻止修改
  13. 浏览器嗅探
    1. UserAgent嗅探
    2. 特性检测
    3. 避免特性推断
    4. 避免浏览器推断
    5. 到底该怎么办?
  14. 第三部分 自动化

  15. 文件和目录结构
    1. 最佳实践
    2. 基本结构
  16. Ant
    1. 安装
    2. 打包文件
    3. 运行打包
    4. 目标操作的依赖
    5. 属性
    6. Buildr程序
  17. 校验
    1. 寻找文件
    2. 任务
    3. 增强的目标操作
    4. 其他方面的增强
    5. Buildr任务
  18. 连接和加工
    1. 任务分解
    2. 行结束符
    3. 头和尾
    4. 文件加工
  19. 文件精简和压缩
    1. 精简(Minification)
    2. 压缩(Compression)
  20. 文档化
    1. JSDoc Toolkit
    2. YUI Doc
  21. 自动化测试
    1. YUI Test Selenium引擎
    2. Yeti
    3. PhantomJS
    4. JsTestDriver
  22. 组装到一起
    1. 被忽略的细节
    2. 编制打包计划
    3. 使用CI系统
  23. 附录:JavaScript编程风格
  24. 附录:JavaScript工具