javascript - 解耦谁能给形象的解释一下,能附带代码最好
本文介绍了javascript - 解耦谁能给形象的解释一下,能附带代码最好的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
读一些js,node的相关书籍总是提到解耦这个词汇。不明白什么意思,希望有人能给比较形象的解释一下
解决方案
打个比方说,你有如下代码:
var filterUsers = function(cb){
$.get('xxx-url')
.done(function(users){
var leftUsers = users.filter(user => user.age > 20);
cb(leftUsers);
});
};
这是一个非常简单的,异步获取用户数据,并且过滤掉年龄小于等于20岁的人后,将剩下的用户数据返回的方法。
那么现在我希望你写一个测试用例,测试一下你的过滤部分的逻辑?怎么办?这时候如果不修改filterUsers
源码就很难测试了,因为里面耦合着真实的ajax
异步请求,莫非测试一个小小的过滤逻辑,你还要搭一个服务器给她,然后写各种不同的数据返回的服务么?这也活得太累了。
但如果我们把获取异步数据的部分提取出去,像这样:
var UserService = require('./UserService');
var filterUsers = function(cb){
UserService
.getUsers()
.done(function(users){
var leftUsers = users.filter(user => user.age > 20);
cb(leftUsers);
});
});
};
这时候里面不再耦合那个具体的异步操作,而是引入了一个叫UserService
的模块,那当我们测试过滤部分逻辑的时候,只要替换掉这个UserService
,用一个返回假数据的模块,就可以轻松的测试各种数据返回的情况下,过滤逻辑的工作状况是否正常了。
这里就是把过滤用户和获取全部用户数据两个部分,解藕了哦!
这篇关于javascript - 解耦谁能给形象的解释一下,能附带代码最好的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文