满口金牙 2021-12-04 16:07 采纳率: 91.5%
浏览 80
已结题

vue 许多页面,我很多代码是可以复用的,怎么打包成模块

比如下面这段代码,多个页面都有这段代码,由于参数过多,还有很多 双向绑定的元素


function handleDelete (index, row) { // 删除, patch方法修改is_active
  const params = { id: row.id, is_active: false }
  patchMethod(data.url + row.id, params)
  data.searchResult = data.searchResult.filter(x => x.id !== row.id) // 更新表格
  childrenData.value.addRecycleDataLength()
  // 改变行数和页数
  page.totalCount = page.totalCount - 1 // 总行数
  page.pageCount = Math.ceil(data.searchResult.length / page.pageSize) // 总页数为当前页
}

function handleClear (index, row) { // 清空回收站,delete方法
  const params = { id: row.id }
  deleteMethod(data.url + row.id, params)
  data.searchResult = data.searchResult.filter(x => x.id !== row.id)
  childrenData.value.subRecycleDataLength()
  // 改变行数和页数
  page.totalCount = page.totalCount - 1
  page.pageCount = Math.ceil(data.searchResult.length / page.pageSize)
}

我现在把上面的代码单独写在 一个 buttom.js文件中
然后要用

import './ buttom.js'

这样用不了,要怎么实现这些代码的 复用

  • 写回答

4条回答 默认 最新

  • 前端阿彬 前端领域新星创作者 2021-12-04 19:26
    关注

    有两种方式:

    1. buttom.js里每个方法单独export

       例如export function handleDelete() {  }
              export function handleClear() {  } 
      
      xxx.vue
      导入:    import {handleDelete ,handleClear  }  from 'buttom.js'
      
    2. buttom统一暴露

       const  commonUtils = {
            handleDelete(key) {  },
            handleClear(key) {  ]
       }
       export default commonUtils 
       
      xxx.vue
      

      导入: import commonUtils from 'buttom.js'
      使用: commonUtils.handleDelete(key)

    注意!!!,第一种之所以导入时用{}包裹,并不是es6的解构,而是es6按需导入的语法,虽然看着一样,但是是有区别的,例如你如果用默认统一导出(就是第二种的导出方式,但是却用第一种的导入方式是不行的)
    还有就是第一种方法还能加以改进,每个方法单独导出的同时,最后还能用一个总方法统一导出一下,这样在调用时也就可以使用第二种 xxx.xxx的格式了
    let allFuc() = {
    handleClear:function(key) {
    return handleClear(key)
    }
    }
    export { allFuc }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 12月12日
  • 已采纳回答 12月4日
  • 创建了问题 12月4日

悬赏问题

  • ¥15 slam rangenet++配置
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