美文网首页
Vue远端异步组件

Vue远端异步组件

作者: 小俊的世界 | 来源:发表于2021-06-11 17:59 被阅读0次

    起因

    项目现在作为产品化,模块越来越多,想尝试可以将一些包可以作为服务独立文件开发。
    已经固定的组件可以抽离出项目,作为一个云端组件;一些基础的模块也可以抽离出项目;
    这样的话,项目的整个编译的项目将会变得更快,同时可以更加有利于团队的开发,通过隔离文件的方式,将会更大的保证开发的功能彼此互不影响的。

    异步组件

    Vue.component('async-example', function(resolve, reject) {
      setTimeout(function() {
        // 向 `resolve` 回调传递组件定义
        resolve({
          render(h) {
            return h('div', '你好')
          }
        })
      }, 1000)
    })
    

    这里需要注意的是 resolve({template:"<div>hello world</div>"}) 这种的话, 需要运行在vue的esm版本中,而一般的情况下是使用的是 vue的runtime版本。在runtime版本下是需要使用render进行渲染的。

    远端异步组件

    为了更加贴进现实的使用场景,我将element-ui组件button的编译版本拉下来,并放在了static文件夹下的,利用axios进行异步请求,最终的使用的方式是:

    Vue.component('async-example', function(resolve, reject) {
      axios.get('../../../static/button.js').then(res => {
        const com = eval(res.data).default
        resolve({
              render(h) {
                return h(com, '你好')
              }
        })
      })
    })
    

    最终呈现效果


    image.png

    相关文章

      网友评论

          本文标题:Vue远端异步组件

          本文链接:https://www.haomeiwen.com/subject/oehveltx.html