项目使用 RequireJS 来管理模块加载
API.js
模块用于管理所有的 urlrequest.js
模块用于发送数据请求calender.js
为页面的一个组件,可以根据数据渲染出需求想要的样式
⭐️ 实现原理: 因为 jQuery 中的 $.get()
方法也是通过 Promise 进行了封装,最终返回的是一个Promise对象,因此这样我们就可以将数据请求与数据处理放在不同的模块。维护起来就更加方便了,代码结构也足够清晰。
在我们常会有一个需求是将图片放到一个块中,比如头像、某些图片列表。但源图片很难保证长宽比例的一致,将图片放入一个固定宽高的块(div)中。如果我们通过 CSS 设置图片的宽高,就很有可能导致图片的变形。 我们通过定制一个组件来解决这个问题。期望图片能够根据自己的宽高比,合理的缩放,保证在这个块中不变形的情况下尽可能的显示更多的内容。 当图片宽度值过大时,我们期望图片的高度为 100%,并且左右居中。 当图片高度值过大时,我们期望图片的宽度为 100%,并且上下居中。
imgCenter.js
用于定制图片填充模式的组件imgLoader
用于加载图片的模块
⭐️ 实现关键:在 imgLoader
模块中让绑定 img 元素的 onload 事件,并返回一个 Promise 实例。在imgCenter
模块中运行imgLoader
在返回的 Promise 实例 then 方法中定义函数来处理图片。
利用Promise,当我们点击确认时,状态变成resolved,点击取消时,状态变成rejected。这样也方便将弹窗生成与后续的操作处理区分开来。