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 29 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
Aug 09 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
Apr 12 Javascript
JavaScript Sort 的一个错误用法示例
Mar 20 Javascript
AngularJS+Node.js实现在线聊天室
Aug 28 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
Jan 13 Javascript
基于javascript实现checkbox复选框实例代码
Jan 28 Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 Javascript
JavaScript实现图像模糊化的方法实例
Jan 15 Javascript
jQuery实用密码强度检测
Mar 02 Javascript
详解JS构造函数中this和return
Sep 16 Javascript
Vue自定义属性实例分析
Feb 23 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版本实现代码
2012/09/15 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
使用dump函数,给php加断点测试
2013/06/25 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
PHP new static 和 new self详解
2017/02/19 PHP
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
vue使用echarts图表的详细方法
2018/10/22 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
Python中的浮点数原理与运算分析
2017/10/12 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
python dumps和loads区别详解
2020/02/04 Python
python线程池如何使用
2020/05/28 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
给海归自荐信的建议
2013/12/13 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
2015年工程部工作总结
2015/04/30 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA
vue递归实现树形组件
2022/07/15 Vue.js