当前位置: 首页 > news >正文

webpack04服务器配置

webpack配置

  • entry
  • output
    • filename
    • path
    • publicPath 。。 打包引入的基本路径,,,比如引入一个bundle.js,。引用之后的路径就是 publicPath+filename
      -devServer:
    • static : 静态文件的位置。。。
    • host
    • port
    • open
    • compress : 静态资源是否用gzip压缩
    • historyApiFallback: 服务器刷新页面会404,,因为如果是react,或者vue路由导过去的页面,,直接拉去服务器是没有的,会404,设置为true,会将所有404页面请求重定向到index.html
    • proxy : 设置代理
      • changeOrigin :改变请求来源,,
      • target
      • pathRewrite
# 使用webpack serve启动服务器"dependencies": {"axios": "^1.7.9","html-webpack-plugin": "^5.6.3","webpack": "^5.97.1","webpack-cli": "^6.0.1","webpack-dev-server": "^5.2.0"},

const HtmlWebpackPlugin = require("html-webpack-plugin")const path = require("path");
module.exports={mode:"development",devtool: "source-map",entry: "./src/index.js",output:{path:path.resolve(__dirname,"./dist"),filename:"bundle.js",publicPath:"/"},devServer:{static:["public",{directory: path.resolve(__dirname,"./abc"),watch:true}],// 静态文件的位置host:"0.0.0.0",// ,局域网可以通过ip访问  ==》 localhost会被解析成127.0.0.1,回环地址:主机自己发出去的包,直接被自己接收port:9000,open:true,compress:true, // 是否为静态文件开启gzipproxy:[{context:["/api"],target:"http://localhost:8080/",pathRewrite:{"^/api":""},changeOrigin:true}],historyApiFallback:true},plugins:[new HtmlWebpackPlugin({template:"./index.html"})]
}

webpack自动编译

webpack开启监听自动编译:

  • 命令行执行 npx webpack --watch
  • webpack.config.js中设置watch:true

但是这样只会监听到源码变化后,自动编译代码,,,浏览器不会自动刷新,,

webpack提供了一个 webpack-dev-server,,可以在监听到文件变化后,自动刷新浏览器


webpack编译react和vue
编译react
npm i babel-loader @babel/preset-env  @babel/preset-react
import React, {Component} from "react";
import ReactDOM from "react-dom/client"class App extends Component{constructor() {super();this.state = {message:"hello react"}}render() {return (<h3>{this.state.message}</h3>)}
}export default App
import App from "./App.jsx";const  sum = (a,b)=>{return a+b;
}console.log("123")
//
// import LogoImg from "../abc/logo.jpg"
import axios from "axios";axios.post("/api/users/login").then(res=>{console.log(res,"res")
})import ReactApp from "./App.jsx"import React from "react";
import ReactDOM from "react-dom/client";var root = ReactDOM.createRoot(document.querySelector("#app"));
root.render(<App/>)
    module:{rules:[{test:/\.jsx?$/,exclude:/node_modules/,use:{loader:"babel-loader",options:{presets: [["@babel/preset-env"],["@babel/preset-react"]]}}}]},
webpack编译vue3
npm i vue vue-loader vue-complete-compiler
<template><div class="container">{{ message }}</div>
</template><script setup>import {ref} from "vue";const message = ref("hello vue")
</script><style>
.container{color: red;
}
</style>

主函数引入vue

import Vue, {createApp} from "vue"
import VueApp from "./app.vue"var app = createApp(VueApp);
app.mount("#root")

webpack中配置编译vue:
编译vue需要使用一个插件VueLoaderPlugin


const HtmlWebpackPlugin = require("html-webpack-plugin")// vue文件的加载,,还用到一个插件
// const VueLoaderPlugin = require("vue-loader/lib/plugin")
const {VueLoaderPlugin} = require("vue-loader")const path = require("path");
module.exports={mode:"development",devtool: "source-map",entry: "./src/index.js",output:{path:path.resolve(__dirname,"./dist"),filename:"bundle.js",publicPath:"/"},module:{rules:[{test:/\.jsx?$/i,exclude:/node_modules/,use:{loader:"babel-loader",options:{presets: [["@babel/preset-env"],["@babel/preset-react"]]}}},{test:/\.css$/i,use:["style-loader","css-loader"]},{test: /\.vue$/i,use:["vue-loader"]}]},devServer:{static:["public",{directory: path.resolve(__dirname,"./abc"),watch:true}],// 静态文件的位置host:"0.0.0.0",// ,局域网可以通过ip访问  ==》 localhost会被解析成127.0.0.1,回环地址:主机自己发出去的包,直接被自己接收port:9000,open:true,compress:true, // 是否为静态文件开启gzipproxy:[{context:["/api"],target:"http://localhost:8080/",pathRewrite:{"^/api":""},changeOrigin:true}],historyApiFallback:true},plugins:[new HtmlWebpackPlugin({template:"./index.html"}),new VueLoaderPlugin()]
}

webpackDevMiddleware

webpack-dev-server默认开启的是 express的服务,,如果我不想使用express,,而想使用其他的,比如koa,可以使用webpack-dev-middleware去定制服务器,,,

通过webpack的配置信息,将源代码打包成 一个中间件,,让服务器引用进去

npm i express webpack-dev-middleware
const express = require("express")
// 引入webpack,编译后面的文件
const webpack = require("webpack")
const webpackDevMiddleware = require("webpack-dev-middleware")const app = express()// 加载配置文件 ,,, webpack对这个信息进行编译
const config = require("../webpack.config")
const compiler = webpack(config)// 将编译之后的对象,,通过这个webpackDevMiddleware这个中间件去处理  变成express可以使用的中间件
var middleware = webpackDevMiddleware(compiler);// 使用这个中间件      =====>  webpack会根据配置,将源代码进行编译,编译完成之后放入express中间件中,,
app.use(middleware)app.listen(3000,()=>{console.log("服务器已经开启在3000端口。。。。")
})
webpack的resolve属性

resolve常用的属性:

  • extensions : 扩展名解析,这里写了之后,源文件就不用写后缀名
  • mainFiles : 如果引入的是文件夹,,他会找这个文件夹下面指定名字的文件,,然后去拼接上extensions给出的后缀,进行解析
  • alias: 别名
    resolve:{extensions:[".jsx",".js",".vue"],mainFiles:["index","main"],alias:{"@":path.resolve(__dirname,"./src")}},

gitee:https://gitee.com/water-kid/learn-webpack/tree/main/webpack04

相关文章:

webpack04服务器配置

webpack配置 entryoutput filenamepathpublicPath 。。 打包引入的基本路径&#xff0c;&#xff0c;&#xff0c;比如引入一个bundle.js,。引用之后的路径就是 publicPathfilename -devServer:static : 静态文件的位置。。。hostportopencompress : 静态资源是否用gzip压缩hi…...

JDK下载安装配置

一.JDK安装配置。 1.安装注意路径,其他直接下一步。 2.配置。 下接第4步. 或者 代码复制: JAVA_HOME D:\Program Files\Java\jdk1.8.0_91 %JAVA_HOME%\bin 或者直接配置 D:\Program Files\Java\jdk1.8.0_91\bin 3.验证(CMD)。 java javac java -version javac -version 二.下…...

30_Redis哨兵模式

在Redis主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中,不仅需要人为干预,而且还会造成一段时间内服务器处于不可用状态,同时数据安全性也得不到保障,因此主从模式的可用性…...

NLP三大特征抽取器:CNN、RNN与Transformer全面解析

引言 自然语言处理&#xff08;NLP&#xff09;领域的快速发展离不开深度学习技术的推动。随着应用需求的不断增加&#xff0c;如何高效地从文本中抽取特征成为NLP研究中的核心问题。深度学习中三大主要特征抽取器——卷积神经网络&#xff08;Convolutional Neural Network, …...

《使用 YOLOV8 和 KerasCV 进行高效目标检测》

《使用 YOLOV8 和 KerasCV 进行高效目标检测》 作者&#xff1a;Gitesh Chawda创建日期&#xff1a;2023/06/26最后修改时间&#xff1a;2023/06/26描述&#xff1a;使用 KerasCV 训练自定义 YOLOV8 对象检测模型。 &#xff08;i&#xff09; 此示例使用 Keras 2 在 Colab 中…...

从MySQL迁移到PostgreSQL的完整指南

1.引言 在现代数据库管理中&#xff0c;选择合适的数据库系统对业务的成功至关重要。随着企业数据量的增长和对性能要求的提高&#xff0c;许多公司开始考虑从MySQL迁移到PostgreSQL。这一迁移的主要原因包括以下几个方面&#xff1a; 1.1 性能和扩展性 PostgreSQL以其高性能…...

服务器一次性部署One API + ChatGPT-Next-Web

服务器一次性部署One API ChatGPT-Next-Web One API ChatGPT-Next-Web 介绍One APIChatGPT-Next-Web docker-compose 部署One API ChatGPT-Next-WebOpen API docker-compose 配置ChatGPT-Next-Web docker-compose 配置docker-compose 启动容器 后续配置 同步发布在个人笔记服…...

51单片机 和 STM32 的烧录方式和通信协议的区别

51单片机 和 STM32 的烧录方式和通信协议的区别 1. 为什么51单片机需要额外的软件&#xff08;如ISP&#xff09;&#xff1f; &#xff08;1&#xff09;51单片机的烧录方式 ISP&#xff08;In-System Programming&#xff09;&#xff1a; 51单片机通常通过 串口&#xff08…...

(STM32笔记)十二、DMA的基础知识与用法 第二部分

我用的是正点的STM32F103来进行学习&#xff0c;板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话&#xff0c;用的也是这个板子和教程。 DMA的基础知识与用法 二、DMA传输设置1、数据来源与数据去向外设到存储器存储器到外设存储器到存储器 2、每次传输大小3、传…...

【优选算法篇】:模拟算法的力量--解决复杂问题的新视角

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;优选算法篇–CSDN博客 文章目录 一.模拟算法二.例题1.替换所有的问号2.提莫攻击3.外观数列4…...

探秘 JMeter (Interleave Controller)交错控制器:解锁性能测试的隐藏密码

嘿&#xff0c;小伙伴们&#xff01;今天咱们要把 JMeter 里超厉害的 Interleave Controller&#xff08;交错控制器&#xff09;研究个透&#xff0c;让你从新手直接进阶成高手&#xff0c;轻松拿捏各种性能测试难题&#xff01; 一、Interleave Controller 深度剖析 所属家族…...

脚本化挂在物理盘、nfs、yum、pg数据库、nginx(已上传脚本)

文章目录 前言一、什么是脚本化安装二、使用步骤1.物理磁盘脚本挂载&#xff08;离线&#xff09;2.yum脚本化安装&#xff08;离线&#xff09;3.nfs脚本化安装&#xff08;离线&#xff09;4.pg数据库脚本化安装&#xff08;离线&#xff09;5.nginx脚本化安装&#xff08;离…...

ESP嵌入式开发环境安装

前期准备&#xff0c;虚拟机&#xff0c;ios镜像&#xff0c;VSCode。 centOS8&#xff1a;centos安装包下载_开源镜像站-阿里云 虚拟机&#xff1a;vmware VSCode&#xff1a;Visual Studio Code - Code Editing. Redefined 如何安装镜像自行查找 完成以上环境后进行一下操…...

Elasticsearch入门学习

Elasticsearch是什么 Elasticsearch 是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展的数据存储和矢量数据库。 它针对生产规模工作负载的速度和相关性进行了优化。 使用 Elasticsearch 近乎实时地搜索、索引、存储和分析各种形状和大小的数据。 特点 分布式&a…...

黑马linux笔记(03)在Linux上部署各类软件 MySQL5.7/8.0 Tomcat(JDK) Nginx RabbitMQ

文章目录 实战章节&#xff1a;在Linux上部署各类软件tar -zxvf各个选项的含义 为什么学习各类软件在Linux上的部署 一 MySQL数据库管理系统安装部署【简单】MySQL5.7版本在CentOS系统安装MySQL8.0版本在CentOS系统安装MySQL5.7版本在Ubuntu&#xff08;WSL环境&#xff09;系统…...

《软硬协同优化,解锁鸿蒙系统AI应用性能新高度》

在当今数字化时代&#xff0c;鸿蒙系统与人工智能的融合正逐渐成为科技领域的热门话题。如何通过软件和硬件协同优化&#xff0c;进一步提升鸿蒙系统中AI应用的整体性能&#xff0c;成为了开发者和技术爱好者们关注的焦点。 鸿蒙系统与AI应用的融合现状 鸿蒙系统以其独特的微…...

利用 Tree Shaking 提升 React.js 性能

Tree Shaking 是现代 JavaScript 应用中不可或缺的优化技术&#xff0c;它通过移除未使用的代码来减少最终打包的大小。对于 React.js 应用&#xff0c;这一技术尤为重要&#xff0c;因为随着组件和第三方库的增多&#xff0c;打包体积可能迅速膨胀。Tree Shaking 能显著提升加…...

RPC实现原理,怎么跟调用本地一样

回答1 要让⽹络通信细节对使⽤者透明&#xff0c;我们需要对通信细节进⾏封装&#xff0c;我们先看下⼀个 RPC 调⽤的流程涉及到哪些通 信细节&#xff1a; 1. 服务消费⽅&#xff08; client &#xff09;调⽤以本地调⽤⽅式调⽤服务&#xff1b; 2. client stub 接收到调…...

Vue进阶之AI智能助手项目(二)——ChatGPT的调用和开发

AI智能助手项目 service服务端文件目录src目录详解src/index.tschatGPT:src/chatgpt/index.ts前端接口部分src/api/index.tssrc/utils/request/index.tspost方法httpHttpOptionsrc/utils/request/axios.tsLayout布局页面-viewsexception异常页面src/views/exception/404/index…...

python学opencv|读取图像(二十九)使用cv2.getRotationMatrix2D()函数旋转缩放图像

【1】引言 前序已经学习了如何平移图像&#xff0c;相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;二十七&#xff09;使用cv2.warpAffine&#xff08;&#xff09;函数平移图像-CSDN博客 在此基础上&#xff0c;我们尝试旋转图像的同时缩放图像。 【2】…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...