vue中全局引入cornerstone.js

第一步: 配置 build/webpack.base.conf.js

'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
// 第一步 開始
const webpack = require("webpack") 
// 第一步 結束
function resolve(dir) {
  return path.join(__dirname, '..', dir)
}

module.exports = {
  context: path.resolve(__dirname, '../'),
  entry: {
    app: './src/main.js'
  },
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production' ?
      config.build.assetsPublicPath : config.dev.assetsPublicPath
  },
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    // 第二步 開始
    modules: [
      resolve('src'),
      resolve('node_modules')
    ],
    //第二步 結束
    
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      'assets': resolve('src/assets'),
      'components': resolve('src/components'), 
       // 第三步 開始
        // 這裏可添加 像 jquery echart 插件或函數庫 等
      'cornerstone': 'cornerstone' // 重點
       // 第三步 結束
    }
  },

  // 第四步 開始
  plugins: [
    // 配置全局使用 jquery
    new webpack.ProvidePlugin({
      cornerstone: "cornerstone",
      Cornerstone: "cornerstone",
      "window.cornerstone": "cornerstone"
    })
  ],
  //第四步 結束
  module: {
    rules: [{
        test: /\.vue$/,
        loader: 'vue-loader',
        options: vueLoaderConfig
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
      },
      {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('img/[name].[hash:7].[ext]')
        }
      },
      {
        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('media/[name].[hash:7].[ext]')
        }
      },
      {
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
        }
      }
    ]
  },
  node: {
    // prevent webpack from injecting useless setImmediate polyfill because Vue
    // source contains it (although only uses it if it's native).
    setImmediate: false,
    // prevent webpack from injecting mocks to Node native modules
    // that does not make sense for the client
    dgram: 'empty',
    fs: 'empty',
    net: 'empty',
    tls: 'empty',
    child_process: 'empty'
  }
}

第二步: src/main.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'

//引入 cornerstone,dicomParser,cornerstoneWADOImageLoader
import * as cornerstone from "cornerstone-core";
import * as dicomParser from "dicom-parser";

// 不建議 npm 安裝 cornerstoneWADOImageLoader 如果你做了 會很頭疼 
import * as cornerstoneWADOImageLoader from "../static/dist/cornerstoneWADOImageLoader.js";

Vue.use(cornerstone);
Vue.use(dicomParser);
Vue.use(cornerstoneWADOImageLoader);

//指定要註冊加載程序的基石實例
cornerstoneWADOImageLoader.external.cornerstone = cornerstone;


/*
 *配置 webWorker (必須配置)
 *
 *注意這裏的路徑問題  如果路徑不對 cornerstoneWADOImageLoaderWebWorker 會報錯:
 *        "index.html Uncaught SyntaxError: Unexpected token <"
 *
 */
var config = {
  webWorkerPath: "/static/dist/cornerstoneWADOImageLoaderWebWorker.js",
  taskConfiguration: {
    decodeTask: {
      codecsPath: "/static/dist/cornerstoneWADOImageLoaderCodecs.js"
    }
  }
};
cornerstoneWADOImageLoader.webWorkerManager.initialize(config);

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: {
    App
  },
  template: '<App/>'
})

其他的 引入使用此方法即可

引入成功後 需 重啓項目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章