一。entry

指定webpack从哪个文件开始入手打包,下面是单入口

多页面开发,每个页面都有自己的js文件,多个文件,所以需要多个入口

我们看看多入口,单出口bundle.js,我们在src仅仅多加了一个 search.js

我们run一下(打包)

多出口写法:

二。loader

了解在哪配置,如何配置loader,webpack本身只能处理js模块(文件)

loader并不是只能只能帮助webpack处理非js文件

为什么包不集成到一起,或者功能不集成到一起,比如为什么不把loader和webpack集成到一起,以及babel为什么那么麻烦一会安装一个一会安装一个包,因为有时候我们仅想使用某些功能,不需要全部,有些浪费资源,电脑奔溃了,分成不同的loader,想用什么功能就加载什么功能

接下来在webpack中使用babel编译代码 ,把babel和webpack连通的东西就是babel-loader,有了babel-loader ,才能webpack中使用babel编译代码 ;webpack使用babel-loader借助babel的力量,先把js编译再打包,我们这时候只需要babel/core和babel/preset-env,不需要babel/cli,因为直接在webpack中用,不是直接在命令行中;

使用babel loader

我们继续把webpack初体验的相关文件(圈中)拿过来

这是src下面的index.js文件

①安装webpack的两个包

②安装babel包

先复习一下在cli中babel的使用:

在项目文件夹目录下打开命令行--如果没有package.json文件就要先初始化---根据babel官网指导安装core和cli包---在 package.json 文件中添加执行 babel 的命令

  "scripts": {
    "build": "babel src -d dist"
  },
src自己创建好,里面放js文件---缺少babel配置文件---安装preset-env包(这个包的作用就是告诉babel具体该怎么转换ES6的语法)---创建.babelrc文件添加{ "presets": ["@babel/preset-env"] }这句代码---执行npm run build即完成了babel的编译(自动创建dist文件夹,里面有个babel.js就是src里面babel.js的编译版)
复习一下webpack的使用:初始化--安装webpack包和webpack/cli包---创建webpack.config.js(默认名) 这个文件--配置
---自己创建好src目录下的index.js等文件--在package.json中添加执行webpack的命令
---npm run webpack---会默认创建一个dist文件夹,然后里面有一个bundle.js,这就是打包后的,代码是经过压缩混淆的;
 
在webpack中使用babel的步骤
 
配置babel
接下来配置loader,凡是和webpack相关的配置都要在webpack的配置文件中配置,loader也在webpack的配置文件中配置
test后面跟正则,表面想要在哪些文件上使用babel loader
这时如果运行npm run webpack,则会去匹配项目目录下的所有js文件
运行npm run webpack
babel编译好后再交给webpack去打包,步骤和webpack初体验一样;
 
但是对于 ES6 新增的 API,比如 Set、Map、Promise 等全局对象,以及一些定义在全局对象上的方法(比如 Object.assign/Array.from)都还是不能直接编译,此时我们还是需要引入其他的模块;
 
下面就是我们要引的模块:这个模块帮我们实现ES6新增对象,api等,让浏览器兼容
通过import导进来
把dist删了再次编译打包(run),打包最终的文件,ES6语法 ,新增api,promise,Array.from,Object.assign都被转换成ES5,浏览器也都能兼容了
 
三。plugins
 
如何在webpack中配置插件
我们把webpack包安装一遍
接着安装plugin包
在webpack配置文件中配置,在配置文件中将这个包引入
HtmlWebpackPlugin是类或者说是构造函数
执行npm run webpack
 
 
 
 
 
 
 
 
 
 

