作为一个前端开发者,我觉得React Native也是一个很酷的东西,本文不涉及React Native的开发相关,只是总结了开发中的一些最佳实践。不仅仅适合React Native。
在进行项目开发时,我们都会将公共的模块抽离出来。在学习React Native的过程中,我也遇到了同样的场景,在此记录下来。React Native使用fetch作为网络请求库,而每个几乎每个模块都需要用到网络请求,那么将其抽离为公共模块甚为必要。
封装HTTP模块的优点
- 代码复用
由于很多模块都会用到HTTP请求,将fetch封装为公共模块可以复用很多代码
- 高内聚低耦合
将公共部分提取出来,可以使每个模块专注于自身的业务逻辑
- 便于项目的扩展与后期的维护,并且做到职责分离
具体做法
首先,在项目根目录下新建utils目录,在utils目录中,新建fetch.js。
要想在其他模块中使用整个模块,首先,我们要将其导出为一个模块供其他模块使用。
export default class fetchUtils { |
fetchUtils模块中应该包含两个方法,分别是get和post的请求方法,下一步,来编写get方法。
static get(url) { |
get方法应该是一个静态方法,接受一个参数url,其返回一个Promise,Promise接受两个参数resolve和reject,用于处理成功和失败的情况,在Promise中,使用fetch发起get请求,然后使用链式函数then来处理服务器返回结果,先取出json数据,当服务器成功返回数据,使用resolve返回结果;当发生错误时,调用catch方法捕获错误。
下面是post方法。
static post(url, data) { |
post方法与get方法类似,也是静态方法,post方法接受两个参数,分别是url和提交的数据data。同样的,post方法返回一个Promise,参数与get方法一样,然后向服务器发送POST请求,post请求需要设置method为POST,还需要设置请求头,请求头包含接受的数据类型和Content-Type,均设置为application/json,最后将用户提交的数据放到body中,使用JSON序列化data。然后需要接受服务器返回的数据,这里与get方法一样,不再赘述。
以上就是封装好的HTTP请求模块。下面看一下如何使用。
首先,将fetchUtils导入。
import fetchUtils from '../utils/fetch' |
get方法
fetchUtils.get(url) |
post方法
fetchUtils.post(url, data) |
总结
通过以上对fetch方法的封装,使代码更加精简,业务逻辑更加清晰,也更加容易维护。此处使用React Native为例只是项目开发的一个缩影,这种封装思想是可以在工作中借鉴的。
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章