【Vue】webpack的基本使用

这篇具有很好参考价值的文章主要介绍了【Vue】webpack的基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

webpack module.exports,VUE学习,webpack,vue.js,前端

✍️ 作者简介: 前端新手学习中。

💂 作者主页: 作者主页查看更多前端教学

🎓 专栏分享:css重难点教学   Node.js教学 从头开始学习   ajax学习

webpack的学习目标

  1. 理解什么是前端工程化
    • 转变对前端开发的认知
  2. 了解webpack的基本用法
    • 为后面Vue和React课程的学习做技术储备
  3. 不强制要求大家能手动配置 webpack
    • 一定要知道webpack在项目中有什么作用
    • 清除webpack中的核心概念

前端工程化

 小白眼中的前端开发 vs 实际的前端开发

  1. 小白眼中的前端开发
    • 会写HTML + CSS +JavaScript就会前端开发
    • 需要美化页面样式,就拽一个bootstrap过来
    • 需要操作DOM或发起Ajax,再拽一个jquery过来
    • 需要快速实现网页布局效果,就拽一个Layui过来
  2. 实际的前端开发
    • 模块化(js的模块化,css的模块化,资源的模块化)
    • 组件化(复用现有的UI结构,样式,行为)
    • 规范化(目录结构的划分,编码规范化,接口规范化,文档规范化,Git分支管理)
    • 自动化(自动化构建,自动部署,自动化测试)

 什么是前端工程化

前端工程化指的是:在企业级的前端项目开发中,把前端开发所谓的工具,技术,流程,经验等进行规范化,标准化。
企业中的Vue项目和React项目,都是基于工程画的方式进行开发。

好处:前端开发自成体系,有一套标准的开发方案和流量。

 前端工程化的解决方案

  1. 早期的前端工程化解决方案
    • grunt
    • gulp
  2. 目前主流的前端工程化解决方案
    • webpack
    • parcel

webpack的基本使用

  什么是webpack

概念: webpack是前端项目工程化的具体解决方案。

主要功能:它提供了友好的前端模块化开发支持,以及代码压缩混淆,处理浏览器端JavaScript的兼容性性能优化等强大的功能。

好处:让程序员把工作的重心放到具体功能的实现上,提高了前端开发效率和项目的可维护性。

注意:目前Vue,React等前端项目,基本上都是基于webpack进行工程化开发的。

  列表隔行变色项目

步骤

  1. 新建项目空白目录,并运行npm init -y命令,初始化包管理配置文件package.json
  2. 新建src源代码目录
  3. 新建src->index.html首页和src->index.js脚本文件
  4. 初始化首页基本的结构
  5. 运行npm install jquery -s命令,安装jQuery
  6. 通过ES6模块化的方式导入jQuery,实现列表隔行变色的效果
    webpack module.exports,VUE学习,webpack,vue.js,前端
<!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>
</head>
<body>
    ul>li{这是第$个li}*9
</body>
</html>

webpack module.exports,VUE学习,webpack,vue.js,前端

webpack module.exports,VUE学习,webpack,vue.js,前端
import和require导入模块的区别
1、require对应导出的方法是module.exports,
import对应的方法是export default/export

2、require 是CommonJs的语法
import 是 ES6 的语法标准。

3、require是运行运行时加载模块里的所有方法(动态加载),
import 是编译的时候调用(静态加载),不管在哪里引用都会提升到代码顶部。

4、require 是CommonJs的语法,引入的是的是整个模块里面的对象,
import 可以按需引入模块里面的对象

5、require 导出是值的拷贝,
import 导出的是值的引用
6. require是node.js带有的 CommonJS语法里的东西,可以在终端中运行
如果要在浏览器端运行 我们要使用import这个es6语法
js代码

//导入模块
// const $ = require('jquery')
import $ from "jquery";
//定义jquery入口函数

$(function () {
    $('li:odd').css('background-Color', 'red')
    $('li:even').css('background-Color', 'pink')
})

将js文件导入index.html之后,发现没有效果,这时我们就需要webpack工具了,将语法进行重新编译,把es6语法转化为es5语法。

    在项目中安装并配置webpack

npm i webpack@5.42.1 webpack-cli -D

