美文网首页
关于前端使用Model的思考

关于前端使用Model的思考

作者: 圆脸黑猫警长 | 来源:发表于2021-03-31 23:18 被阅读0次

在项目开发的时候MVC是最常用的代码组织方式,其中M(Model)层的往往使用使用最简单的方式,即只将其当做存储数据的模型。以前在开发移动端的时候Model的使用更是十分频繁,甚至于每一个页面就会有一个Model。然而最近使用Vue写页面却发现到一个问题:几乎不使用Model去管理页面。

一、为什么不用?

根据实际写代码的角度有以下几点:

1.JS本身对于Object定义简单

对于其他语言比如OC,Key-Value只是一种数据结构,而不是对象,在使用的时候往往会先转成Model再去使用。而在JS中Key-Value也是对象,这样接口的返回值本质上就是一个json对象。那么在使用时简单的使用obj.key即可,本质上是直接使用Model,然而这样并不能体现出Model的优势。

2.页面数据独立性高,功能单一,数据传递少

前端页面大多是比较独立,页面切换也只会有少量数据传递,往往一个页面就一个接口。写Model传值会极大的增加代码量。

3.JS的模块化约束以及编译特性

出于历史原因,常用的几种JS的IDE对于对象属性的提示不尽如人意,这样在使用Model的时候不能方便的进行代码提示。比如有一个模型m,在页面A、B使用的时候都需要去看m导出的可用属性,并不能方便的代码提示。

4.框架设计层面

现有框架中设计中已经考虑到这点,比如Vue中的数据会放到data中,这样就把数据聚合到一起,起到替代Model的作用。

缺点:

1.直观性差,没有模型去对应页面显示的数据内容。
2.独立性差,完全取决于接口返回值字段,这些字段往往会代表其在数据库中设计上的含义,而不是页面中的含义,所以在有些情况下会导致页面数据难以理解。

二、什么时候用?

根据上面的优缺点来分析,当某个数据需要在不同的地方进行共享、传递、修改等,则使用一个全局的Model更为友好。一个典型的应用场景是购物车:用户在不同的地方添加商品到购物车中,购物车也在不同的地方可以查看。
但是,在框架层面往往我们有更好的替代方案,比如在Vue中的Vuex。

相关文章

网友评论

      本文标题:关于前端使用Model的思考

      本文链接:https://www.haomeiwen.com/subject/pbgahltx.html