webpack的核心概念的更多相关文章

  1. Webpack 一些核心概念了解

    Webpack的几个核心概念 Entry:入口,Webpack执行构建的第一步将从Entry开始,可抽象成输入. Module:模块,在Webpack里一切皆模块,一个模块对应一个文件.Webpack ...

  2. webpack的四个核心概念介绍

    前言 webpack 是一个当下最流行的前端资源的模块打包器.当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后 ...

  3. webpack核心概念

    一.webpack四个核心概念 1.入口[Entry] webpack将创建所有应用程序 依赖关系图表.图表的起点被称之为 入口起点.入口起点告诉webpack从哪里开始,并遵循着依赖关系图表知道打包 ...

  4. 通过核心概念了解webpack工作机制

    webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency gr ...

  5. webpack安装与核心概念

    安装webpack webpack核心概念:入口.输出.加载器.插件.模块.模式 一.安装webpack 1.安装webpack之前需要安装nodejs环境,在使用nodejs环境自带的包管理工具np ...

  6. webpack学习2.3webpack核心概念

    核心概念(四个) Entry(入口) Output(出口) Loaders()来处理其他类型的资源文件 Plugins(插件) 1.入口(Entry) 作用:代码的入口,打包的入口,单个或多个, 示例 ...

  7. webpack 四个核心概念

    webpack 是当下最热门的前端资源模块化和打包工具.它可以将许多松散的模块(如 CommonJs 模块. AMD 模块. ES6 模块.CSS.图片. JSON.Coffeescript. LES ...

  8. webpack(2)webpack核心概念

    前言   本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具.当 webpack 处理应用程序时,它会在内部构建一个 依赖图(dependency graph) ...

  9. 玩转webpack(二):webpack的核心对象

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者介绍:陈柏信,腾讯前端开发,目前主要负责手Q游戏中心业务开发,以及项目相关的技术升级.架构优化等工作. 前言 webpack 是一个强大的模 ...

  10. fusionjs 学习二 核心概念

    核心概念 middleware 类似express 的中间件模型(实际上是构建在koa中间件模型上的),但是和koa 的中间件有差异 fusionjs 的中间件同时可以运行在浏览器页面加载的时候 se ...

随机推荐

  1. 《价值流动-Project To Product》读后感

    背景:2022年8月,在这家公司已经任职满两年.这两年我最大的成就就是基于Scrum模式推行了敏捷项目管理,并取得了一定的成果.但是,在推行了两年后新的问题也产生了.例如: 1,项目管理上,项目经理缺 ...

  2. 微信小程序-【转发好友】以及中文标题乱码问题解决

    微信小程序的转发功能,参考官方文档,使用的buttom的open-type功能,下面是转发功能的具体实现. // 通过按钮的 open-type="share"实现转发,触发onS ...

  3. 手写一个audio播放器,实现歌曲切换,列表歌曲循环,音量调节等 vue组件

    1 <template> 2 <div class="wrapper"> 3 <svg 4 t="1673833915638" 5 ...

  4. echarts使用dataset数据集创建单轴散点图

    dataset创建单轴散点图 由于使用echarts作图时,我很喜欢用dataset作为数据源,但是官方案例中,有没有给出相关示例,于是,在翻阅官方文档相关案例之后,结合官方文档使用dataset的示 ...

  5. JZOJ 3213. 【SDOI2013】直径

    题目 思路 树的直径很好求,两遍 \(dfs\),记下两个端点 然后很显然所有直径经过的边必然在我们求出的这条直线上 那么我们只要判断一下一条直径上的边是不是答案 假设当前边为 \(i\) 那么把 \ ...

  6. Philips and Calculator

    代码 #include<cstdio> #include<algorithm> using namespace std; const int N = 3 * 1e6; int ...

  7. JZOJ 4319. 【NOIP2015模拟11.5】Lucas的数列

    题目 思路 暴力很好打,我们显然可以先把关于 \(k\) 的式子拆开 先二项式展开,然后把外面的 \(m\) 乘进去,把 \(p\) 的分母 \(m\) 消去 \(K = (\sum_{i=1}^m ...

  8. JZOJ 4313. 【NOIP2015模拟11.4】电话线铺设

    题目 思路 先求只用王牌电缆的最小生成树 再选一条李牌电缆替换王牌电缆 使答案最小就完了 假如要替换的李牌电缆两端点是 \(u,v\) 那么生成树中 \(u \Longrightarrow lca(u ...

  9. Flutter:StatefulWidget 怎么传参

    定义好一个有状态(或无状态)的组件之后,需要为其传递一些参数,希望组件能够更加灵活使用.那么,在 Flutter 中如何为其传递参数呢? 以下是 StatefulWidget 传递值的步骤,一共三步: ...

  10. 使用Vue来制作导航栏超级简单

    在我们还没有学习Vue的时候一般都是使用JQ来制作导航栏,但是太复杂. 而使用Vue 来制作你会发现异常简单话不多说上代码 css代码随便写一写样式 HTML 部分,要给div设置一个ID   这里面 ...