生产依赖
webpack module.exports,VUE学习,webpack,vue.js,前端
创建webpack.config.js配置文件并写入
webpack module.exports,VUE学习,webpack,vue.js,前端

//使用node.js的导出语法向外导出一个webpack的配置对象
//导入模块并进行导出内容,这样写会比直接导出内容多一个记录信息的txt文件,当然我们也可以使用es6语法进行导入导出,大家可以私下去了解。
const { Module } = require("webpack");

Module.export = {
    mode: 'development'
}
//也可以直接导出内容
// module.export = {
//     mode: 'development'
// }

在package.json配置文件中的script中写入声明

webpack module.exports,VUE学习,webpack,vue.js,前端

最后执行npm命令进行编译,有一个注意点就是node.js版本需要是17版本以下的不然会出错,当然应该有其他解决办法,但博主不会,只好退回版本
执行 npm run dev 这个命令,可以看到src里的index.js和jquery.js都被压缩了。
webpack module.exports,VUE学习,webpack,vue.js,前端
会生成一个编译后的文件夹
webpack module.exports,VUE学习,webpack,vue.js,前端
将main.js文件导入index.html.,不用导入index.js。
webpack module.exports,VUE学习,webpack,vue.js,前端
打开页面就可以成功显示了
webpack module.exports,VUE学习,webpack,vue.js,前端
mode的可选值
mode节点的可选值有两个,分别是:

  1. development
    • 开发环境
    • 不会对打包生成的文件进行代码压缩和性能优化
    • 打包速度快,适合在开发阶段使用。
  2. production
    • 生产环境
    • 会对打包生成的文件进行代码压缩和性能优化
    • 打包速度很慢,仅适合在项目发布阶段使用
      开发的时候使用development,打包速度快,上线的时候使用production,体积小。

    webpack.config.js的作用

当我们使用npm run dev这个命令的时候,会执行package里的dev里的内容,webpack module.exports,VUE学习,webpack,vue.js,前端
dev里写的webpack,那么它就会执行weboack.config.js这个文件里的内容,根据里面的内容再进行打包。
webpack module.exports,VUE学习,webpack,vue.js,前端
webpack中的默认约定

大家可能有个疑问,就是打包的时候为什么会打包index.js这个文件,它是怎么寻找的路径等问题。

在webpack4和5的版本中,有如下的默认约定,找不到就会报错。

  1. 默认的打包入口文件为src -> index.js
  2. 默认的输出文件路径为dist -> main.js
    webpack module.exports,VUE学习,webpack,vue.js,前端

注意:可以在webpack.config.js中修改打包的默认约定。

自定义打包的入口和出口

在webpack.config.js配置文件中,通过entry节点指定打包的入口,通过output节点指定打包的出口文件夹和出口文件。

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

const path = require("path");
module.exports = {
    mode: 'development',
    entry: path.join(__dirname, 'src/index.js'),
    //设置打包输出路径,以及输入文件名称
    output: {
        //指定存放目录
        path: path.join(__dirname, 'dist1'),
        filename: 'new.js'
    }
}

生成的文件就变了。
webpack module.exports,VUE学习,webpack,vue.js,前端

    webpack中的插件

当我们修改js文件之后,需要重新打包才能有效,每修改一次都要重新打包一次,这就很麻烦我们可以 通过安装和配置第三方的插件,可以扩展webpack的能力,从而让webpack用起来更方便,常用的webpack插件有如下两个:

  1. webpack-dev-server
    • 类似于node.js阶段用到的nodemon工具。
    • 每当修改了源代码,webpack会自动进行项目的打包和构建。
  2. html-webpack-plugin
    • webpack中的html插件(“类似于一个模板引擎插件”),
    • 可以通过此插件自定制index.html页面的内容。
      webpack-dev-server

安装webpack-dev-server

安装命令
npm install webpack-dev-server@3.11.2 -D

配置webpack-dev-server

  1. 重新配置package.json中的script里的dev内容
    webpack module.exports,VUE学习,webpack,vue.js,前端
  2. 再次运行 npm run dev命令,重新进行项目打包
  3. 在浏览器中访问本地8080端口,查看自动打包效果。

