webpack是打包JavaScript模块流行且强大的工具。它允许开发人员以直观的方式构造代码和assets,并使用简单的require语句根据需要加载不同类型的文件。构建时,它将跟踪代码依赖关系,并将这些模块打包到浏览器加载的一个或多个包中。
在本教程的前半部分,我们从头开始建立了简单的Web应用程序使用webpack,然后覆盖后续步骤集成Cesium npm module。如果你喜欢使用cesiumjs开发Web应用,那么webpack是一个好的选择。如果您是刚接触Cesium并且想要寻找学习构建您的第一个样例应用,请查看Getting Started Turtorial。
在第二部分,我们将探索更高级的Webpack配置,以优化使用CesiumJS的应用程序。
在官方的cesium-webpack-example中可以找到优化CesiumJS webpack应用程序的完整代码和提示。
Prerequisites 先决条件
- 基本了解命令行、JavaScript和Web开发。
- 一个IDE或代码编辑器。Cesium团队的开发人员使用Visual Studio Code,但是一个最小的代码编辑器(如Sublime文本)也完全没有问题。
- 已安装Node.js。我们建议使用最新的LTS版本。
Create a basic webpack app 创建基础webpack应用
在本节中,我们将介绍如何使用webpack和开发服务器设置基本的Web应用程序。如果您已经设置了一个应用程序,并且只想添加cesiumjs,请跳过Add CesiumJS to a webpack app。
Initialize an app with npm 使用npm初始化应用
为您的应用创建一个新的cesium-webpack。打开控制台,导航到新目录,然后运行以下命令:
npm init
按照提示操作并填充有关应用程序的所有详细信息。按enter键使用默认值。这将创建package.json。
Create the app code 创建应用代码
为我们的应用程序代码创建一个src目录。当我们构建应用程序时,webpack将在dist目录中生成分发文件。
创建src/index.html然后为样板HTML页添加代码。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<title>Hello World!</title>
</head>
<body>
<p>Hello World!</p>
</body>
</html>
接下来,为应用程序创建一个入口点。这是webpack查找包的所有javascript源代码和依赖项的entry point起点。
创建src/index.js然后添加下列代码:
console.log('Hello World!');
Install and configure webpack 安装和配置webpack
开始安装webpack:
npm install --save-dev webpack
Configuration 配置
创建webpack.config.js以定义webpack配置对象。
const path = require('path');
const webpack = require('webpack');
module.exports = {
context: __dirname,
entry: {
app: './src/index.js'
},
output: {
filename: '[name].js',
path: path.resolve(__dirname, 'dist'),
}
};
context指定文件的基本路径。entry用于指定包。在这种情况下,app包的入口点是src/index.js。webpack将把打包后的app.js输出到dist文件夹。
Loaders 加载
Webpack像模块一样加载所有内容。使用loaders加载CSS和其他资产文件。安装style-loader、css-loader和url-loader。
npm install --save-dev style-loader css-loader url-loader
在webpack.config.js中添加两个module.rules:一个用于css文件,另一个用于其他静态文件。对于每个,test定义要加载的文件类型,use指定加载程序的列