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 ajax执行后台方法
Mar 18 Javascript
javascript编写贪吃蛇游戏
Jul 07 Javascript
javascript实现自动填写表单实例简析
Dec 02 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
Apr 18 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
Jun 14 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
Oct 04 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
Jul 19 Javascript
JavaScript键盘事件常见用法实例分析
Jan 03 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
Apr 04 Javascript
Vue的H5页面唤起支付宝支付功能
Apr 18 Javascript
微信小程序在其他页面监听globalData中值的变化
Jul 15 Javascript
使用JavaScript计算前一天和后一天的思路详解
Dec 20 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
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
JS request函数 用来获取url参数
2010/05/17 Javascript
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
Python中的变量和作用域详解
2016/07/13 Python
Python之文字转图片方法
2018/05/10 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
HTML5 textarea高度自适应的两种方案
2020/04/08 HTML / CSS
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
J2EE模式面试题
2016/10/11 面试题
音乐专业应届生教师求职信
2013/11/04 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
企业精神口号
2014/06/11 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
公司年夜饭通知
2015/04/25 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
房屋质量投诉书
2015/07/02 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
MySQL常见优化方案汇总
2022/01/18 MySQL
如何利用python实现Simhash算法
2022/06/28 Python