一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin)

这篇具有很好参考价值的文章主要介绍了一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概念与功能:

webpack是前端项目工程化的具体解决方案。它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理浏览器端JavaScript的兼容性、性能优化等强大的功能。

快速上手:隔行变色

一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin),Vue入门,webpack,前端,node.js,vue.js,vue

-S实际是--save的简写,表示安装的第三方库要被记录到package.json的<dependencies>(开发和上线都要用到的包)下。虽然不加这个参数也会默认记录到那里。 

一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin),Vue入门,webpack,前端,node.js,vue.js,vue

其中index.html: 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./index.js">
    </script>
</head>

<body>
    <ul>
        <li>这是第1个li</li>
        <li>这是第2个li</li>
        <li>这是第3个li</li>
    </ul>
</body>

</html>

index.js:

//使用ES6的导入语法,导入jquery模块
import $ from 'jquery'

//jQuery的入口函数
$(function () {
    //实现奇偶行变色。奇数行为红色。偶数行为粉色
    $('li:odd').css('background-color', 'red')
    $('li:even').css('background-color', 'pink')
})

配置webpack:

1、在项目根目录的终端那运行npm i webpack@5.42.1 webpack-cli@4.7.2 -D

2、在项目根目录中,创建名为webpack..config.js的webpack配置文件,并初始化如下的基本配置:

//使用Node.js中的导出语法,向外导出一个webpack的配置对象
module.exports = {
    mode: 'development'//mode用来指定建构模式,值为development|production
}

其中-D是--save-dev的简写,意思是将这两个包记录到package.json的devDependencies(开发阶段会被用到,上线不用)下,虽然不加也会默认记录。

3、在package.json的scripts节点下,新增dev脚本如下:

 "scripts": { //即删除掉原来的test行,因为它没有任何作用
    "dev": "webpack" //dev是自定义的脚本名,可以通过npm run+脚本名 执行。例如npm run dev
  }//注意package配置文件不允许注释,这些注释只是笔记中记得。

4、在终端中运行npm run dev命令,启动webpack进行项目的打包构建

一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin),Vue入门,webpack,前端,node.js,vue.js,vue

此时会发现项目目录中多了dist目录,里面的main.js即是webpack对于index.js和index.js中提到的高级语法,如jquery等的兼容重构。

5、然后回到index.html,将src改为新生成的main.js即可生成页面。

一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin),Vue入门,webpack,前端,node.js,vue.js,vue

6、如果想要压缩生成的main.js,需要将webpack.config.js里面的mode改为production,然后重新npm run dev

经测试得知,production的main.js是88.3 KiB,打包时间是2145ms,development的main.js是328 KiB,打包时间是332ms。(下图上面是production,下面是development)

一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin),Vue入门,webpack,前端,node.js,vue.js,vue

webpack-dev-server:

类似于node.js阶段用到nodemon工具。

每当修改了源代码,webpack会自动进行项目的打包和构建。

1、终端运行 npm install webpack-dev-server@3.11.2 -D(如果原来就安装有其他版本的webpack-dev-server,不管是比当前要安装的高版本还是低版本,都会被覆盖掉)

2、修改package.json->scripts的dev命令:"dev":"webpack serve"

3、再次运行npm run dev

4、访问浏览器的http://localhost:8080,查看自动打包效果

html-webpack-plugin

webpack中的HTML插件(类似于一个模板引擎插件)

可以通过此插件自定制index.html页面的内容

1、终端运行 npm i html-webpack-plugin@5.3.2 -D

2、修改webpack.config.js如下:

const HtmlPlugin = require('html-webpack-plugin') //导入HTML插件,得到一个构造函数
//通过构造函数构造一个实例
const htmlPlugin new HtmlPlugin({
template: './src/index.html',   //指定原文件的存放路径
filename:',/index.html',   //指定生成的文件的存放路径
})
module.exports ={
mode:'development',
plugins:[htmlPlugin],//3.通过plugins节点,使htmlPlugin插件生效
}

指定webpack的入口和输出:

在webpack4.x和5.x的版本中,有如下的默认约定:

默认的打包入口文件为src->index.js

默认的输出文件路径为dist->main.js

但是我们可以在webpack.config.js中,通过entry节点指定打包的入口。通过output节点指定打包的出口。

//使用Node.js中的导出语法,向外导出一个webpack的配置对象

const path=require('path')//导入node.js中专门操作路径的模块

module.exports = {
    entry: path.join(__dirname,'./src/index.js'),//打包入口文件的路径
    output:{//__dirname表示当前文件所属的目录,在这里是根目录
        path: path.join(__dirname,'./dist'),//输出文件的存放路径
        filename:'bundle.js'//输出文件的名称
    },
    mode: 'development'//mode用来指定建构模式,值为development|production
    //production的main.js是88.3 KiB development的main.js是328 KiB
}

loader配置

1、运行npm i style-loader@3.0.0 css-loader@5.2.6 -D

2、在webpack.config.js的module->rules数组中,添加loader规则如下:

    module: {
        rules: [//指定要加载的规则
            {
                test:/\.css$/,
                //test指定的是规则生效的文件,这里表示所有以.css结尾的文件
                use:['style-loader','css-loader']//表示要调用的loader
            }
        ]
    },

