webpack04服务器配置
webpack配置
entryoutput- 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 。。 打包引入的基本路径,,,比如引入一个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全面解析
引言 自然语言处理(NLP)领域的快速发展离不开深度学习技术的推动。随着应用需求的不断增加,如何高效地从文本中抽取特征成为NLP研究中的核心问题。深度学习中三大主要特征抽取器——卷积神经网络(Convolutional Neural Network, …...
《使用 YOLOV8 和 KerasCV 进行高效目标检测》
《使用 YOLOV8 和 KerasCV 进行高效目标检测》 作者:Gitesh Chawda创建日期:2023/06/26最后修改时间:2023/06/26描述:使用 KerasCV 训练自定义 YOLOV8 对象检测模型。 (i) 此示例使用 Keras 2 在 Colab 中…...
从MySQL迁移到PostgreSQL的完整指南
1.引言 在现代数据库管理中,选择合适的数据库系统对业务的成功至关重要。随着企业数据量的增长和对性能要求的提高,许多公司开始考虑从MySQL迁移到PostgreSQL。这一迁移的主要原因包括以下几个方面: 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单片机需要额外的软件(如ISP)? (1)51单片机的烧录方式 ISP(In-System Programming): 51单片机通常通过 串口(…...
(STM32笔记)十二、DMA的基础知识与用法 第二部分
我用的是正点的STM32F103来进行学习,板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话,用的也是这个板子和教程。 DMA的基础知识与用法 二、DMA传输设置1、数据来源与数据去向外设到存储器存储器到外设存储器到存储器 2、每次传输大小3、传…...
【优选算法篇】:模拟算法的力量--解决复杂问题的新视角
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:优选算法篇–CSDN博客 文章目录 一.模拟算法二.例题1.替换所有的问号2.提莫攻击3.外观数列4…...
探秘 JMeter (Interleave Controller)交错控制器:解锁性能测试的隐藏密码
嘿,小伙伴们!今天咱们要把 JMeter 里超厉害的 Interleave Controller(交错控制器)研究个透,让你从新手直接进阶成高手,轻松拿捏各种性能测试难题! 一、Interleave Controller 深度剖析 所属家族…...
脚本化挂在物理盘、nfs、yum、pg数据库、nginx(已上传脚本)
文章目录 前言一、什么是脚本化安装二、使用步骤1.物理磁盘脚本挂载(离线)2.yum脚本化安装(离线)3.nfs脚本化安装(离线)4.pg数据库脚本化安装(离线)5.nginx脚本化安装(离…...
ESP嵌入式开发环境安装
前期准备,虚拟机,ios镜像,VSCode。 centOS8:centos安装包下载_开源镜像站-阿里云 虚拟机:vmware VSCode:Visual Studio Code - Code Editing. Redefined 如何安装镜像自行查找 完成以上环境后进行一下操…...
Elasticsearch入门学习
Elasticsearch是什么 Elasticsearch 是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展的数据存储和矢量数据库。 它针对生产规模工作负载的速度和相关性进行了优化。 使用 Elasticsearch 近乎实时地搜索、索引、存储和分析各种形状和大小的数据。 特点 分布式&a…...
黑马linux笔记(03)在Linux上部署各类软件 MySQL5.7/8.0 Tomcat(JDK) Nginx RabbitMQ
文章目录 实战章节:在Linux上部署各类软件tar -zxvf各个选项的含义 为什么学习各类软件在Linux上的部署 一 MySQL数据库管理系统安装部署【简单】MySQL5.7版本在CentOS系统安装MySQL8.0版本在CentOS系统安装MySQL5.7版本在Ubuntu(WSL环境)系统…...
《软硬协同优化,解锁鸿蒙系统AI应用性能新高度》
在当今数字化时代,鸿蒙系统与人工智能的融合正逐渐成为科技领域的热门话题。如何通过软件和硬件协同优化,进一步提升鸿蒙系统中AI应用的整体性能,成为了开发者和技术爱好者们关注的焦点。 鸿蒙系统与AI应用的融合现状 鸿蒙系统以其独特的微…...
利用 Tree Shaking 提升 React.js 性能
Tree Shaking 是现代 JavaScript 应用中不可或缺的优化技术,它通过移除未使用的代码来减少最终打包的大小。对于 React.js 应用,这一技术尤为重要,因为随着组件和第三方库的增多,打包体积可能迅速膨胀。Tree Shaking 能显著提升加…...
RPC实现原理,怎么跟调用本地一样
回答1 要让⽹络通信细节对使⽤者透明,我们需要对通信细节进⾏封装,我们先看下⼀个 RPC 调⽤的流程涉及到哪些通 信细节: 1. 服务消费⽅( client )调⽤以本地调⽤⽅式调⽤服务; 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】引言 前序已经学习了如何平移图像,相关文章链接为: python学opencv|读取图像(二十七)使用cv2.warpAffine()函数平移图像-CSDN博客 在此基础上,我们尝试旋转图像的同时缩放图像。 【2】…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
