vue2.0项目集成Cesium的实现方法


Posted in Javascript onJuly 30, 2019

安装cesium

在已有项目中执行,

npm i cesium

修改配置

build/webpack.base.conf.js

1、定义 Cesium 源码路径

const cesiumSource = '../node_modules/cesium/Source'

'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
//--cesium--配置
const cesiumSource = '../node_modules/cesium/Source';

2、在output 里加入sourcePrefix: ' ' 让webpack 正确处理多行字符串

3、配置 amd参数

4、module中在rules后添加 unknownContextCritical: false,

module.exports = {
  context: path.resolve(__dirname, '../'),
  entry: {
    app: ["babel-polyfill", './src/main.js']
  },
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production' ?
      config.build.assetsPublicPath : config.dev.assetsPublicPath,
    //--cesium--配置------------------------------------
    sourcePrefix: ' '
  },
  //--cesium--配置----------------------------------------
  amd:{
    toUrlUndefined: true
  },
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      //--cesium--配置
      'cesium': path.resolve(__dirname, cesiumSource)
    }
  },
  module: {
    rules: [
    ...
    ],
    //--cesium--配置-------------------------------------
    //unknownContextRegExp: /^.\/.*$/
    unknownContextCritical: false,
  }
}

build/webpack.dev.conf.js

1、定义 Cesium 源码路径和Cesium Workers 路径

const cesiumSource = 'node_modules/cesium/Source'
const cesiumWorkers = '../Build/Cesium/Workers'

(注意这里的 node_modules 与webpack.base.conf.js的不同,前面没有../)

2、定义CESIUM_BASE_URL变量

3、在plugins 中加入下面插件,拷贝静态资源

plugins: [
  new webpack.DefinePlugin({
   'process.env': require('../config/dev.env'),
   //--cesium--配置-------------------------------------------
   'CESIUM_BASE_URL': JSON.stringify('') 
  }),
  new webpack.HotModuleReplacementPlugin(),
  new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
  new webpack.NoEmitOnErrorsPlugin(),
  // https://github.com/ampedandwired/html-webpack-plugin
  new HtmlWebpackPlugin({
   filename: 'index.html',
   template: 'index.html',
   inject: true
  }),
  //--cesium--配置---------------------------------------------
  new CopyWebpackPlugin([ { from: path.join(cesiumSource, cesiumWorkers), to: 'Workers' } ]),   //flag
  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 CopyWebpackPlugin([ { from: 'ThirdParty', to: 'ThirdParty' } ]),

  // copy custom static assets
  new CopyWebpackPlugin([
   {
    from: path.resolve(__dirname, '../static'),
    to: config.dev.assetsSubDirectory,
    ignore: ['.*']
   }
  ])
 ]

build/webpack.prod.conf.js

1、定义

const cesiumSource = 'node_modules/cesium/Source';
 const cesiumWorkers = '../Build/Cesium/Workers';

2、定义'CESIUM_BASE_URL'变量

3、在plugins 中加入下面插件,拷贝静态资源

plugins: [
  // http://vuejs.github.io/vue-loader/en/workflow/production.html
  new webpack.DefinePlugin({
   'process.env': env,
   //--cesium--配置--------------------------------------
   'CESIUM_BASE_URL': JSON.stringify('static')
  }),
  ...
  new HtmlWebpackPlugin({
    ...
  },
  //--cesium--配置--------------------------------------
  new CopyWebpackPlugin([ { from: path.join(cesiumSource, cesiumWorkers), to: 'static/Workers' } ]),//flag
  new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'Assets'), to: 'static/Assets' } ]),
  new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'Widgets'), to: 'static/Widgets' } ]),
  new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'ThirdParty/Workers'), to: 'ThirdParty/Workers' } ]),
  new CopyWebpackPlugin([ { from: 'ThirdParty', to: 'ThirdParty' } ]),
  ...

ThirdParty

在项目根目录新建文件夹ThirdParty,放入draco_decoder.wasm文件,在加载gltf模型文件需要用到

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 模式对话框终极版实现代码
Sep 28 Javascript
nullJavascript中创建对象的五种方法实例
May 07 Javascript
javascript的事件触发器介绍的实现
Jun 05 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
Mar 27 Javascript
浅析Bootstrap缩略图组件与警示框组件
Apr 29 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
May 05 Javascript
利用JS实现数字增长
Jul 28 Javascript
H5移动端适配 Flexible方案
Oct 24 Javascript
利用Javascript开发一个二维周视图日历
Dec 14 Javascript
详解vue组件开发脚手架
Jun 15 Javascript
Angular服务Request异步请求的实例讲解
Aug 13 Javascript
Layui实现主窗口和Iframe层参数传递
Nov 14 Javascript
Koa从零搭建到Api实现项目的搭建方法
Jul 30 #Javascript
js实现的格式化数字和金额功能简单示例
Jul 30 #Javascript
JS实现点击发送验证码 xx秒后重新发送功能
Jul 30 #Javascript
微信小程序渲染性能调优小结
Jul 30 #Javascript
vue通过video.js解决m3u8视频播放格式的方法
Jul 30 #Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
Jul 29 #Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
Jul 29 #Javascript
You might like
PHP mkdir()定义和用法
2009/01/14 PHP
php四种基础算法代码实例
2013/10/29 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
php链式操作的实现方式分析
2019/08/12 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
js 页面输出值
2008/11/30 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
Python实现远程调用MetaSploit的方法
2014/08/22 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
Django单元测试工具test client使用详解
2019/08/02 Python
python 利用pyttsx3文字转语音过程详解
2019/09/25 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
Python识别html主要文本框过程解析
2020/02/18 Python
Python如何获取文件指定行的内容
2020/05/27 Python
Python自省及反射原理实例详解
2020/07/06 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
市场营销专业推荐信
2013/11/03 职场文书
奶茶专卖店创业计划书
2014/01/18 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android