switer / switer.github.io

Personal homepage
https://switer.github.io
5 stars 0 forks source link

Web UI, 声明大于编程 // TBD #16

Open switer opened 10 years ago

switer commented 10 years ago

Why declarative

  1. 我们使用HTML去描述页面结构,而HTML是一门声明式的语言,声明式编程语言描述UI会比过程式编程的Javascript更直白,少绕弯
  2. JS 更多倾向于辅助添加界面的交互行为
  3. 我们通过封装JS的行为,在HTML上以声明式的方式使用
  4. 原因是HTML为主?JS为辅?(操作对象,HTML声明式语法操作的是自身属性/DOM,省却了选中的过程)
  5. 封装JS行为,以声明式方式添加在HTML上与传统的在HTML上添加模板逻辑在本质上有何差异? (传统的模板逻辑只是将行为逻辑承载对象从JS文件中迁移到HTML上,本质上还是JS的语法逻辑, 和声明式没有关系。JS逻辑写在模板里会导致模板里的JS逻辑脱离模块的JS上下文环境,形成功能孤岛,甚至僵尸逻辑,而且大量的JS逻辑在页面中会扰乱了HTML声明式的语法环境)
  6. 简单明确的生命过程,只在自身DOM ready后添加行为,处理被准备好的数据(正因为是简单所以才直白)
  7. 假如 HTML 作为组件模块入口,HTML 承担着控制器的身份,HTML指令(Such as DOM属性)模块该对 DOM 做些什么(What)而不是怎样作(How),弱逻辑

    Javascipt 辅助

  8. HTML的声明行为,是在DOM ready之后附加的操作,有业务需求要在DOM ready之前(被渲染前)进行DOM处理(例如根据数据动态决定是否添加DOM)
  9. 声明式语法的封装
  10. 数据的加载逻辑,HTML模板只负UI职责,使用数据、渲染数据。数据加载需要交给JS处理