冉冉说
我的理解很浅薄,尝试回答题主的问题。在这些现代前端框架没出现之前(react、vue、angular),我们做一个点击后更新列表的功能需要这样。$('#btn').click(function(e){
$.ajax({
url: 'some/url',
data:{
$(e.target).data(id)
},
success: function(data){
$('#list').append('
' + data.name +');}
})
})我们的代码需要知道怎么去做,这会带来一些问题:使dom中的状态和保存在数据库中的数据同步是困难的,你可能会使用观察者模式或者根据响应重新渲染数据。这本身就是很麻烦的事情,同时如果我们除了操作dom之外;需要对数据做其他的操作怎么办?如果点击按钮之后,ui的其他部分需要更新怎么办?这些问题会使我们使用多层回调,使代码深度耦合;每一次更改都是非常麻烦的,也是不方便做测试的。以上的方式被称为命令式编程,我们的代码需要知道怎么去做。幸运的是,现代前端框架使用声明式编程;我们只需要关注做什么,它们有一个持久的模型层(数据层),dom会随数据自动的更新;你不用写任何代码更改dom,也不应该这样做。框架负责改变dom。先写到这里,至于react和vue的流行很大一部分原因它们都有虚拟dom;使dom更新时有良好的性能。rn可以让你写一份代码,运行在android和ios两个平台。相对于web app和混合式开发,性能更好。