├── logo.png
├── .npmignore
├── docs
├── .vuepress
│ ├── public
│ │ ├── images
│ │ │ ├── logo.png
│ │ │ └── favicon.ico
│ │ └── manifest.json
│ └── config.js
├── README.md
└── info.md
├── generator
├── template
│ └── src
│ │ └── components
│ │ └── CesiumExample
│ │ └── No01-init.vue
└── index.js
├── .gitignore
├── package.json
├── prompts.js
├── index.js
└── README.md
/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isboyjc/vue-cli-plugin-cesium/HEAD/logo.png
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | build
2 | dist
3 | docs
4 | .babelrc
5 | .travis.yml
6 | /package-lock.json
7 | /yarn.lock
--------------------------------------------------------------------------------
/docs/.vuepress/public/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isboyjc/vue-cli-plugin-cesium/HEAD/docs/.vuepress/public/images/logo.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isboyjc/vue-cli-plugin-cesium/HEAD/docs/.vuepress/public/images/favicon.ico
--------------------------------------------------------------------------------
/docs/.vuepress/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "张三",
3 | "short_name": "张三",
4 | "start_url": "index.html",
5 | "display": "standalone",
6 | "background_color": "#2196f3",
7 | "description": "张三的个人主页",
8 | "theme_color": "blue",
9 | "icons": [
10 | {
11 | "src": "./photo.jpg",
12 | "sizes": "144x144",
13 | "type": "image/png"
14 | }
15 | ],
16 | "related_applications": [
17 | {
18 | "platform": "web"
19 | },
20 | {
21 | "platform": "play",
22 | "url": "https://play.google.com/store/apps/details?id=cheeaun.hackerweb"
23 | }
24 | ]
25 | }
--------------------------------------------------------------------------------
/generator/template/src/components/CesiumExample/No01-init.vue:
--------------------------------------------------------------------------------
1 |
2 |
基于Vue-cli的cesium封装(Cesium encapsulation based on Vue cli)
7 | 8 | [](https://www.npmjs.com/package/vue-cli-plugin-cesium) 9 | [](https://www.npmjs.com/package/vue-cli-plugin-cesium) 10 | [](https://www.npmjs.com/package/vue-cli-plugin-cesium) 11 | [](https://github.com/isboyjc/vue-cli-plugin-cesium) 12 | [](https://github.com/isboyjc/vue-cli-plugin-cesium) 13 | 14 | ## 前言 15 | 16 | 通常情况下,我们要在 vue 中使用 Cesium,首先要安装 Cesium,然后要在 vue-cli 的 webpack 配置很多东西,对一些有经验的人来说只不过麻烦些,但是对 Cesium 的初学者来说会很痛苦,因为没有使用过,也不知到要怎么配置,只能搜索网上的教程,一步一步踩坑 17 | 18 | 作为前端,我在学习 Cesium,踩坑无数,当然也经历过这些 19 | 20 | 其实不管是有经验或是初学者,每次写项目重复配置这些东西都很麻烦 21 | 22 | vue-cli-plugin-cesium 就是为了解决这个问题 23 | 24 | ## 介绍 25 | 26 | vue-cli-plugin-cesium 是一个针对 Cesium 的 vue-cli 扩展插件,使用它将会让我们在 vue-cli 中零配置使用 Cesium 27 | 28 | 它会在我们已经创建好的 vue-cli 中做基于 Cesium 的扩展,如下 29 | 30 | - 自动安装 cesium 并追加至`package.json`依赖项(可自选版本) 31 | 32 | - 自动扩展 vue-cli 中 cesium 相关的 webpack 配置 33 | - 添加一个`cesium`别名,以便我们在项目中轻松的引入它 34 | - 使 Cesium 对象实例可在每个 Vue 模块中使用而无须 import 引入 35 | - 使 webpack 可正常打包 Cesium 36 | - 允许 webpack 友好地在 Cesium 中使用 require,解决 require 引入警告 37 | - 开发环境生成 sourcemap,生产环境取消 sourcemap 38 | - 生产环境抽取公共模块执行压缩 39 | - 生产环境 loader 切换到优化模式 40 | - 自动在全局 main.js 中引入`Widgets.css`,可选 41 | - 自动在`components/`文件夹下生成示例文件,可选 42 | 43 | ## 安装 44 | 45 | vue-cli-plugin-cesium 是基于 vue-cli 的扩展插件,所以在使用前要先安装 vue-cli,并使用 vue-cli 创建一个 vue 项目 46 | 47 | 如果您不了解 vue-cli 的使用,请移步官网 [vue-cli-官网](https://cli.vuejs.org/zh/guide/) 48 | 49 | 当前插件只支持`vue-cli3.0+`版本哦 50 | 51 | 创建好一个 vue 项目后就可以按照以下步骤使用该插件了 52 | 53 | ### 使用方式一 54 | 55 | 首先是安装 vue-cli-plugin-cesium 插件,推荐使用 yarn 安装,因为它更简洁 56 | 57 | ```js 58 | // npm 59 | npm install --save-dev vue-cli-plugin-cesium 60 | 61 | // yarn 62 | yarn add vue-cli-plugin-cesium 63 | ``` 64 | 65 | 安装完成后我们要使用 `vue invoke` 来初始化这个插件 66 | 67 | ```js 68 | vue invoke vue-cli-plugin-cesium 69 | 70 | // 非全局安装的vue-cli可以 71 | npx vue invoke vue-cli-plugin-cesium 72 | ``` 73 | 74 | ### 使用方式二 75 | 76 | 如果您觉得使用方式一两步有些麻烦,您可以使用`vue add`的方式安装使用,即可一步到位 77 | 78 | ```js 79 | vue add vue-cli-plugin-cesium 80 | 81 | // 非全局安装的vue-cli可以 82 | npx vue add vue-cli-plugin-cesium 83 | ``` 84 | 85 | ### 安装过程 86 | 87 | 在`vue invoke`或`vue add`的过程中会有三个询问 88 | 89 | #### 询问一 90 | 91 | ```js 92 | Please choose a version of 'cesium' from this list(请在列表中选择 cesium 的版本) 93 | ``` 94 | 95 | 在此选择想使用的 `Cesium` 版本 96 | 97 | #### 询问二 98 | 99 | ```js 100 | Whether to import styles globally. This operation will automatically import widgets.css in main.js(是否全局引入样式,该操作将自动在main.js引入widgets.css)? 101 | ``` 102 | 103 | 此项默认为 yes,该操作将自动在 main.js 引入 widgets.css,即全局引入 cesium 的 css 样式 104 | 105 | 如果此项设置为 no,那么将来开发时我们要手动引入`widgets.css`样式文件,引入命令如下 106 | 107 | ```js 108 | import "cesium/Widgets/widgets.css" 109 | ``` 110 | 111 | ##### 询问三 112 | 113 | ```js 114 | Whether to add sample components to the project components directory(是否添加示例组件到项目components目录)? 115 | ``` 116 | 117 | 此选项默认为 yes,该操作会自动在`src/components`文件夹下生成`CesiumExample`文件夹,此文件夹中包含一些 Cesium 的使用示例供参考 118 | 119 | 如果此项设置为 no,则不生成示例文件 120 | 121 | 生成的示例中每个文件为一个模块,可直接模块引入至项目中查看 122 | 123 | ## GUI 中安装 124 | 125 | 如果我们使用`vue ui`创建项目,也可以直接在项目创建后的插件选项里搜索 vue-cli-plugin-cesium 并安装 126 | 127 | 如下所示: 128 | 129 |  130 | 131 | 选中插件点击安装 132 | 133 |  134 | 135 | ## 使用 136 | 137 | 开发时如下,直接在模块中使用 Cesium 对象即可 138 | 139 |  140 | 141 | 查看示例组件,模块引入即可,如下 142 | 143 |  144 | 145 | ## 结束 146 | 147 | 安装完成后,就可以在 vue 项目中任意模块中使用 Cesium 了 148 | 149 | 你可以在每个 Vue 模块中直接使用 Cesium 对象实例而无须 import 引入 150 | 151 | 如果你想引入 cesium 包下的文件,我们为 cesium 包的目录设置了别名,就叫`cesium` 152 | 153 | 所以在引入`Widgets.css`时引入路径为`cesium/Widgets/widgets.css` 154 | 155 | 如果对您有所帮助,那么这将是我的荣幸 156 | 157 | 后期我会慢慢的完善此插件,并不停迭代,也欢迎大家提出建议,也欢迎 PR 158 | 159 | 如果您觉得还行,点个 star 再走哟 160 | 161 | 加下小助手【圈子】微信,验证消息写【github】|【cesium】都可以直接通过,和他聊聊天,或者加技术交流群我们一块玩耍都可以的 162 | 163 |  164 | 165 | 如果你加小助手微信遇到了问题,也可以通过以下方式联系我或加群 166 | 167 |  168 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-cli-plugin-cesium 2 | 3 |
4 |
6 |
基于Vue-cli的cesium封装(Cesium encapsulation based on Vue cli)
8 | 9 | [](https://www.npmjs.com/package/vue-cli-plugin-cesium) 10 | [](https://www.npmjs.com/package/vue-cli-plugin-cesium) 11 | [](https://www.npmjs.com/package/vue-cli-plugin-cesium) 12 | [](https://github.com/isboyjc/vue-cli-plugin-cesium) 13 | [](https://github.com/isboyjc/vue-cli-plugin-cesium) 14 | 15 | ## 前言 16 | 17 | 市面上的前端框架中,Vue+Cesium 可谓是最佳搭档,一般做 Cesium B 端产品的公司都会使用 Vue,所以后续内容都将基于 Vue 18 | 19 | 通常情况下,我们要在 Vue 中使用 Cesium,首先要安装 Cesium,然后要在 vue-cli 的 webpack 配置很多东西,对一些有经验的人来说只不过麻烦些,但是对 Cesium 的初学者来说会很痛苦,因为没有使用过,也不知到要怎么配置,只能搜索网上的教程,一步一步踩坑 20 | 21 | 其实不管是有经验或是初学者,每次写项目重复配置这些东西都很麻烦 22 | 23 | `vue-cli-plugin-cesium` 就是为了解决这个问题 24 | 25 | 26 | 27 | ## 介绍 28 | 29 | `vue-cli-plugin-cesium` 是一款针对 Cesium 的 VueCLI 扩展插件,使用它将会让我们在 VueCLI 中零配置使用 Cesium,基于 VueCLI3.0+ 30 | 31 | 其实就是我开始做 Cesium 的时候,觉得每次配置太麻烦,就写了个插件免配置从而节约开发时间,后来就发到几个 Cesium 开发群里给大家体验了一波,效果还不错 32 | 33 | 它会在我们已经创建好的 VueCLI 项目中做基于 Cesium 的扩展,截止目前它的功能也可以说它解决的问题如下 34 | 35 | - 自动安装 Cesium 并追加至 `package.json` 依赖项(可自选版本) 36 | - 自动扩展 VueCLI 中 Cesium 相关的 webpack 配置 37 | - 添加一个 `cesium` 别名,以便我们在项目中轻松的引入 Cesium 文件资源 38 | - 使 Cesium 对象实例可在每个 Vue 模块中使用而无须 import 引入 39 | - 使 webpack 可正常打包 Cesium 40 | - 允许 webpack 友好地在 Cesium 中使用 require,解决 require 引入警告 41 | - 开发环境生成 sourcemap,生产环境取消 sourcemap 42 | - 生产环境抽取公共模块执行压缩 43 | - 生产环境 loader 切换到优化模式 44 | - 自动在全局 main.js 中引入`Widgets.css`,可选 45 | - 自动在 `components/` 文件夹下生成示例文件,可选 46 | 47 | 48 | 49 | ## 安装 50 | 51 | `vue-cli-plugin-cesium` 是基于 VueCLI 的扩展插件,所以在使用前要先使用 VueCLI 创建一个 Vue 项目 52 | 53 | 如果您不了解 VueCLI 的使用,请移步 [VueCLI-官网](https://cli.vuejs.org/zh/guide/) 54 | 55 | 当前插件只支持 `VueCLI3.0+` 版本哦 56 | 57 | 创建好一个 Vue 项目后就可以按照以下步骤使用该插件了,同所有 VueCLI 插件一样,它有两种使用方式,推荐使用方式一 58 | 59 | 60 | 61 | ### 使用方式一 62 | 63 | 推荐使用 `vue add` 这种方式安装,一步到位,简单便捷 64 | 65 | ```js 66 | vue add vue-cli-plugin-cesium 67 | 68 | // 非全局安装的vue-cli可以 69 | npx vue add vue-cli-plugin-cesium 70 | ``` 71 | 72 | 73 | 74 | ### 使用方式二 75 | 76 | 首先安装 `vue-cli-plugin-cesium` 插件,推荐使用 yarn 安装,因为它更简洁 77 | 78 | ```js 79 | // npm 80 | npm install --save-dev vue-cli-plugin-cesium 81 | 82 | // yarn 83 | yarn add vue-cli-plugin-cesium 84 | ``` 85 | 86 | 安装完成后我们要使用 `vue invoke` 来初始化这个插件 87 | 88 | ```js 89 | vue invoke vue-cli-plugin-cesium 90 | 91 | // 非全局安装的vue-cli可以 92 | npx vue invoke vue-cli-plugin-cesium 93 | ``` 94 | 95 | 96 | 97 | ### 安装过程 98 | 99 | 在 `vue invoke` 或 `vue add` 的过程中会有三个询问 100 | 101 | **询问一** 102 | 103 | ```txt 104 | Please choose a version of 'cesium' from this list 105 | 请在列表中选择 cesium 的版本 106 | ``` 107 | 108 | 在此选择想使用的 `Cesium` 版本 109 | 110 | **询问二** 111 | 112 | ```txt 113 | Whether to import styles globally. 114 | This operation will automatically import widgets.css in main.js 115 | 是否全局引入样式,该操作将自动在main.js引入widgets.css? 116 | ``` 117 | 118 | 此项默认为 yes,该操作将自动在 main.js 引入 widgets.css,即全局引入 Cesium 的 css 样式 119 | 120 | 如果此项设置为 no,那么开发时我们要手动引入`widgets.css`样式文件,引入命令如下 121 | 122 | ```txt 123 | import "cesium/Widgets/widgets.css" 124 | ``` 125 | 126 | **询问三** 127 | 128 | ```txt 129 | Whether to add sample components to the project components directory 130 | 是否添加示例组件到项目components目录? 131 | ``` 132 | 133 | 此选项默认为 yes,该操作会自动在 `src/components` 文件夹下生成 `CesiumExample` 文件夹,此文件夹中包含一些 Cesium 的使用示例供参考 134 | 135 | 如果此项设置为 no,则不生成示例文件 136 | 137 | 生成的示例中每个文件为一个模块,可直接模块引入至项目中查看,欢迎大家PR示例模块 138 | 139 | 140 | 141 | ### GUI 安装 142 | 143 | 如果我们使用 `vue ui` 创建项目,也可以直接在项目创建后的插件选项里搜索 `vue-cli-plugin-cesium` 并安装 144 | 145 | 如下所示: 146 | 147 |  148 | 149 | 选中插件点击安装 150 | 151 |  152 | 153 | 154 | 155 | 156 | 157 | ## 使用 158 | 159 | 开发时如下,直接在模块中使用 Cesium 对象即可 160 | 161 |  162 | 163 | 查看示例组件,模块引入即可,如下 164 | 165 |  166 | 167 | 168 | 169 | ## 常见问题 170 | 171 | 当你顺顺利利安装好了插件后开始开发,使用 Cesium 对象时,可能会遇到下面这种错误 172 | 173 | ```js 174 | Error:Cesium is no-undef 175 | ``` 176 | 177 | 前端小伙伴都应该知道,这好像是 Eslint 语法错误,没错,这是因为插件内部使用了 Webpack 的内置模块 `ProvidePlugin` 来做到使用 Cesium 对象时将不再需要 `import` 或 `require` 引入,而一般我们在使用 VueCLI 创建项目时会默认带上 Eslint,Eslint 语法检验会认为 Cesium 是一个未声明的变量,于是抛出了错误 178 | 179 | **解决办法一** 180 | 181 | `package.json` 中配置 Eslint 规则允许 `no-undef` ,如下所示,在 `package.json` 中 `eslintConfig` 字段下的 `rules` 配置 `"no-undef": 0` ,在不关掉 Eslint 的情况下单独配置允许未声明的变量 182 | 183 | ```js 184 | { 185 | "dependencies": {}, 186 | "devDependencies": {}, 187 | "eslintConfig": { 188 | "root": true, 189 | "env": { 190 | "node": true 191 | }, 192 | "extends": [ 193 | "plugin:vue/essential", 194 | "eslint:recommended" 195 | ], 196 | "parserOptions": { 197 | "parser": "babel-eslint" 198 | }, 199 | "rules": { 200 | "no-undef": 0 201 | } 202 | } 203 | } 204 | 205 | ``` 206 | 207 | 208 | 209 | **解决办法二** 210 | 211 | 我们可以通过在 `package.json` 中直接删除 `eslintConfig` 对象来直接关掉 Eslint 212 | 213 | 也可以在 `vue.config.js` 中配置关掉 Eslint,如下 214 | 215 | ```js 216 | module.exports = { 217 | lintOnSave: false 218 | } 219 | ``` 220 | 221 | 修改之后重启服务即可,推荐使用第一种办法,Eslint 语法校验是一个极好的约束开发的工具,可以让我们同一个团队内的语法风格统一,最好还是不要关掉 222 | 223 | 224 | 225 | ## 结束 226 | 227 | 安装完成后,就可以在 vue 项目中任意模块中使用 Cesium 了 228 | 229 | 你可以在每个 Vue 模块中直接使用 Cesium 对象实例而无须 import 引入 230 | 231 | 如果你想引入 cesium 包下的文件,我们为 cesium 包的目录设置了别名,就叫 `cesium` 232 | 233 | 所以在引入`Widgets.css`时引入路径为`cesium/Widgets/widgets.css` 234 | 235 | 如果对您有所帮助,那么这将是我的荣幸 236 | 237 | 后期我会慢慢的完善此插件,并不停迭代,也欢迎大家提出建议,也欢迎 PR 238 | 239 | 如果您觉得还行,点个 star 再走哟 240 | 241 | 加下小助手【圈子】微信,验证消息写【cesium | github | 前端 | 后端 | 其他】都可以直接通过,和他聊聊天,或者加技术交流群我们一块玩耍都可以的 242 | 243 |  244 | --------------------------------------------------------------------------------