vue加載遠(yuǎn)程(網(wǎng)絡(luò))js

vue項目中有時候會遇到加載遠(yuǎn)程(網(wǎng)絡(luò))js的情況,常用的方法有以下兩種:

1.在index.html中添加

以加載在線的cesium為例

<script src="https://cesium.com/downloads/cesiumjs/releases/1.81/Build/Cesium/Cesium.js"></script>

在組件中可以通過window.Cesium來獲取加載的js,示例如下:

<template>
  <div id="container">
 </div>
</template>
<script>
const Cesium = window.Cesium

export default {
  data () {
    return {
      viewer: null
    }
  },
  mounted () {
    this.viewer = new Cesium.Viewer('cesiumContainer')
  }
}
</script>

2.定義加載js的組件

在main.js里注冊組件

Vue.component('remote-js', {
  props: {
    src: {
      type: String,
      required: true
    }
  },
  render: function (createElement) {
    var self = this
    return createElement('script', {
      attrs: {
        type: 'text/javascript',
        src: this.src
      },
      on: {
        load: function (event) {
          self.$emit('load', event)
        },
        error: function (event) {
          self.$emit('error', event)
        },
        readystatechange: function (event) {
          if (this.readyState === 'complete') {
            self.$emit('load', event)
          }
        }
      }
    })
  },
})
//上面代碼一定要在new vue之前
new Vue({
  el: '#app',
  router,
  store,
  components: {
    App
  },
  render: h => h(App)
})

注意:注冊組件一定要在new Vue之前

在組件中使用:

<template>
  <div>
    <remote-js
      src="https://cesium.com/downloads/cesiumjs/releases/1.81/Build/Cesium/Cesium.js"
      @load="jsLoaded"
      @load="jsLoadError"
    />
    <div id="container">
    </div>
 </div>
</template>
<script>
var Cesium = null
export default {
  data () {
    return {
      viewer: null
    }
  },
  mounted () {
    
  },
  methods: {
    jsLoaded () {
      Cesium = window.Cesium
      this.viewer = new Cesium.Viewer('cesiumContainer')
    },
    jsLoadError () {
    // 加載失敗時的操作
    }
  }
}
</script>

這樣使用比較靈活還能在加載完成和加載失敗時做一些操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第二次來梳理Vue源碼邏輯了。第一次因為不熟悉,梳理的很細(xì)致才弄懂。第二次就更有大局觀一些了,這次我主要抓住流程的...
    LoveBugs_King閱讀 1,908評論 1 5
  • Vue真是太好了 壹萬多字的Vue知識點 超詳細(xì)! 9 ?1??、Vue和其他兩大框架的區(qū)別 Angular 學(xué)習(xí)...
    三千繁夢閱讀 412評論 0 0
  • vue.js 誰在影響著頁面?model中的data Vue.js 官網(wǎng) api學(xué)習(xí)步驟引文件寫結(jié)構(gòu)初始化js 簡...
    Ht_何甜閱讀 591評論 0 0
  • 什么是Vue.js Vue.js是目前最火的一個前端框架,React是最流行的一個前端框架,(React除了開發(fā)網(wǎng)...
    EEEEsun閱讀 733評論 0 1
  • Vue -漸進(jìn)式JavaScript框架 介紹 vue 中文網(wǎng) vue github Vue.js 是一套構(gòu)建用戶...
    桂_3d6b閱讀 948評論 0 0

友情鏈接更多精彩內(nèi)容