DDM: 一个简洁的前端领域模型库


prtyaa
prtyaa 2023-12-25 15:09:22 50858
分类专栏: 资讯

一个模型多个上下文的问题

对于我们的几个不同业务情景下,我们只使用同一个后台API的情形。如下图所示:

在我们的Blog Model里,我们有Author、Title、Slug、Content、Data几个字段。

而在我们使用的时候,我们需要依据这个模型应用到不同的场景下:

  • 面向读者的Model,只有Tag、Title、Author、Date、Content五个字段。
  • 面向SEO时,只有Tag、Title、Date、基于Content的Description四个字段。
  • 面向RSS时,则有Title、Author、Date、Content、Slug五个字段。

如果我们使用的是同一个模型,那么我们就很难做到分离上下文。并且在三种不同的场景下,Blog Model的含义都是不一样的:

于是,我们就需要想办法去区分不同的模型——这在后台来说是一件很容易的事:

但是在前台谁想这样做?在这其中使用复杂的OO思想?

所以,我们有了DDM。

DDM

我也想不起来为什么是Domain Double Model,大概是Frontend算是一个Model,后台算是一个Model。反正这个库就是叫这个名字了。

对于前台来说,一种理想的方式就是直接Clone一个Blog对象,然后从中获取所需要的字段了。

ddm.get(['Date', 'Tag', 'Content', 'Title', 'Author'])
  .from(orignBlog)
  .to(ReaderBlog);

在一些博客里,如我的Django驱动的博客,Tag是属于另外一个API,就需要另外ADD

ddm.get(['Date', 'Content', 'Title', 'Author'])
  .from(orignBlog)
  .add('Tag', Tag)
  .to(ReaderBlog);

对于一些复杂的例子,我们就需要一个简单的Handle函数,如:

function handler(content) {
  return content[0];
}

ddm.get(['Date', 'Tag', 'Slug', 'Content'])
  .from(originObject)
  .handle("Content", handler)
  .to(newObject);

对,就这么简单和任性.

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=30464
赞同 0
评论 0 条
prtyaaL2
粉丝 1 发表 2553 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2993
【软件正版化】软件正版化工作要点  2912
统信UOS试玩黑神话:悟空  2889
信刻光盘安全隔离与信息交换系统  2771
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1303
grub引导程序无法找到指定设备和分区  1278
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  172
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  171
点击报名 | 京东2025校招进校行程预告  166
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  164
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
我有15积分有什么用? 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
信创再发力!中央国家机关台式计算机、便携式计算机批量集中采购配置标准的通知 8

加入交流群

请使用微信扫一扫!