注意:webpack-dev-server会启动一个实时打包的http服务器。
webpack module.exports,VUE学习,webpack,vue.js,前端
这样当我们每次修改index.js文件时,保存后就会自动打包,摁两次ctrl+c就可以终止运行。

这种打包实际上时虚拟打包,并不是每次保存打包之后将main.js进行了修改,当我们修改代码保存自动打包之后,我们发现页面UI并没有变化,那是因为main.js实际上没有修改,访问自动打包修改后的页面需要访问本地8080端口webpack module.exports,VUE学习,webpack,vue.js,前端
在这个http服务器内才能访问到修改后的内容,我们前面说了修改后的js并没有保存到main.js中,那它保存到哪里去了?它其实被保存到了根目录中,以内存的形式进行了保存。webpack module.exports,VUE学习,webpack,vue.js,前端
文件名跟你前面设置的打包文件名一样,虽然看不到这个文件但是可以进行访问,我们需要把页面引入链接从 new.js改成新生成的保存到内存中的new.js,完成这两个步骤就可以真正的实现自动打包并实时演示了。webpack module.exports,VUE学习,webpack,vue.js,前端

      html-webpack-plugin

当我们开启了自动打包服务功能,访问服务器后,显示的是根目录,需要点击一下文件夹,才能显示页面文件index.html,我们只需要把页面文件copy一份儿到根目录,这样点开网页就能直接显示,这个webpack插件就可以实现相应的功能。

安装

npm install html-webpack-plugin@5.3.2 -D

使用代码

//导入相应模块
const HtmlPluginConfig = require('html-webpack-plugin')
//实例化
const HtmlPlugin = new HtmlPluginConfig();

//实例化
const HtmlPlugin = new HtmlPluginConfig({

    //被复制文件的路径
    template: './src/index.html',
    //复制到哪
    filename: './index.html'

});

最后再向外暴露对象

 //插件的数组,将来webpack在运行时,会加载并调用这些插件
    plugins: [HtmlPlugin] //将实例化对象写入。

执行 npm run dev命令,进行自动打包,然后进入本地8080端口网页,就可以直接看到页面了。
webpack module.exports,VUE学习,webpack,vue.js,前端
当你修改js之后也会实时更新。

注意点以及个人建议和理解
我们可以在scripts里设置两个属性,dev是用来开发实时浏览观看内容的,dev2是用来进行物理打包的(当你完成项目需要打包的时候)。
webpack module.exports,VUE学习,webpack,vue.js,前端
这里我需要说一下html-webpack-plugin这个插件,上面我们可以直接看到页面是因为这个插件复制了一份儿index.html到根目录所以可以直接访问。
这个插件里面 有个属性叫filename,就是你将文件复制到什么位置。
webpack module.exports,VUE学习,webpack,vue.js,前端
两个注意点

第一个就是它的值,属性值写的相对路径是根据你打包文件的位置为基准的,并不是webpack.config.js的文件位置,./就跟你的new.js文件在同一个文件夹里,…/就在new.js的上级文件夹里,所以当你打包的时候会发现除了new.js之外还有index.html

第二个就是输出方式,如果执行的是dev2,那么就跟new.js进行物理复制,如果执行的是dev那么就跟new.js一样,以内村存储的方式进行保存。

生成的html文件里会自动导入同时打包的js文件
webpack module.exports,VUE学习,webpack,vue.js,前端

      devServer节点

在webpack.config.js配置文件中,可以通过devServer节点对webpack-dev-server插件进行更多配置。
其中有一些属性设置可以更方便我们进行开发。文章来源地址https://www.toymoban.com/news/detail-795084.html

  devServer: {
        open: true, //打包完成后默认打开浏览器
        port: 8080,//修改端口号
        host: '127.0.0.1' //修改主机地址
    }

