1、vue 工程建立及cesium 安裝css
vue init webpack cesium-demo
npm i cesium --save
2、webpack 配置html
1.webpack.base.conf.js中設置cesium源碼的路徑vue
定義Cesium源碼路徑const cesiumSource = '…/node_modules/cesium/Source’node
在output 里加入sourcePrefix: ’ ’ 讓webpack正確處理多行字符串webpack
在resolve中設置別名 ‘cesium’: path.resolve(__dirname, cesiumSource),定義別名cesium後,cesium表明了cesiumSource的文件路徑web
在modules的rules中再增長兩行,unknownContextRegExp: /^.\/.*$/,unknownContextCritical:falsenpm
2.webpack.dev.conf.js 文件中添加 static files 管理app
const cesiumSource = 'node_modules/cesium/Source' const cesiumWorkers = '../Build/Cesium/Workers' plugins: [
... /* cesium */ new CopyWebpackPlugin([ { from: path.join(cesiumSource, cesiumWorkers), to: 'Workers' } ]), new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'Assets'), to: 'Assets' } ]), new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'Widgets'), to: 'Widgets' } ]), new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'ThirdParty/Workers'), to: 'ThirdParty/Workers' } ]), new webpack.DefinePlugin({ // Define relative base path in cesium for loading assets CESIUM_BASE_URL: JSON.stringify('') }) ]
3.配置 webpack.prod.conf.js 文件ui
const cesiumSource = 'node_modules/cesium/Source' const cesiumWorkers = '../Build/Cesium/Workers' plugins: [ ... /* cesium */ new CopyWebpackPlugin([ { from: path.join(cesiumSource, cesiumWorkers), to: 'Workers' } ]), new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'Assets'), to: 'Assets' } ]), new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'Widgets'), to: 'Widgets' } ]), new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'ThirdParty/Workers'), to: 'ThirdParty/Workers' } ]), new webpack.DefinePlugin({ // Define relative base path in cesium for loading assets // 定義 Cesium 從哪裏加載資源,若是使用默認的'',卻變成了絕對路徑了,因此這裏使用'./',使用相對路徑 CESIUM_BASE_URL: JSON.stringify('./') }) ]
4.配置config/index.js文件,配置 build 下的assetsPublicPath 爲' 'this
build: { // Template for index.html index: path.resolve(__dirname, '../dist/index.html'), // Paths assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublicPath: '', ... }
5.在組件中單獨應用
<template> 2 <div id="app"> 3 <div id="cesiumContainer"></div> 4 </div> 5 </template> 6 7 <script> 8 import Cesium from 'cesium/Cesium' 9 import 'cesium/Widgets/widgets.css' 10 export default { ... 12 mounted () { 13 this.initMap() 17 } methods:{ initMap(){ const viewer = new Cesium.Viewer('cesiumContainer' )
console.log(viewer) } } 19 </script> 20 <style> 21 28 #app,#cesiumContainer { 30 width: 100%; 31 height: 100%; 32 overflow: hidden; 33 } 34 </style>
6.或者在main.js中全局註冊
//全局引用cesium import Cesium from "cesium/Cesium"; import"../node_modules/cesium/Source/Widgets/widgets.css"; //全局註冊變量 Vue.prototype.Cesium=Cesium;