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+WebService 校验账号是否已被注册的代码
Jul 12 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
jQuery实现切换页面过渡动画效果
Oct 29 Javascript
js中setTimeout的妙用--防止循环超时
Mar 06 Javascript
bootstrap suggest搜索建议插件使用详解
Mar 25 Javascript
requireJS模块化实现返回顶部功能的方法详解
Oct 16 Javascript
vue使用axios实现文件上传进度的实时更新详解
Dec 20 Javascript
解决layer图标icon不加载的问题
Sep 04 Javascript
vue 解决遍历对象显示的顺序不对问题
Nov 07 Javascript
JavaScript事件冒泡机制原理实例解析
Jan 14 Javascript
vue全局使用axios的操作
Sep 08 Javascript
微信小程序实现打卡签到页面
Sep 21 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也可以?成Shell Script
2006/10/09 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
php算法实例分享
2015/07/14 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
php-msf源码详解
2017/12/25 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
编程语言Python的发展史
2014/09/26 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
java中两个byte数组实现合并的示例
2018/05/09 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
学习Python爬虫的几点建议
2020/08/05 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
怎么写有吸引力的自荐信
2013/11/17 职场文书
餐饮管理自我介绍信
2014/01/15 职场文书
勾股定理课后反思
2014/04/26 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android