到了这里,关于【Vue】webpack的基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vue3 项目中使用setup()函数报错,script setup cannot contain ES module exports

    当使用vue3+vite使用语法糖setup时,要注意写法. 第一种写法就是 script 标签里面配置 setup,另一种是:export default 类里配置 setup() 方法, 我们只需要使用一种方法即可,混用了就会报错了。 解决: 第一种 script setup import {ref} from \\\'vue\\\' import { Toast } from \\\'vant\\\'; import Index from \\\'../pag

    2023年04月08日
    浏览(40)
  • Vue-解决BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.

    跑个vue的项目,突然出现以下报错 仔细阅读报错并查找相关资料才发现,原来是webpack5中移除了nodejs核心模块的polyfill自动引入,所以需要手动引入 OK,知道了问题所在,那就开始解决问题! 环境依赖的安装 首先我们先安装一下 node-polyfill-webpack-plugin ,这是一个 Webpack 插件,

    2024年04月12日
    浏览(25)
  • Vue.js 学习14 集成H265web.js播放器实现webpack自动化构建

    H265web.js 是一个用于在 Web 浏览器中播放 H.265 视频的 JavaScript 播放器。它支持在浏览器中直接解码 H.265 编码的视频流,提供了高效的视频播放体验。在 Element UI 项目中集成 H265web.js 可以让我们轻松实现 H.265 视频的播放功能。 H265web.js 开源地址: https://github.com/numberwolf/h265web

    2024年03月14日
    浏览(47)
  • vue3-json-schema-form中StringField.vue报错 `<script setup>` cannot contain ES module exports vue/no-e

    vue3-json-schema-form课程中StringField.vue照着打报错 原代码如下: 修改后代码如下: type.ts文件代码片段如下: 主要问题就是说script标签中加上setup,代码块中不能再出现export default,将该部分代码 修改为:

    2024年02月11日
    浏览(25)
  • 使用vue-qr,报错in ./node_modules/vue-qr/dist/vue-qr.js

    找到node_modules— vue-qr/dist/vue-qr.js 文件,搜…e,将…去掉,然后重新运行项目。

    2024年02月03日
    浏览(32)
  • vue3 - Vue 项目处理GitHub Pages 部署后 _plugin-vue_export-helper.js 404

    GitHub Demo 地址 在线预览 vue3项目打包后部署到github pages 后,预览网站提示下划线开头的一个文件 _plugin-vue_export-helper 访问不到,网络请求显示404 处理GitHub Pages 部署 _plugin-vue_export-helper.js 404 https://github.com/rollup/rollup/blob/master/src/utils/sanitizeFileName.ts 需要修改配置 vite.config.js,重

    2024年02月07日
    浏览(32)
  • webpack安装和使用及超详细配置一个基本vue项目的全部流程(包括路由、less、引入图片渲染)

    webpack官网: https://webpack.docschina.org/concepts/ 一:搭建一个简单的webpack项目 1:准备工作 需要在node环境才能使用webpack,所以需要先安装node,安装node请自行百度。dddd 如图,我这里使用的是14.17.0版本的 2:初始化项目 首先创建一个文件夹,这里我的命名是myWebpack,然后使用n

    2024年02月02日
    浏览(32)
  • 《基于 Vue 组件库 的 Webpack5 配置》2.模块规则 module.rule

    配置 module.rules ,创建模块时,匹配请求的规则数组; 可参考 webpack5 指南-管理资源; vue 可参考上述配置; js 使用 webpack babel-loader; css 参考 webpack 加载 CSS。注意 style-loader 和 vue-style-loader 选一个即可,两者的功能基本一致,只是 vue-style-loader 可用于服务端渲染 SSR; stylus

    2024年02月11日
    浏览(33)
  • 如何解决创建vue项目后没有webpack.config.js(vue.config.js)文件

    ◼️ webpack.config.js文件没有的原因 Vue 项目中 vue.config.js 文件就等同于 webpack 的 webpack.config.js。 vue-cli3 之后创建的时候并不会自动创建 vue.config.js,因为这个是个可选项,所以一般都是需要修改 webpack 的时候才会自己创建一个 vue.config.js。 vue-cil3之后创建项目后的目录结构如下

    2024年02月04日
    浏览(40)
  • Webpack打包图片-js-vue

    为了演示我们项目中可以 加载图片 ,我们需要在项目中使用图片,比较常见的使用图片的方式是两种: img 元素,设置 src 属性; 其他元素(比如div),设置 background-image 的css属性; 我们当前使用的webpack版本是webpack5: 在webpack5之前,加载这些资源我们需要使用一些 loader

    2024年02月06日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包