Cesium笔记 — Vue+Cesium开发环境搭建(基于Cesium1.69)

1 篇文章 0 订阅
1 篇文章 0 订阅

前言

今天研究了下 Vue + Cesium 的相关配置,用的是 Cesium 1.69。 网上找到了不少参考文章,如:https://www.jianshu.com/p/ff26886f7255
但配置完后使用 import Cesium from 'cesium/Cesium' 导入模块时总会报错:

"export 'default' (imported as 'Cesium') was not found in 'cesium/Cesium'

查找原因,发现 Cesium 1.63 版本之前是用的AMD的方式进行编译的,./Source/Cesium.js(1.60)
而在1.63版时使用ES6进行了重构
./Source/Cesium.js(1.66)
所以1.63之后的版本,导入模块时应该使用如下方式:

import * as Cesium from "cesium/Source/Cesium.js"
//或者:
import {Viewer} from "cesium/Source/Cesium.js"

这样就不会报错了。如果你遇到了同样的问题,恭喜你接下来的配置步骤不需要看了。

步骤

1. 创建vue项目

使用vue-cli工具创建一个vue项目:

vue init webpack cesium_demo

安装cesium:

cd cesium_demo
npm install cesium --save

2. Cesium环境配置

这里需要修改webpack.base.conf.js, webpack.dev.conf.js, webpack.prod.conf.js 三个文件

2.1 配置 webpack.base.conf.js
  1. 定义 Cesium 源码路径:
const cesiumSource = '../node_modules/cesium/Source'
  1. 让webpack正确处理多行字符串
    在output中添加sourcePrefix:' '
output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath,
      sourcePrefix: ' '
  },
  1. 设置cesium别名,
    需要在resolve中设置cesium别名,这样在引入的时候就可以根据别名找到Cesium的包。
    (注:也可以不设置别名,导包是直接导入'cesium/Source/Cesium.js'就行。其实设置别名的目的就是让“别名”指向/node_modules/cesium/Source目录)
 resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      cesium: path.resolve(__dirname, cesiumSource)
    }
  },
  1. 阻止依赖警告
    module里添加unknownContextCritical:false
module: {
	rules:[
	...
	],
	unknownContextCritical: false,
}
2.2 配置 webpack.dev.conf.js
  1. 定义路径:
const cesiumSource = 'node_modules/cesium/Source'
const cesiumWorkers = '../Build/Cesium/Workers'
  1. 在plugins下面添加如下插件:
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('')
})
2.3 配置webpack.prod.conf.js文件
  1. 定义路径:
const cesiumSource = 'node_modules/cesium/Source'
const cesiumWorkers = '../Build/Cesium/Workers'
  1. 在plugins下面添加如下插件:
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({
   // 注意这里和dev的配置不同
   // 定义Cesium从哪里加载资源,如果使用默认的'',却变成了绝对路径了,所以这里使用'./',使用相对路径
   CESIUM_BASE_URL: JSON.stringify('./')
})

3. 开始使用

再次强调这里不能使用 import Cesium from 'cesium/Cesium' 导入模块,因为Cesium 1.63 版本以后使用的是ES6。应该使用如下方式:

<template>
    <div class="container">
        <div id="cesiumContainer"></div>
    </div>
</template>

<script>
	import { Viewer } from 'cesium/Cesium'
	import  'cesium/Source/Widgets/widgets.css'
	export default {
    	name: "cesiumPage",
    	data() {
        	return {};
    	},
    	mounted() {
        	let viewer = new Viewer("cesiumContainer");
    	}
	};
</script>

<style scoped>
.container {
    width: 100%;
    height: 100vh;
}
#cesiumContainer {
    width: 100%;
    height: 100vh;
}
</style>

成功!在这里插入图片描述

4. 参考文章:

https://www.jianshu.com/p/ff26886f7255
https://github.com/CesiumGS/cesium/issues/8471
https://cesium.com/docs/tutorials/cesium-and-webpack/

  • 11
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Cesium是一个用于创建三维地球和地球数据可视化的开源JavaScript库。Vue是一个用于构建用户界面的渐进式JavaScript框架。在搭建CesiumVue2环境之前,确保你已经在电脑上安装好了Node.js和npm。 首先,我们需要创建一个新的Vue项目。打开终端或命令提示符,输入以下命令来创建一个新的Vue项目: ``` vue create cesium-vue-demo ``` 接下来,选择手动配置,然后按照默认设置一步一步进行配置。当配置工具询问你是否要选择预设配置或手动选择特性时,请选择手动选择。 然后,在第一项核心功能中选择了Babel、Router和Vuex,第二项选中了CSS Pre-processors,第三项不选择Linter/Formatter。 完成配置后,进入项目目录: ``` cd cesium-vue-demo ``` 然后,我们需要安装Cesium依赖。在终端中输入以下命令: ``` npm install cesium --save ``` 安装完成后,我们需要修改webpack配置,以便正确加载Cesium依赖。打开`vue.config.js`文件,输入以下内容: ```javascript module.exports = { // ... configureWebpack: { output: { // 修改打包后静态文件的路径 publicPath: './' }, amd: { // 添加一个module文件的对外映射关系 toUrlUndefined: true }, // 解决加载Cesium的路径问题 resolve: { alias: { cesium: path.resolve(__dirname, 'node_modules/cesium/Source') } }, // 设置全局变量 plugins: [ new webpack.DefinePlugin({ CESIUM_BASE_URL: JSON.stringify('./') }) ] }, // ... } ``` 然后,我们需要在Vue组件中引入Cesium。在`App.vue`文件中添加以下代码: ```javascript <template> <div id="cesiumContainer"></div> </template> <script> import * as Cesium from 'cesium' export default { mounted() { const viewer = new Cesium.Viewer('cesiumContainer') // 添加Cesium代码 } } </script> ``` 最后,运行以下命令启动Vue项目: ``` npm run serve ``` 现在,你已经成功搭建了一个CesiumVue2的环境。你可以在`App.vue`中添加Cesium代码来创建三维地球和地球数据可视化应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值