V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
renhou
V2EX  ›  问与答

把用了 3 次的 get 方法取成公共方法,用的时候导入,是不是就叫封装 axios 了?

  •  
  •   renhou · 2022-07-20 08:05:14 +08:00 · 1943 次点击
    这是一个创建于 639 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个 a ,b 接口 get 方法需要在不同组件用到,我把它提取成公共方法,用的时候导入
    请问上述行为是封装还是复用?
    补充:c 接口 get 无法使用,post 等其他接口无法使用,提取的意思就是单纯的复制粘贴

    7 条回复    2022-07-20 13:42:07 +08:00
    binux
        1
    binux  
       2022-07-20 08:14:12 +08:00 via Android   ❤️ 1
    复用
    gzyguy
        2
    gzyguy  
       2022-07-20 08:43:52 +08:00 via iPhone   ❤️ 1
    封装指的是创建 axios 实例并对 get 、post 等方法进行自定义。包括请求拦截等一些操作。所以题主做的是复用不是封装。
    kop1989smurf
        3
    kop1989smurf  
       2022-07-20 09:54:39 +08:00   ❤️ 2
    不太同意楼上的思路。
    复用,是封装的形式之一,既没有经过特殊处理的“封装”。换句话说,不管是否进行了自定义,其实都是封装。
    从软件工程角度讲,调用者是无需了解实现的,区分“复用”还是“封装”的意义很小。

    但反过来讲,如果你的“封装”的内容,仅仅是调用了一个标准的库函数,既没有减少代码量,又没有实现逻辑的归纳,又徒增了耦合性,你就要思考这个封装的必要性了。
    kop1989smurf
        4
    kop1989smurf  
       2022-07-20 09:58:37 +08:00
    换句话说,楼主需要质疑和纠结的并不应该是这个行为的命名(到底是不是封装),而是这个行为本身是否有意义。
    66beta
        5
    66beta  
       2022-07-20 10:35:27 +08:00   ❤️ 1
    是封装,但不是针对 axios ,而是自己封装了一个组件
    renhou
        6
    renhou  
    OP
       2022-07-20 11:16:41 +08:00
    @66beta
    @kop1989smurf
    谢谢老哥们

    可能有些强行,我看各种百科对封装的定义,虽然我这种“封装”比较 low 但是隐约觉得还是属于封装。。
    不过就像 5 楼所说,并不是封装 axios ,而是封装了一个自己的方法

    什么也不做,我会在 3 个地方写 3 个同样的 get 方法
    这样“封装”的意义在于,我只需要写一个 get 方法,导入 3 次即可,感觉这样也算是减少代码量,提升维护性了

    > '封装(英语:Encapsulation )是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法'
    IvanLi127
        7
    IvanLi127  
       2022-07-20 13:42:07 +08:00
    你提取了这个接口的调用逻辑,封装了调用这个接口的方法。这个接口一直都是被复用的状态,你的操作只是把复用 level 提升到了你封装的方法上。你只是使用了 Axios ,并没有对它做什么奇怪的事情。

    我感觉大概是这样。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   915 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 476ms · UTC 20:55 · PVG 04:55 · LAX 13:55 · JFK 16:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.