Webpack搭建本地服务器
1 开启本地服务器
2 HMR热模块替换
3 devServer配置
4 开发和生成环境
需要本地服务的目的就在每次我们保存项目源文件的时候都可以自动打包新的打包文件,
这里主要讲webpack-dev-server:
先安装:
需要在项目根目录下创建webpack配置文件。您可以命名它为webpack.config.js,并将以下内容添加到它:npm install webpack-dev-server -Dmodule.exports = {entry: './src/index.js', // 您的入口文件output: {filename: 'bundle.js' // 打包后的文件名},devServer: {contentBase: './dist' // 服务器的根目录} };在项目的package.js文件里面编写script内容,添加命令为serve:
打开项目在本地服务器,在项目根目录打开命令提示符,输入npm run server。后续代码发生改变就可以让服务器自动在内存里面保存打包好的内容并刷新浏览器。
这些就是学到vue时候的服务器。
模块热更新:出现的原因是在没开启模块热更新的时候,我们修改某个js文件的代码的时候,本地服务器会刷新项目的所有在浏览器显示的文件,很费性能,所以我们想要实现只在被修改内容的模块文件更新,其他文件不用更新
打开的方法是,在webpack的配置文件里面添加devServer内容(默认是有true的,所以写不写都一样):
然后在入口文件src/index.js 项目的主要js里面编写:(下面这个内容可有可无,因为现在的框架vue、react等都已经有这样子的设置了,就不需要自己写了。)
devserver的配置:(不是很常用,除了用vue的时候,可能会需要改端口。)
可以改端口,可以改ip,可以设置压缩文件等等
区分生产环境和开发环境的配置文件:
先在项目根目录创建config文件夹,里面放了个配置文件:
在package.js文件里面修改script命令的build和server的命令:
之后需要使用merge包来合并共同的配置:
npm install webpack-merge -D公共配置,就是生产环境和开发环境都需要用到的配置webpack.comm.config.js:(内容只是上课用到的,不是真的我们在开发时候需要用到的)
const path = require("path") const { VueLoaderPlugin } = require("vue-loader/dist/index") const HtmlWebpackPlugin = require('html-webpack-plugin') const { DefinePlugin } = require("webpack")module.exports = {entry: "./src/main.js",output: {filename: "bundle.js",path: path.resolve(__dirname, "../build")},resolve: {extensions: [".js", ".json", ".vue", ".jsx", ".ts", ".tsx"],alias: {utils: path.resolve(__dirname, "../src/utils")}},module: {rules: [{test: /\.css$/,use: [ "style-loader", "css-loader", "postcss-loader" ]},{test: /\.less$/,use: [ "style-loader", "css-loader", "less-loader", "postcss-loader" ]},{test: /\.(png|jpe?g|svg|gif)$/,type: "asset",parser: {dataUrlCondition: {maxSize: 60 * 1024}},generator: {filename: "img/[name]_[hash:8][ext]"}},{test: /\.js$/,use: [{ loader: "babel-loader"}]},{test: /\.vue$/,loader: "vue-loader"}]},plugins: [new VueLoaderPlugin(),new HtmlWebpackPlugin({title: "电商项目",template: "./index.html"}),new DefinePlugin({BASE_URL: "'./'",coderwhy: "'why'",counter: "123"})] }生产环境的配置webpack.prod.config.js:
const { CleanWebpackPlugin } = require("clean-webpack-plugin") const { merge } = require("webpack-merge") const commonConfig = require("./webpack.comm.config")module.exports = merge(commonConfig, {mode: "production",output: {clean: true},plugins: [new CleanWebpackPlugin()] })开发环境用到的配置webpack.dev.config.js:
const { merge } = require("webpack-merge") const commonConfig = require("./webpack.comm.config")module.exports = merge(commonConfig, {mode: "development",devServer: {hot: true,// host: "0.0.0.0",// port: 8888,// open: true// compress: true} })1











相关文章:
Webpack搭建本地服务器
1 开启本地服务器 2 HMR热模块替换 3 devServer配置 4 开发和生成环境 需要本地服务的目的就在每次我们保存项目源文件的时候都可以自动打包新的打包文件, 这里主要讲webpack-dev-server: 先安装: npm install webpack-dev-server -D 需要…...
基于Go开发PaaS平台3
Go开发PaaS平台核心功能 代码仓库地址GitHub - yunixiangfeng/gopaas 10-18 中间件前端页面以及核心API开发(中) C:\Users\Administrator\Desktop\gopaas\middlewareapi\handler\middlewareApiHandler.go package handlerimport ("context"…...
虎牙直播在微服务改造的实践总结
博主介绍:✌全网粉丝4W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程,博主也曾写过优秀论文,查重率极低,在这方面…...
设置线程池的大小
线程池的理想大小取决于被提交任务的类型以及所部署系统的特性。在代码中通常不会固定线程池的大小,而应该通过某种配置机制来提供,或者根据Runtime. availableProcessors来动态计算。 幸运的是,要设置线程池的大小也并不困难,只需要避免“过大”和“过…...
Vue3 除了 keep-alive,还有哪些实现页面缓存的方法
有这么一个需求:列表页进入详情页后,切换回列表页,需要对列表页进行缓存,如果从首页进入列表页,就要重新加载列表页。 对于这个需求,我的第一个想法就是使用keep-alive来缓存列表页,列表和详情…...
JavaScript闭包
定义 定义:在计算机科学中,闭包(Closure)是一个函数及其相关引用环境组合而成的实体。简单来说,闭包是指一个函数以及该函数访问的外部变量的集合。在一些编程语言中,函数可以访问在其定义时所处的上下文中…...
华为OD机试之不含101的整数(Java源码)
不含101的数 题目描述 小明在学习二进制时,发现了一类不含 101的数,也就是: 将数字用二进制表示,不能出现 101 。 现在给定一个整数区间 [l,r] ,请问这个区间包含了多少个二进制不含 101 的整数? 输入描述…...
SpringCloud Ribbon 学习
SpringCloud Ribbon 学习 文章目录 SpringCloud Ribbon 学习1. Ribbon 是什么?2. LB(Load Balance)3 Ribbon 架构图&机制4 Ribbon 常见负载均衡算法5 测试 1. Ribbon 是什么? Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端 负载均衡…...
预告:XuperOS Global 国际化进展
XuperOS新年致辞中,我们提到XuperOS成长计划的最后一个阶段是国际化。伴随前三个阶段创世、监督、共建先后落地,很多用户特来咨询XuperOS国际化进展,我们在此统一说明。 按照之前的规划,XuperOS将在海外部署一条新的开放链XuperOS…...
炫技操作--递归实现翻转链表(java)
递归实现链表的逆序 leetcode 206题。 翻转链表递归解法普通方式实现链表翻转链表专题 leetcode 206题。 翻转链表 leetcode链接用于测试 题目:描述 将一个链表翻转: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 递归解法 解题思路…...
华为OD机试真题 Java 实现【求最小公倍数】【牛客练习题】
一、题目描述 正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。 数据范围:1≤a,b≤100000 。 二、输入描述 输入两个正整数A和B。 三、输出描述 输出A和B的最小公倍数。 四、解…...
[java]两数之和 II - 输入有序数组
两数之和 II - 输入有序数组 leetcode 167 原题链接解题思路解题代码排序专题 leetcode 167 原题链接 167. 两数之和 II - 输入有序数组 – 原题链接 题目描述: 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出…...
Linux-0.11 boot目录head.s详解
Linux-0.11 boot目录head.s详解 模块简介 在head.s中,操作系统主要做了如下几件事: 重新设置中断描述符和全局描述符检查A20地址线是否开启检查数学协处理器初始化页表并开启分页跳转到main函数执行 过程详解 重新设置IDT和GDT 在setup.s中我们已经…...
离散数学_十章-图 ( 3 ):由旧图构造新图
📷10.3 由旧图构造新图 概念1. 子图2. 真子图3. 导出的子图 旧图构造新图的方法1. 删除或增加图中的边2. 边的收缩3. 删除顶点 有时解决问题只需要图的一部分。 比如我们现在只关心大型计算机网络中涉及济南,广州,深圳的计算机中心࿰…...
Golang每日一练(leetDay0083) 汇总区间、多数元素II
目录 228. 汇总区间 Summary Ranges 🌟 229. 多数元素 II Majority Element ii 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专…...
JAVA数组基础
目录 一、使用方式 1-动态初始化 ①先声明数组 ② 创建数组 ③分配方式 二、使用方式 2-静态初始化(直接在声明的同时初始化{ } ) 三、数组使用注意事项和细节 四、数组两种初始化方式都是将内存空间分配到堆上面的 一、使用方式 1-动态初始化 …...
Linux-0.11 文件系统exec.c详解
Linux-0.11 文件系统exec.c详解 模块简介 该模块实现了二进制可执行文件和shell脚本文件的加载和执行。 函数详解 create_tables static unsigned long * create_tables(char * p,int argc,int envc)该函数的作用是建立参数和环境变量指针表。 create_table的作用就是建立…...
NET框架程序设计-第1章.NET框架开发平台体系架构
1.1 .NET 框架基本组成 .NET 框架的核心便是通用语言运行时(Commomn Language Runtime,简称 CLR),CLR 是一个可被各种不同的编程语言所使用的运行时。 托管模块(mangaed module): 一个需要 CLR 才能执行的标准 Window…...
(哈希表 ) 349. 两个数组的交集 ——【Leetcode每日一题】
❓349. 两个数组的交集 难度:简单 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[…...
JavaScript基本语法(二)
JavaScript基本语法 1、变量1.1、简介1.2、变量命名规则1.3、JS的关键字和保留字1.4、声明提升 2、JavaScript数据类型2.1、基本类型2.2、引用类型2.3、两种类型的区别2.4、字符串常用方法 3、数据类型转换 1、变量 1.1、简介 在 JavaScript 中声明一个新变量的方法是使用关键…...
Cursor AI模型切换指南:从ChatGPT换到Gemini,这几步千万别做错
Cursor AI模型切换指南:从ChatGPT换到Gemini,这几步千万别做错 在当今快速迭代的AI开发领域,多模型协作已成为提升生产力的关键策略。作为一款深度整合AI能力的智能编辑器,Cursor允许开发者在不同AI模型间灵活切换,但…...
ASLR:现代操作系统中的内存安全守护者
1. ASLR:现代操作系统的内存安全基石 想象一下你家的门锁每天都会自动更换位置——这就是ASLR(地址空间布局随机化)对计算机程序做的事。作为现代操作系统最基本的安全机制之一,ASLR通过打乱程序在内存中的"居住地址"&…...
别再只用Arduino了!用ESP32+TSW-30浑浊度传感器做个智能鱼缸水质监测器(附完整代码)
ESP32TSW-30浑浊度传感器打造智能鱼缸水质监测系统 养鱼爱好者都知道,水质是鱼类健康生长的关键因素。传统的人工检测方式不仅费时费力,还难以做到实时监控。今天我们就来动手打造一个基于ESP32和TSW-30浑浊度传感器的智能鱼缸水质监测系统,让…...
如何评估单网页SEO的ROI
如何评估单网页SEO的ROI 在当今的数字化时代,网站的成功与否往往取决于其搜索引擎优化(SEO)的效果。而在SEO的众多策略中,单网页SEO的ROI(投资回报率)评估尤为重要。了解如何评估单网页SEO的ROI࿰…...
HagiCode Soul 平台技术解析:从需求萌发到独立平台的演进之路
先回顾:三次握手(建立连接)核心流程(实际版) 为了让挥手流程衔接更顺畅,咱们先快速回顾三次握手的实际核心,避免上下文脱节: 第一步(客户端→服务器)…...
3分钟破解百度网盘提取码难题:智能解析工具完全指南
3分钟破解百度网盘提取码难题:智能解析工具完全指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘加密资源的提取码而烦恼吗?每次点击分享链接却卡在"请输入提取码"的弹窗前…...
C++学习笔记——初始化列表、创建和实例化对象、new 关键字、隐式构造与 explicit 关键字、运算符与运算符重载
目录 1. 初始化列表 1.1 基本语法 1.2 为什么使用初始化列表? 1.3 初始化顺序 2. 创建和实例化对象 2.1 栈上分配(自动存储期) 2.2 堆上分配(动态存储期) 2.3 栈 vs 堆:Cherno 的建议 3. new 关键…...
golang如何实现零知识证明基础_golang零知识证明基础实现教程
Go 不内置零知识证明能力,需依赖第三方库;主流ZKP工具链绑定Rust/C/TS,Go生态缺乏生产级原生实现;crypto包仅提供基础原语,无法支撑ZKP所需多项式承诺、配对运算等高级密码操作。Go 本身不内置零知识证明(Z…...
技术赋能B端拓客:号码核验行业的迭代与价值升级,氪迹科技法人股东号码核验系统,阶梯式价格
2026年,B端市场竞争进入白热化阶段,拓客逻辑已从“规模扩张”转向“价值深耕”,“精准、高效、低成本”成为所有拓客团队的核心追求。号码核验作为B端拓客的前置基础性环节,其服务质量直接决定线索价值、人力效能与投入回报比&…...
OpenClaw飞书机器人进阶:Qwen3.5-9B图片问答自动回复
OpenClaw飞书机器人进阶:Qwen3.5-9B图片问答自动回复 1. 为什么选择OpenClaw飞书Qwen3.5-9B组合? 去年我们团队内部遇到一个典型问题:产品文档和功能说明分散在各个Confluence页面,新同事遇到界面不熟悉时,老员工需要…...








