Mirage学习笔记
前两个月因为工作变动开始接触到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学习笔记相关推荐
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 2020年Yann Lecun深度学习笔记(下)
2020年Yann Lecun深度学习笔记(下)
- 2020年Yann Lecun深度学习笔记(上)
2020年Yann Lecun深度学习笔记(上)
- 知识图谱学习笔记(1)
知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...
- 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记
计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...
- 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 ...
- MongoDB学习笔记(入门)
MongoDB学习笔记(入门) 一.文档的注意事项: 1. 键值对是有序的,如:{ "name" : "stephen", "genda" ...
最新文章
- 【java】staitc
- leetcode3 无重复字符最长子串
- 苹果对其语音助手Siri进行显著改进:今秋将有7大新功能
- SSAS的MDX语句整理
- 现在web前端的工资怎样?
- RemObjects SDK ThDataSet总结
- Python爬虫实战之爬取链家广州房价_02把小爬虫变大
- cisco服务器桌面命令行窗口,WLC调试和显示命令
- c语言中的绝对值符号
- dxp全称_ad对应的器件名称
- Inc. magazine年度公司Evernote: 小小记事本如何风靡全球
- Mongoose Schema 和 SchemaTypes
- 性能测试指标及常用监控工具
- COVID-19席卷全球,看看GIS建模可视化能做些什么
- Linux设备驱动编程第三版-笔记
- ios中用AFN做https
- centos7无盘启动_从无盘启动看Linux启动原理
- jQuery判断email地址 邮箱地址 email regex
- flink DataStream returns 设置返回类型
- 机器学习-了解逻辑回归的逻辑过程
热门文章
- [转]Oracle字符串拼接的方法
- 淘宝网物流宝平台11日上线 全面开放API接口
- 速修复!这个严重的Zlib内存损坏漏洞已存在17年!
- TLStorm:APC UPS 存在零点击0day,可远程烧毁设备、切断电源
- 苹果修复三个已遭利用的 iOS 0day
- 88. [ExtJS2.1教程-5]ToolBar(工具栏)
- ThinkJava-压缩
- Qt Model/View/Delegate浅谈 - QAbstractListModel
- 调整自己,必须调整自己了
- JavaScript 中 2个等号(==)和 3个等号(===)之间的区别