前端学习--Vue(1)webpack

news2024/11/27 4:24:27

前端工程化

模块化(js、css模块化、资源模块化)

组件化(复用现有的UI结构、样式、行为)

规范化(目录结构划分、编码规范化、接口文档规范化、git分支管理)

自动化(自动化构建、自动部署、自动化测试)

主流的前端工程化解决方案:

webpack (https://www.webpackjs.com)

parcel (https://zh.parceljs.org)

一、webpack基本使用

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

优点:提高开发效率和项目可维护性

1.1 案例

  1. 新建项目文件夹,进入cmd运行npm init -y(初始化包管理配置文件package.json)
  2. 新建src源代码文件夹
  3. 在src目录下新建index.html和index.js
  4. 运行npm install jquery -S(安装jquery,-S表示记录到package.json的dependencies中)
  5. 运行npm install webpack@5.42.1 webpack-cli@4.10.0 -D (-D记录到package.json的devDependencies中)

dependencies:项目开发、部署上线阶段用到的包

devDependencies:只在开发阶段用到的包

        6.项目根目录中创建webpack.config.js,并初始化如下配置:

//向外导出一个webpack配置对象
module.exports = {
    mode: 'development'
}

        7. 修改package.json的script

 "scripts": {
    "dev":"webpack"
  },

        8. 运行npm run dev

报错参考:(112条消息) Vue 报错error:0308010C:digital envelope routines::unsupported_柠檬果子青的博客-CSDN博客

         9. 在index.html引入dist/main.js

1.2 基本使用

默认打包入口文件为src/index.js

默认输出文件路径为dist/main.js

1.3 插件

安装webpack-dev-server

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

npm install webpack-dev-server@3.11.2 -D

修改package.json

 "scripts": {
    "dev": "webpack serve"
  },

再次运行npm run dev

终止:两次ctrl+c

文件根目录看不到bundle.js 因为被放在了内存

访问:http://localhost/8080/src

安装 html-webpack-plugin

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

npm install html-webpack-plugin@5.3.2 -D

通过 HTML 插件复制到项目根目录中的 index.html 页面,也被放到了内存中

HTML 插件在生成的 index.html 页面,自动注入了打包的 bundle.js 文件

 devServer 节点

devServer:{
        //首次打包自动打开浏览器
        open:true,
        port:80,
        //指定运行的主机地址
        host:'127.0.0.1'
   }

1.4 loader

在实际开发过程中,webpack 默认只能打包处理以 .js 后缀名结尾的模块。其他非 .js 后缀名结尾的模块, webpack 默认处理不了,需要调用 loader 加载器才可以正常打包,否则会报错

 处理css文件

npm i style-loader@3.0.0 css-loader@5.2.6 -D

webpack无法处理后缀为.css的文件,则会查找webpack.config.js中的module.rules是否配置了对应的loader加载器。

如果配置了,先转交给css-loader处理,然后css-loader把处理结果转交给style-loader,style-loader处理完毕后再转给webpack,webpack将结果合并到dist/bundle.js中。

处理less文件 

npm i less-loader@10.0.1 less@4.1.1 -D

module:{
        rules:[
            { test:/\.less$/, use:['style-loader', 'css-loader', 'less-loader']}
        ]
    }

处理与url相关的文件

npm i url-loader@4.1.1 file-loader@6.2.0 -D

    module:{
        rules:[
            { test:/\.jpg|png|gif$/,use:'url-loader'}//单个loader字符串即可
        ]
    }

处理js的高级语法

npm i babel-loader@8.2.2 @babel/core@7.14.6 @babel/plugin-proposal-decorators@7.14.5 -D

module:{
        rules:[
            { test:/\.js$/, use:'babel-loader', exclude:/node_modules/}//第三方包的js兼容性不需要考虑
        ]
    }

并创建babel.config.js配置如下:

module.exports = {
    "plugins": [
      ["@babel/plugin-proposal-decorators", { legacy:true }]
    ]
  }

1.5 打包发布

在package.json新增build

"scripts": {
    "dev": "webpack serve",
    "build": "webpack --mode production" //优先级更高,会覆盖webpack.config.js中mode
  }

然后npm run build

自动清理dist的旧文件

安装并配置 clean-webpack-plugin 插件 clean-webpack-plugin - npm (npmjs.com)

npm install --save-dev clean-webpack-plugin

const { CleanWebpackPlugin } = require('clean-webpack-plugin');

const webpackConfig = {
    plugins: [
        new CleanWebpackPlugin(),
    ],
};

1.6 sourceMap

浏览器的错误提示不是源代码的行号,是重新生成文件中的行号,不利于调试

在webpack.config.js加入如下配置(建议开发时)

module.exports = {
    devtool:'eval-source-map'
}

发布时最好注释掉devtool,保证项目安全性

只定位行数不暴露源码(建议项目上线)

module.exports = {
    devtool:'nosources-source-map'
}

拓展

import路径可以用@表示src从外向里查找

在webpack.config.js配置

resolve:{
    alias:{
        '@':path.join(__dirname,'./src/')
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/538213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

试用阿里云云拨测对Web网站的网页性能进行测试并分析

目录 前言 云拨测操作步骤 1.开通应用实时监控服务ARMS 2.成功登录后,在产品类别下选择中间件>应用实时监控服务,在云拨测卡片上单击立即试用。 3.登录ARMS控制台,在左侧导航栏中选择云拨测>定时拨测,在定时拨测页面右上…

chatgpt赋能Python-pycharm怎么与python关联

Pycharm怎么与Python关联? 介绍 对于Python开发人员来说,Pycharm是一个非常强大的IDE。它提供了各种工具和功能,用于快速开发和调试Python代码。但是,在开始开发之前,必须将Pycharm与Python关联起来。否则&#xff0…

chatgpt赋能Python-pulp_python

Pulp Python: 介绍与优点 在数据分析和决策优化领域,线性规划是一种非常有效的数学模型。而Pulp Python是一款优秀的线性规划库,它可以帮助用户快速进行线性规划求解,同时还具备可扩展性和易使用性等优点。 什么是线性规划? 线…

chatgpt赋能Python-pycharm_滚轮字体大小设置

Pycharm滚轮字体大小设置 Pycharm是一款非常流行的Python IDE,广泛用于Python编程。然而,每个开发者都有其自己的偏好设置,包括字体大小。此文将介绍如何使用滚轮控制Pycharm中编辑器的字体大小。 界面操作 在Pycharm中,您可以…

南京邮电大学Web技术双语实验二(Web服务端脚本编写)

文章目录 一、 实验目的和要求二、实验环境(实验设备)三、实验原理及内容1首先编写html页面2 html页面效果如下图所示3 编写服务端php脚本4 服务端页面显示如下 四、实验小结(包括问题和解决方法、心得体会、意见与建议等) 一、 实验目的和要求 1 显示一…

进程通信 — 管道

目录 进程通信前提进程间通信的目的进程间通信发展进程间通信分类管道认识管道匿名管道站在文件描述符角度,深度理解管道 管道读取规则读写规则 管道特点命名管道命名管道的打开规则 匿名管道与命名管道的区别命名管道的打开规则 匿名管道与命名管道的区别 进程通信…

chatgpt赋能Python-pycharm怎么关联python

PyCharm怎么关联Python PyCharm是一款非常流行的Python集成开发环境(IDE),它经常被Python开发者用来编写、调试和测试他们的代码。为了让PyCharm正常工作,需要将其与Python相关联。在这篇文章中,我们将讨论如何在PyCh…

最小二乘法

本文结合对ChatGTP的提问,用自己的理解讲一讲最小二乘法。 最小二乘法: yi是实际值,yhat是理论值,就是拟合值,比方说一次函数做拟合,那就是在这个x点位置时的值。累加所有yi-yhat的平方,得到E并…

chatgpt赋能Python-pycharm怎么下载python

PyCharm怎么下载Python? PyCharm是一款非常流行的Python开发IDE,Python是一门流行的编程语言。所以,对于那些想要使用PyCharm进行Python编程的人们来说,下载Python是一个关键的步骤。 什么是Python? Python是一门流…

消息中间件概念

什么是消息队列 消息队列是消息中间件的一种实现方式。 什么是消息中间件? 将消息中间件需要理解一下什么是消息和中间件? 消息 消息是指软件对象之间进行交互作用和通讯利用的一种方式。 中间件 百度百科的介绍: ​ 中间件(Mid…

改进YOLOv5 | 在 C3 模块中添加【Triplet】【SpatialGroupEnhance】【NAM】【S2】注意力机制 | 附详细结构图

文章目录 1. Triplet 注意力模块1.1 原理1.2 C3_Triplet 代码2. SpatialGroupEnhance 注意力模块2.1 原理2.2 C3_SpatialGroupEnhance 代码3. NAM 注意力模块3.1 原理3.2 C3_NAM 代码4. S2 注意力模块4.1 原理4.2 C3_S2 代码5. 添加方式💡6. C3_Attention 结构图 &#x

chatgpt赋能Python-pycharm怎么编译python

PyCharm怎么编译Python? Python是当今最流行的编程语言之一,其简单易学、高效实用的特性使其受到了广大开发者的欢迎。PyCharm是一款专业的Python集成开发环境,它提供了许多有用的功能和工具,可以极大地提高开发效率。本文将介绍…

C++ 端点检测(8领域检测)

直线曲线端点检测 一、代码二、结果适用于直线、曲线等线的端点检测。 方法是:通过判断一个点周围8个点的像素的值来判断该点是否为端点,若周围8个点中有且只有一个点像素不为0,则认为该点是线段上的一个端点。 一、代码 #include <opencv2/opencv.hpp> using name…

lwip的路由表

在lwIP中&#xff0c;路由表被实现为一个以链表形式组织的数据结构&#xff0c;每个表项都包含一个目的网络地址和一个指向输出接口的指针。当需要将数据包发送到某个目的地址时&#xff0c;lwIP会遍历路由表&#xff0c;并找到最佳匹配的表项&#xff0c;然后将数据包发送到相…

《Linux0.11源码解读》理解(三) 执行setup

上一节的最后jmpi把cs:ip设置为0x9020:0000。于是CPU开始执行setup&#xff0c;它的作用是获取机器系统数据至内存&#xff0c;关中断并挪动system&#xff0c;为32位模式转换做准备。 加载系统信息至内存 同样是调用BISO中断&#xff0c;寄存器作为入参和返回值&#xff0c;…

javaweb系列-Vue.js

w2.1 Vue概述 一个完整的html页面包括了视图和数据&#xff0c;数据是通过请求 从后台获取的&#xff0c;那么意味着我们需要将后台获取到的数据呈现到页面上&#xff0c;很明显&#xff0c; 这就需要我们使用DOM操作。正因为这种开发流程&#xff0c;所以我们引入了一种叫做M…

NLP大模型微调答疑

什么情况用Bert模型&#xff0c;什么情况用LLaMA、ChatGLM类大模型&#xff0c;咋选&#xff1f; 答&#xff1a;Bert 的模型由多层双向的Transformer编码器组成&#xff0c;由12层组成&#xff0c;768隐藏单元&#xff0c;12个head&#xff0c;总参数量110M&#xff0c;约1.1…

虚拟机02 mysql安装和配置

第一步&#xff1a;在课程资料中&#xff0c;找到数据库安装文件&#xff0c;然后上传安装文件到Linux中。文件位置如图所示&#xff1a; 第二步&#xff1a;打开Linux&#xff0c;到工作目录中创建一个mysql目录&#xff0c;然后将安装文件上传到mysql中 第三步&#xff1a…

chatgpt赋能Python-pycharm与python关联

Pycharm与Python关联&#xff1a;让你的编程更加高效 作为一名有10年Python编程经验的工程师&#xff0c;我深知Python编程的重要性。而作为一个Python开发者&#xff0c;我发现Pycharm的出现真正改变了Python编程的方式。本文将介绍Pycharm与Python的关联&#xff0c;并探讨这…

算法设计与分析:分支限界法

目录 第1关&#xff1a;0/1背包问题 任务描述&#xff1a; 相关知识&#xff1a; 分支限界法基本思想&#xff1a; 常见的分支限界法&#xff1a; 示例&#xff1a;0/1背包问题 对于0/1背包的优化&#xff1a; 题目描述&#xff1a; 编程要求&#xff1a; 测试说明&am…