其中,test表注意:use数组中指定的loader顺序是固定的,多个loader的调用顺序是:从后往前调用文章来源地址https://www.toymoban.com/news/detail-643239.html

到了这里,关于一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 当我们尝试运行webpack-dev服务时,报node_modules/.bin/webpack-dev-server: Permission denied权限被拒绝要如何解决?

    在尝试运行webpack-dev服务器时,我们似乎遇到了权限问题。当用户没有执行webpack dev-server脚本所需的权限时,通常会发生此错误。 要解决此问题,您可以尝试以下步骤: 1、检查权限:首先,确保您拥有执行webpack-dev-server脚本所需的权限。您可以通过在终端中运行以下命令来

    2024年04月17日
    浏览(33)
  • axios请求错误处理Uncaught runtime errors:handleError@webpack-internal:///./node_modules/webpack-dev-server

    项目环境: vue3.2.13 vue-cli5.0.0 注:该问题只是出现在开发环境,打包后是不会出现的。 问题描述: 由于需要新开一个开发项目,引入必备网络请求axios及他的副手(集中处理请求及返回数据),毕竟axios和助手都是老员工,直接上手运行,哎?怎么出来个什么鬼东西,看官请

    2024年02月08日
    浏览(46)
  • webpack-dev-server 不是内部或外部命令,也不是可运行的程序 或批处理文件

    一、问题描述 webpack-dev-server 不是内部或外部命令,也不是可运行的程序 或批处理文件 出现上述问题 一般是node.js的版本不一致造成。 二、解决方法:换成低版本的node.js node.js换成12或11版本即可 2.1.先卸载高版本node.js 在控制面板中卸载node.js,并删除安装目录 2.2.安装nvm管理工

    2024年02月07日
    浏览(49)
  • 【BUG】‘webpack-dev-server‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

    从gitee上把项目拉过来的时候,先 npm install 然后 npm run dev 第一种方法 尝试进行npm install,如果还是不可以就尝试第二种方法,通常是没有装依赖导致的问题。 第二种方法 可以通过修改npm的配置文件让npm到另外的pacakge mirror站点去找package,通过如下命令 然后就可以运行了 OK

    2024年01月18日
    浏览(39)
  • 初识webpack(二)解析resolve、插件plugins、dev-server

    目录 (一)webpack的解析(resolve) 1.resovle.alias 2.resolve.extensions 3.resolve.mainFiles (二) plugin插件 1.CleanWebpackPlugin 2.HtmlWebpackPlugin 3.DefinePlugin  (三)webpack-dev-server 1.开启本地服务器 2.HMR模块热替换 3.devServer的更多配置项  解析(Resolve) | webpack 中文文档 | webpack中文文档 | webpack中文网 resolve

    2024年02月19日
    浏览(45)
  • [webpack-cli] Invalid options object. Dev Server has been initialized using an options object that d

    问题: 在 webpack.config.js 配置了devServer,通过contentBase 配置了静态资源的路径,但是报错了。报错如下: 原因及解析: 错误信息中提示contentBase 不是有效的配置项(可以看到contentBase不在罗列的有效配置项中)。因为Weback 5 将 contentBase的配置修改为 static 解决 把 contentBase 改为

    2024年03月22日
    浏览(93)
  • ❤ npm 报错This relative module was not found: * ./src/main.js in multi (webpack)-dev-server/client?

    ❤ npm 报错 ❤ 错误原因 手动把文件路径写错了外 还一个可能是所使用的编辑器造成的,当更改了文件目录或者文件名后,编辑器会聪明的把一些认为有关联的路径也一并修改了 ❤ 解决方法 最好的解决办法就是删除最外层的node_modules文件和package-lock.json文件,删除后重新n

    2024年02月14日
    浏览(54)
  • Vue3 - 解决 build / dev 打包运行时突然出现一堆 ts 相关的报错,强制关闭整个项目的 ts 代码语法校验和验证(webpack / vite 均可)

    无论您是 vite 还是 webpack,都可以 100% 去掉运行或打包时的 ts 语法验证。 本文 实现了在 vue3 + ts 开发中,关闭运行、打包部署命令时出现的各种 ts 校验报错,去掉对 ts 的验证, 有些朋友对 ts 不是很了解(所以在写代码时没注意一些语法),导致最终 build 打包时出现了很多

    2024年02月11日
    浏览(60)
  • webpack相关面试

     npm run xxx 的时候,首先会去项目的 package.json 文件里找 scripts 里找对应的 xxx ,然后执行 xxx 的命令 npm i 的时候, npm 读到该配置后,就将该文件软链接到 ./node_modules/.bin 目录下,而 npm 还会自动把node_modules/.bin加入$PATH , 就帮我们把这种软连接配置好了,其实这种软连接相当

    2024年02月12日
    浏览(29)
  • webpack相关面试题

    1.底层的语言 webpack 是基于 nodejs 构建, js 是以毫秒计数。 vite 是基于 esbulid 预构建依赖, esbulid 是采用 go 语言编写的, go 语言是纳秒级别的。 因为 js 是毫秒级别, go 语言是纳秒级别。所以 vite 比 webpack 打包器快10-100倍。 2.打包过程 webpack:分析各个模块之间的依赖=然后进

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包