为什么我们要用框架开发

41 阅读3分钟

背景介绍

前端的需求的升级:从展示静态页面到要求高交互性

以前的开发:直接操作原生dom。存在的问题:

  • 需要熟悉dom操作的API
  • 使用相对底层的dom进行操作,会导致代码比较冗长
  • 需要知道每个用户动作之后,需要执行什么副作用,如果副作用较多则容易有遗漏导致出差错
    • 以to do list为例,比如添加了一个新的待做事项之后,就需要1. 更新待做事项列表 2. 更新未做事项数量(compute);
    • 完成了一个待做事项,则需要1. 更新待做事项列表,把这个已做事项删除(dom删除); 2. 更新已做石像列表,添加这个事项(dom增加); 3.更新统计表格,把所有相应数据/图表进行更新

使用原生dom api 进行开发

developer.mozilla.org/zh-CN/docs/…

vue和jquery的开发对比:www.smashingmagazine.com/2018/02/jqu…

  • jquery需要关心dom结构
  • jquery只能使用log进行debug,而vue有自己的专属工具
  • 代码风格的改变:
    • vue:陈述式 declarative
    • jquery: 命令式 imperative

框架带来的好处

  • 解决高交互需求下,UI更新麻烦,开发体验不好的问题----提高开发体验----》 声明式数据驱动UI开发体验
  • 由于前端的需求基本就是围绕数据进行,所以数据驱动的核心思想很贴合前端需求 -------》框架提供的响应式数据
  • 提供软件开发的意见(可预测性、同质性),有利于软件的规模发展
  • 框架本身的api设计、开发核心思想(心智模式、哲学),为开发人员提供了一个成熟的设计架构参考,有利于软件的发展
  • 提供社区工具、组件化开发、路由(现成的解决方案)
  • 工具类-》提高开发效率

框架带来的问题

  • 框架的学习成本

    • 本来使用框架的原始目的,是为了提高开发效率,但是使用框架的方法是需要学习的。而且在之前每天一个新框架的时代中,框架的学习成本其实是很高的,因为程序员也不知道哪个框架会成为下一个风口。个人看到的影响有:1. 新老项目技术栈不一样,对团队的技术栈提出了要求;2. 在框架迭代速度快的情况下,团队招人的时候,也比较难找到老框架的适格者。
  • 过度工程化

    • 框架可能会带来过度设计的问题。那么对于大项目来说如鱼得水的功能,对于小项目来说反而是影响灵活性的负担。
  • 更大的代码基线和抽象

    • 更大的运行时:声明式编程提高了开发体验,但是最终还是要框架将声明式编程转换成dom的命令式操作,那么框架不可避免的会带来更大的运行时或者更长的编译时间。这个对于小型设备而言可能是一个致命的本质优化问题(见svelte框架,该框架为了提高在小型设备的运行性能,去除了运行时)。
    • 容易忽略HTML的语义化,并降低应用的可访问性(图片挂掉了,需要有一个alt提醒这个图片里有啥)。
    • 模糊开发应用的优先级。框架可以帮助我们更快的开发出复杂的web应用,同时也掩盖了我们应该关注的其它问题,比如说性能和可访问性。如果我们在开发的过程中没有注意这些事情,日积月累的寒冷将会导致冰冻三尺,到时候再用重构解决,将会付出巨大的代价。

怎么选择框架

  1. 支持的浏览器
  2. domain-specific langanges:主要考虑团队的学习成本
  3. 强大的社区支持
  4. 良好的文档支持

框架比较的维度

  1. scope
  2. 模板
  3. 编译

参考资料