Day7 關於vue項目中引入cesium案例的完整流程


首先要有vuecli腳手架工具這個之前裝過有教程不再贅述

1.新建一個項目 (項目名字隨便起無所謂,這里就叫cesiumtest1)

vue create cesiumtest1

2.安裝vue-cli-plugin-cesium 

vue-cli-plugin-cesium 是基於 VueCLI 的擴展插件,所以在使用前要先使用 VueCLI 創建一個 Vue 項目

如果您不了解 VueCLI 的使用,請移步 VueCLI-官網

當前插件只支持 VueCLI3.0+ 版本哦

創建好一個 Vue 項目后就可以按照以下步驟使用該插件了,同所有 VueCLI 插件一樣,它有兩種使用方式,推薦使用方式一

使用方式一

推薦使用 vue add 這種方式安裝,一步到位,簡單便捷

vue add vue-cli-plugin-cesium

// 非全局安裝的vue-cli可以 npx vue add vue-cli-plugin-cesium 復制代碼

使用方式二

首先安裝 vue-cli-plugin-cesium 插件,推薦使用 yarn 安裝,因為它更簡潔

// npm npm install --save-dev vue-cli-plugin-cesium // yarn yarn add vue-cli-plugin-cesium 復制代碼

安裝完成后我們要使用 vue invoke 來初始化這個插件

vue invoke vue-cli-plugin-cesium

// 非全局安裝的vue-cli可以 npx vue invoke vue-cli-plugin-cesium 復制代碼

安裝過程

vue invokevue add 的過程中會有三個詢問

詢問一

Please choose a version of 'cesium' from this list
請在列表中選擇 cesium 的版本
復制代碼

在此選擇想使用的 Cesium 版本

詢問二

Whether to import styles globally. 
This operation will automatically import widgets.css in main.js
是否全局引入樣式,該操作將自動在main.js引入widgets.css?
復制代碼

此項默認為 yes,該操作將自動在 main.js 引入 widgets.css,即全局引入 Cesium 的 css 樣式

如果此項設置為 no,那么開發時我們要手動引入widgets.css樣式文件,引入命令如下

import "cesium/Widgets/widgets.css"
復制代碼

詢問三

Whether to add sample components to the project components directory
是否添加示例組件到項目components目錄?
復制代碼

此選項默認為 yes,該操作會自動在 src/components 文件夾下生成 CesiumExample 文件夾,此文件夾中包含一些 Cesium 的使用示例供參考

如果此項設置為 no,則不生成示例文件

 

 上面的步驟完成后 直接 npm run serve發現報錯:

 原因:由於在 ./node_modules/cesium/Source/ThirdParty/zip.js 文件中使用了 import.meta 語法,webpack 默認不支持,在進行項目構建時,會報如下錯誤,提示信息需要添加 loader。

解決如下:

1.安裝loader

npm install @open-wc/webpack-import-meta-loader --save-dev

or yarn add @open-wc/webpack-import-meta-loader --dev

1.配置下vue.config.js沒有就在根目錄下新建一個,內容如下:

 

const path = require("path");
const TerserPlugin = require('terser-webpack-plugin');

const CopyWebpackPlugin = require('copy-webpack-plugin');
const webpack = require('webpack');
const cesiumSource = './node_modules/cesium/Source'

function resolve(dir) {
return path.join(__dirname, dir);
}

module.exports = {
devServer: {
port: 8888,
open: true,

},
configureWebpack: {
output: {
sourcePrefix: ' ' // 1 讓webpack 正確處理多行字符串配置 amd參數
},
amd: { // 2
toUrlUndefined: true // webpack在cesium中能友好的使用require
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': path.resolve('src'),
'components': path.resolve('src/components'),
'assets': path.resolve('src/assets'),
'views': path.resolve('src/views'),
'cesium': path.resolve(__dirname, cesiumSource)
}
},
plugins: [ // 4
new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'Workers'), 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({ // 5
CESIUM_BASE_URL: JSON.stringify('./')
})
],
}
};

在plugin[]后面添加:

module: { rules: [ { test: /\.js$/, use: { loader: '@open-wc/webpack-import-meta-loader', }, }, ]}
再次運行問題解決。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM