Webpack01

5 篇文章 0 订阅
4 篇文章 0 订阅

1.认识Webpack

        Webpack是一个静态模块打包器,可以将我们写的程序打包成一个或者多个文件。那么什么是模块呢?Webpack中的模块指的是Webpack可以处理的最小文件,js、css、图片等等。什么是静态呢?静态指的是在开发过程中,存放在本地的资源(js、css、图片这些),而非是从远程服务器获取到的资源。场景:我们开发ES6的时候,会使用module,把写的代码拆分为好多个模块,这些操作下,浏览器需要解析就得做其他处理,手动解决这个问题就很慢,所以就使用了Webpack。

2.使用Webpack

初始化项目

        首先我们需要先初始化自己的项目,同Babel一样,在项目目录下键入命令:npm init,给项目起一个自己的名字(依旧注意不能是中文名),生成package.json表示初始化成功。

安装Webpack依赖的包

        安装webpack-cli和webpack包,同Babel,这两个包一个就是命令行工具,另外一个就是核心包。安装完成后会在package.json中体现出来。因为webpack是开发时需要使用到的,所以安装成开发依赖 (--save-dev)。

配置Webpack

        同Babel一样,webpack也是需要配置的。官方文档路径:https://webpack.docschina.org/concepts/

        我们来试一下,创建好webpack.config.js文件,其中配置如下:

其中entry表示文件入口,用来指定webpack使用哪个模块(./src/index.js)进行分析模块的依赖关系的。

output表述输出,指定输出目录(./dist)及输出文件名(testWebpack.js)。

index.js内代码为:

module.js中代码为:

 接下来需要设置启动webpack的命令,在package.json中的“script”中进行设置。

好的,设置完成后让我们来看看效果吧!在命令行工具中使用命令 npm run webpack

 运行成功后,可以看到生成了dist目录,目录下的文件名为testWebpack.js

 

 这也不用测试了,明眼就能看出来是已经把我们的代码合并为一个文件了,并且可以正确输出。

 3.webpack的核心概念

入口(entry)

单个入口文件可以简写为以上图中所示:

module.exports = {
  entry: './path/to/my/entry/file.js',
};

这其实是以下的简写(单一入口简写就行,下图是为了讲多入口的):

module.exports = {
  entry: {
    main: './path/to/my/entry/file.js',
  },
};

而当我们实际开发的时候如果是多页面开发,入口文件并不一定是一个,所以可以这么写:

module.exports = {
  entry: {
    app: './src/app.js',
    adminApp: './src/adminApp.js',
  },
};

可见对象语法会比较繁琐。然而,这是应用程序中定义入口的最可扩展的方式。

输出(output)

单入口的上边已经做了介绍,这里主要是看一下多入口的文件输出是怎么样的:

module.exports = {
  entry: {
    app: './src/app.js',
    search: './src/search.js',
  },
  output: {
    filename: '[name].js',
    path: __dirname + '/dist',
  },
};

可以看到设置了filename是'[name].js' ,使用name占位符,webpack会自动把入口文件的名字传进来,生成./dist/app.js和./dist/search.js。

我们试一下吧:配置文件如下

新增search.js如下:

 npm run webpack 试试:

 生成了index.js和search.js, 成功。

 加载器(loader)

官方文档:https://webpack.docschina.org/concepts/loaders/

loader的作用是让webpack处理非js的模块的,默认的webpack是用来处理js的,但是我们需要他去处理其他的资源(css\图片等),那么就需要loader去加载处理其他资源的能力。

我们这里使用babel-loader来做例子使用loader,babel是来编译ES6的代码的,webpack是用来打包js文件的,这是两个相互独立的东西,而把这两个独立的东西关联起来的正是babel-loader。

我们来安装一下依赖的包。

npm install --save-dev babel-loader @babel/core @babel/preset-env

然后创建babel的配置文件babel.config.json

配置webpack.config.js配置文件:

 写一个之前的index.js测试用

 

   npm run webpack试试:

 可以看到已经进行编译了,但是很明显Array.from 、Promise这些都还没有转,是因为babel也不认识这些东西,所以还需要加载其他的模块:Polyfill,所以需要在引入一个包:core-js

 在index.js中引入:

再试一下:

可见生成的文件相当大,但是解决了兼容性的问题,引入了core-js写的之前没有的方法。成功。

 插件(plugin)

 官方:https://webpack.docschina.org/plugins/

我们使用html-webpack-plugin来试试:

首先需要安装包 npm install --save-dev html-webpack-plugin

然后在webpack.config.js中配置

 然后npm run webpack试试:

生成成功。 

同样的,插件的使用也得考虑多入口的因素,

其中template指定模板文件,filename指定输出文件名,chunks指定引入的脚本名(要和上边的命名相同)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Egret是一个HTML5游戏开发引擎,而Egret Webpack是Egret引擎团队为了提高项目编译效率而封装的一个Webpack插件。在Egret 5.3.6版本中,引入了对Webpack的支持。通过使用Webpack,开发者可以显著提高项目的增量编译效率,并能够更好地利用npm上丰富的第三方JavaScript库。Egret Webpack提供了两个插件,分别是WebpackDevServerPlugin和WebpackBundlerPlugin。这两个插件可以被所有Egret项目使用。在构建过程中,这两个插件包含了一个typescript.mode字段,可以设置为legacy或modern模式,用于配置编译设置。在使用Egret Webpack之前,首先需要初始化package.json文件并安装Webpack。可以通过运行npm init命令来初始化package.json文件,然后通过运行npm install --save-dev webpack命令来安装WebpackWebpack是一款功能强大的模块加载器和打包工具,可以将各种Web开发中常用的静态资源进行统一的管理和打包发布。它可以处理JS(包括JSX)、CoffeeScript、TypeScript、样式(如less/sass)、图片等各种资源,并能够处理模块之间的依赖关系。Webpack具有强大的模块化功能,可以兼容多种JS书写规范。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Webpack 改进编译速度egret(理论)](https://blog.csdn.net/qq_37193522/article/details/121215099)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Egret应用开发实践(01) Egret与WebPack](https://blog.csdn.net/weixin_34060299/article/details/89443497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值