前两个月因为工作变动开始接触到emberjs,由此接触到了mirage。
mirage是ember下的个api simulation。
mirage里的几个概念

  • factories
  • models
  • scenarios
  • serializers
  • config/routes

mirage和ember是紧密耦合的,从chnagelog里甚至能看到在早期mirage是app下面的一个子目录。另外mirage是stub server, 直接拦截了ember app发出的请求,应该是从适配器layer做了拦截。

config里配置mock的路由,类似于express的路由配置,但是其实不是一个真正的server。route里可以直接返回mock数据或者利用model返回。

this.get('/customer/accounts/:id', 'accounts');复制代码

model跟ember app的model不完全一样,这里只定义association。

#models/account.js
export default Model.extend({accountType: belongsTo('account-type'),individual: belongsTo()
})
#models/account-type.js
export default Model.extend({account: hasMany(),
})复制代码

这里belongsTo会让mirage自动去modes下找account-type文件,如果找不到,就会报错。

factory里定义每个字端的返回数据,感觉factory+model才是完整的model。这一层一般会用到faker这个模块,一个类似与mockjs的ember cli自带库。
factory里还可以利用aftercreate hook来生成关联模型的数据。

#factories/account.jsexport default Factory.extend({balance: faker.finance.amount,lastTransactionDate: faker.date.past,number: faker.random.number,name: faker.name.lastName,address1: faker.address.streetAddress,address2: faker.address.streetAddress,afterCreate: function(account) {account.create('account-type',account)}
})复制代码

这里的account-type是model的名字,同时也是文件名,因此mirage会去models或者factory下找accout-type的文件,如果找不到就会报错。

scenario是mock数据的最后一步,真正生成数据的地方。可以

#scenarios/default.js
server.create()
server.createList()复制代码

serializer是组织数据格式的地方,可以对mock data的key 和value 动手术。还可以为associated model加included.

#serializers/account.js
export default JSONAPISerializer.extend({include: ['individual','account-type']
});复制代码

这里的individual会对应与account model里定义的key,否则就没办法把individual关联到accout的include。

ps:
ember里会自动去转化camelCase和dashlize和underscore,但是不能太依赖这个。复制代码

举个例子:
app下的某route发出获取数据的请求:
this.get("store").findAll('post')
实际发出的api为:
${namespace}/posts

notes:
ember 会自动处理plura和singular复制代码

mirage会在adapter层去拦截,去config下找对应的路由,如果找到的话就会执行callback,其中的argumentschema包含所有model layer 定义的model,但这里要注意必须是plura,否则会报错

转载于:https://juejin.im/post/5a0859876fb9a0451e3f466b

Mirage学习笔记相关推荐

  1. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  2. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  3. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  5. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  6. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

最新文章

  1. 【java】staitc
  2. leetcode3 无重复字符最长子串
  3. 苹果对其语音助手Siri进行显著改进:今秋将有7大新功能
  4. SSAS的MDX语句整理
  5. 现在web前端的工资怎样?
  6. RemObjects SDK ThDataSet总结
  7. Python爬虫实战之爬取链家广州房价_02把小爬虫变大
  8. cisco服务器桌面命令行窗口,WLC调试和显示命令
  9. c语言中的绝对值符号
  10. dxp全称_ad对应的器件名称
  11. Inc. magazine年度公司Evernote: 小小记事本如何风靡全球
  12. Mongoose Schema 和 SchemaTypes
  13. 性能测试指标及常用监控工具
  14. COVID-19席卷全球,看看GIS建模可视化能做些什么
  15. Linux设备驱动编程第三版-笔记
  16. ios中用AFN做https
  17. centos7无盘启动_从无盘启动看Linux启动原理
  18. jQuery判断email地址 邮箱地址 email regex
  19. flink DataStream returns 设置返回类型
  20. 机器学习-了解逻辑回归的逻辑过程

热门文章

  1. [转]Oracle字符串拼接的方法
  2. 淘宝网物流宝平台11日上线 全面开放API接口
  3. 速修复!这个严重的Zlib内存损坏漏洞已存在17年!
  4. TLStorm:APC UPS 存在零点击0day,可远程烧毁设备、切断电源
  5. 苹果修复三个已遭利用的 iOS 0day
  6. 88. [ExtJS2.1教程-5]ToolBar(工具栏)
  7. ThinkJava-压缩
  8. Qt Model/View/Delegate浅谈 - QAbstractListModel
  9. 调整自己,必须调整自己了
  10. JavaScript 中 2个等号(==)和 3个等号(===)之间的区别