前端框架到底在干一件什么事?

琢磨近10年前端领域出现的框架,它们几乎在干同一件事,那就是,怎么做到使“界面”“事件”“数据”三者可以更分离,但又合理串联在一起。界面用于呈现,事件用于交互,数据用于内容,这三者构成了前端开发的最底层核心要素。但是,就目前市面上的框架而言,仍然没有做到完美。举个例子,react算是最热门的框架之一,然而,它自己内部去实现了一整套事件系统,这样的坏处是,它不能和DOM原生事件同时使用,否则会出问题。而DOM原生事件和界面又完全绑定在一起,这就使得类似jquery这类框架无法实现数据响应。而virtual dom的出现,解决了数据和界面之间的响应关系,但是仍然无法解决数据和事件的双向响应(vue里面有较弱的实现)。因此,我觉得,更舒服的编程方式是,要进一步在现在已有的成果基础上,继续提炼事件这个维度,要让交互抽象后独立于界面和数据。当一个交互发生时,它不需要在事件系统中去写有关修改数据的操作(例如react里面要用setState),也不需要在事件系统中去写界面改动的代码(backbone就需要在事件发生后去操作DOM来实现界面变化,jquery也是)。未来新的框架应该是,抽象出“界面”“数据”“事件”,将它们单独分开放置,再由框架内部将它们串联起来。开发者应该关心使用什么模板去呈现界面,使用什么数据去渲染内容,使用什么事件去响应交互。而不需要关系,当用户进行了某个操作(交互)应该触发什么事件,然后去修改哪个数据,实现界面的变动。

这样的编程方式,和MVVM完全是两种思路,希望真的有机会看到这样的库可以出现。