webpack-dev-server:静态资源目录配置

news2024/11/22 12:05:53

目录

webpack-dev-server

Webpack项目-配置自动打包

访问错误信息分析

简单配置静态资源访问目录

完整配置静态资源访问目录

 directory属性

staticOptions属性

publicPath属性

serveIndex属性

 watch属性

完整配置webpack.config.js示例

默认显示index.html内容配置

 默认显示静态资源目录配置


webpack-dev-server

        webpack-dev-server可以为前端应用提供自动打包的功能支持,其使用介绍在Webpack官网文档-配置/DevServer部分,也可查看GitHub项目中的介绍。以下所使用的webpack、webpack-cli、webpack-dev-server版本信息如下。

         自带development server(前端服务)的Webpack-dev-server提供了实时重载(就像Vue前端项目,每次修改之后保存,就会自动更新页面效果)的功能,GitHub文档规定:This should be used for development only.(仅在开发中进行使用)。可以理解为这个development server前端服务就是在模拟项目部署时的那个后端服务容器(如:nginx、Tomcat等)。

Webpack项目-配置自动打包

        在开发中,如果使用了Webpack从零构建前端项目,那么,若想实现类似于Vue项目的自动打包效果,就可以为其引入Webpack-dev-server依赖,安装命令如下,

# -D表示将其放入开发环境依赖下(记录到package.json的devDependencies节点下)
npm install webpack-dev-server -D

        接着,修改package.json文件的scripts节点,添加启动命令,

# 2-修改package->scripts配置
"scripts":{
	"dev":"webpack-dev-server"
}

        之后,使用命令“npm run dev”即可启动一个前端服务,这个服务就面向于这个Webpack前端应用。

         最后,我们访问地址:http://localhost:8080/,即可看到Webpack前端应用的静态资源目录列表,

 访问错误信息分析

        当然,以上只是理想效果。也可能你会看到如下这样的错误提示,

     

        其原因是:没有正确在webpack项目的配置文件中正确配置webpack-dev-server的静态资源目录。如何理解呢?看如下红框部分,提示:webpack-dev-server的Content内容来自D盘下的一个目录,但是这个public目录在磁盘中是不存在的。

 简单配置静态资源访问目录

        以上已经提到,问题出现的原因就是因为:没有正确配置webpack-dev-server的静态资源目录。换句话说,该项配置会告诉服务器从哪里提供内容 ,当我们访问http://localhost:8080/路径时,它就会自动到D盘下.../public中抽取静态资源,但是由于找不到任何内容,就会出现Cannot GET /访问不到的错误提示。

        以下,我们先看一下webpack官网文档中的介绍,

        如上图,static配置项(String或者Object类型)可以帮我们解决这个问题,我们先简单做如下配置,告诉前端服务将从根目录下的src子目录中抽取静态资源文件,

const path = require("path")
module.exports = {
  mode: `production`,//`development`, //指定构建模式-[1]development模式下,不会进行代码压缩与混淆;[2]production模式下,会进行代码压缩与混淆
  entry: path.resolve(__dirname,`src/index.js`), //指定入口文件
  output: {
    path: path.resolve(__dirname,`dist`), //输出文件路径
    filename: `main.bundle.js`, //输出文件名称
    charset: true, //输出文件的编码`utf-8`
    clean: true, //在生成新的打包输出之前清空path对应的dist目录
  },
  //配置webpack-dev-server,支持自动打包
  devServer:{
    static:`./src/`, //允许配置从跟目录下提供静态文件
  }
}
根目录/src目录中的内容

         我们重新打包,看到红框中已经提示了:静态资源Content来自于./src/子目录中,这表示我们的配置已经生效了。

注意红框内容

        接着,我们再次访问路径:http://localhost:8080/,看到index.html的内容就被渲染出来了。

配置后的效果

完整配置静态资源访问目录

        以上是简单配置的版本,接下来我们看一看如何通过Object对象来配置devServer.static配置项。 我们继续看Webpack官网文档的介绍。

        首先,注意到Object类型的devServer.static对应如下集合属性,因此,关键在于对着5个属性的正确配置。

 directory属性

        如上图所示,这个选项其实就是刚才我们在简化版配置中静态资源服务目录的配置,可以看到它的默认值是:path.join(process.cwd(), 'public')。这里的process.cwd()如何理解呢?我们直接在webpack.config.js文件中进行console.log打印操作,看一下它的输出内容。

         可以看到,这里path.join(process.cwd(), 'public')的结果,就是上面最开始的默认访问路径:D:\GIS_workspace\framework\webpack-demo\public

staticOptions属性

               staticOptions属性对应静态文件的一些高级配置,对应Object类型。可参考Express框架的API使用文档:Express 4.x - API Reference。具体属性截图如下,

         这里的大致是对前端服务接口请求的一些配置,例如:redirect重定向、index默认索引文件配置、setHeaders请求头配置等等。

        举个例子:我们知道,在vue项目中都有一个index.html文件,但是,当我们将其名称修改之后,程序还能正常运行吗?我们来尝试一下,将其改为index1.html,启动项目,看一下具体的效果。

         它其实是可能会报错的,尤其是当我们在index.html直接引入了某些开发依赖的时候,这是因为此时应用找不到默认的index.html文件,依赖没有被正常引入。而这里的staticOptions的index属性,就是在做这样的默认检索文件名的配置。

publicPath属性

       此属性控制如何访问静态资源目录的内容,如果配置为:/abc,那么就要通过:http://localhost:8080/abc/路径访问。

serveIndex属性

         此属性就是我们一开始谈到的——如何控制显示目录列表的问题相关了。

 watch属性

         watch属性是控制:当开发者在修改了项目文件时,是否重新加载页面内容的配置项。对应布尔类型,默认是true-开启状态。

完整配置webpack.config.js示例

默认显示index.html内容配置

const path = require('path')

console.log(process.cwd())

module.exports = {
  mode: `production`, //`development`, //指定构建模式-[1]development模式下,不会进行代码压缩与混淆;[2]production模式下,会进行代码压缩与混淆
  entry: path.resolve(__dirname, `src/index.js`), //指定入口文件
  output: {
    path: path.resolve(__dirname, `dist`), //输出文件路径
    filename: `main.bundle.js`, //输出文件名称
    charset: true, //输出文件的编码`utf-8`
    clean: true, //在生成新的打包输出之前清空path对应的dist目录
  },
  //配置webpack-dev-server,支持自动打包
  devServer: {
    static: {
      directory: `./src/`, //允许配置从跟目录下提供静态文件
      staticOptions: {
        redirect: true, //重定向配置,默认是"/",布尔类型
        index: `index.html`, //设置是否在特定目录下自动检索index.html文件,默认为index.html
      },
      publicPath: `/`, //告诉服务器在哪个 URL 上提供 static.directory 的内容,默认是:'/',对应当前根目录下
      serveIndex: true, // 告诉开发服务器启用后使用 serveIndex 中间件,会在查看没有 index.html 文件的目录时生成目录列表
      watch: true, // 通过 static.directory 配置项告诉 dev-server 监听文件。默认启用,文件更改将触发整个页面重新加载
    },
  },
}

 默认显示静态资源目录配置

const path = require('path')

console.log(process.cwd())

module.exports = {
  mode: `production`, //`development`, //指定构建模式-[1]development模式下,不会进行代码压缩与混淆;[2]production模式下,会进行代码压缩与混淆
  entry: path.resolve(__dirname, `src/index.js`), //指定入口文件
  output: {
    path: path.resolve(__dirname, `dist`), //输出文件路径
    filename: `main.bundle.js`, //输出文件名称
    charset: true, //输出文件的编码`utf-8`
    clean: true, //在生成新的打包输出之前清空path对应的dist目录
    // publicPath: `./` ,
  },
  //配置webpack-dev-server,支持自动打包
  devServer: {
    static: {
      directory: `./`, //允许配置从跟目录下提供静态文件
      staticOptions: {
        redirect: true, //重定向配置,默认是"/",布尔类型
        index: `index.html`, //设置是否在特定目录下自动检索index.html文件,默认为index.html
      },
      publicPath: `/`, //告诉服务器在哪个 URL 上提供 static.directory 的内容,默认是:'/',对应当前根目录下
      serveIndex: true, // 告诉开发服务器启用后使用 serveIndex 中间件,会在查看没有 index.html 文件的目录时生成目录列表
      watch: true, // 通过 static.directory 配置项告诉 dev-server 监听文件。默认启用,文件更改将触发整个页面重新加载
    },
  },
}

 

 

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

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

相关文章

fsdb DUMP的操作记录

参考链接: https://blog.csdn.net/ohuo666/article/details/124973939https://blog.csdn.net/ohuo666/article/details/124973939 https://blog.csdn.net/yuexiangallan/article/details/121760768https://blog.csdn.net/yuexiangallan/article/details/121760768…

基于 DolphinDB 的行情中心解决方案

随着国内量化金融的高速发展,行情数据所包含的微观交易结构信息越来越受到券商自营团队、资管团队以及各类基金的重视。这些交易团队迫切希望拥有一个与生产环境类似的投研仿真环境,提升研发的效率和质量。作为国内领先的高性能时序数据库厂商&#xff0…

【地铁上的Redis与C#】数据类型(七)--List类型

我们这篇文章开始讲解list类型。 什么是list list是一个存储空间保存多个数据,底层使用双向链表存储结构实现的一种Redis数据类型,。list类型一般用在存储多个数据,并需要对数据进入存储空间的顺序进行区分的情况下。list的存储方式是一个存…

气泡法检漏技术特点分析和新型压力衰减法测试技术

摘要:针对传统的气泡法检漏技术,本文详细介绍了气泡法的基本原理、气泡法中的两种标准方法——加压法和真空法以及对应的标准规范,并对这两种气泡法进行了对比分析。本文还对气泡法的技术特点进行了分析,指出了气泡法检漏技术的局…

使用ruoyi-vue控制数据权限

说在前面 啥是数据权限?例如校长可以看到全部学生的信息,系主任可以看到该院系的学生信息,老师可以看到本班的学生信息,学生自己只能查看自己的信息 对于ruoyi的角色,我们只能控制用户可以访问那些菜单以及接口,而不能控制接口返回的数据 假如有这样一个需求,不同用户上传各…

赛狐ERP | 亚马逊卖家FBA常见问题解析!

许多亚马逊卖家在使用亚马逊FBA时经常会遇到一些问题,如FBA如何收费、如何提升发货数量、物流方式问题等问题,这些问题是常见问题,也是亚马逊卖方们应该把握的问题。下面就来跟大家分享一些常见的亚马逊FBA相关问题。一、亚马逊FBA如何收费&a…

OSCP_vulnhub—GOLDENEYE: 1

vulnhub—GOLDENEYE: 1About信息搜集查看js泄露POP3 密码破解及登录使用admin/xWinter1995x!登录 getshell提权About GoldenEye: 1 ~ VulnHub Download (Mirror): https://download.vulnhub.com/goldeneye/GoldenEye-v1.ova DHCP service: Enabled IP address: Automaticall…

【Kubernetes 入门实战课】Day01——虚拟机创建及安装

文章目录前言一、实验环境选择二、选择合适的虚拟机软件1.VirtualBox2.VMWare三、Linux版本四、如何配置虚拟机1、安装VMware2、虚拟网络设置1、虚拟机网络编辑器2、设置 VMnet 8 网段3、创建虚拟机1、创建虚拟机2、启动虚拟机3、虚拟机配置4、虚拟机管理前言 俗话说&#xff…

[oeasy]python0052_ raw格式字符串_单引号_双引号_反引号_ 退格键

转义字符 回忆上次内容 最近玩的是\n、\r 之外的转义序列 \a是 ␇ (bell)\t是 水平制表符\v是 换行不回车 通过 16 进制数值转义 \xhh把(hh)16 进制对应的 ascii 字符输出 通过 8 进制数值转义 \ooo把(nnn)8 进制对应的 ascii 字符输出 这次加了 转义输出 反斜杠本身 \\ 输出…

24.Isaac教程--路径规划的区域划分

路径规划的区域划分 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 为了赋予地图区域关于通过它们规划的路径的语义意义,引入了三个新的规划器影响区域: No-replanning zones:当机器人通过这个多边形区域时&a…

python textwrap 模块,这里有你需要的学习资料

Python 标准库中的 textwrap 模块可以把长文本按照指定的宽度进行换行。这个模块提供了一些高级的文本处理功能,例如按照指定的宽度进行自动换行,保留段首缩进等。 python textwrap 模块python textwrap 模块主要函数textwrap.wrap(text, width70, \*\*k…

ruoyi-vue版本(四)@PreAuthorize 注解在若依里面的作用,springsecurity 框架相关的配置

目录1 需求2 实现2.1 背景2.2 实现2.3 springsecurity 框架相关的配置2.3.1 EnableGlobalMethodSecurity详解2.3.2 认证失败处理类AuthenticationEntryPointImpl2.3.3 自定义退出处理类LogoutSuccessHandlerImpl2.3.4 filter 为啥会多次执行3 PreAuthorize 注解1 需求 我们打开…

Flink面试题汇总

1,简单介绍一下 Flink Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。并且 Flink 提供了数据分布、容错机制以及资源管理等核心功能。Flink提供了诸多高抽象层的API以便用户编写分布式任务: DataSet API&#xf…

nacos多网卡服务器引发的问题

1、背景 某一日晚上,公司的一个微服务上线重启后,双节点,只有一个节点注册到了nacos服务器,另外一个节点一直在nacos界面上无法看到,两个节点的服务启动也没有报错,api网关转发给服务时,时不时有…

深度学习入门基础——卷积计算

卷积计算 卷积是数学分析中的一种积分变换的方法,在图像处理中采用的是卷积的离散形式。这里需要说明的是,在卷积神经网络中,卷积层的实现方式实际上是数学中定义的互相关 (cross-correlation)运算,与数学…

【进阶】数据在内存中的存储

目录 一、数据类型介绍 1、基本的内置类型 2、类型的基本归类 二、整型在内存中的存储 1、原码、反码、补码 2、大小端介绍 3、大端小端的经典例题 三、浮点数在内存中的存储 1、浮点数存储规则 2、浮点数存储例题 一、数据类型介绍 1、基本的内置类型 char /…

非标设备制造业项目管理软件如何帮助企业做好项目报价管理?

非标设备制造企业,由于需求的不确定性、方案的多样性、交期的紧迫性、以及批量小(很多需要先做单台样机)等特性,导致非标设备要在有限时间内做到准确报价存在一定的困难,这也是众多非标设备制造企业亟待解决的问题。报…

MySQL Shell 逻辑备份恢复API

MySQL8.0开始提供的MySQL Shell功能,是DBA推向了另一个高度,除SQL外,正式踏入Cloud数据库服务 和 shell操作数据库领域(MGR是一个代表点)。 日常DBA工作可以通过MySQL Shell更容易实现。因为MySQL Shell处理用JavaScr…

3、Ubuntu20Server安装远程连接

Ubuntu20Server安装 安装虚拟机virtualbox VMware Workstation Pro 下载Ubuntu安装光驱Get Ubuntu | Download | Ubuntu 都下载完毕准备安装驱动 配置信息 这里用的是Ubuntu Server 一路Done或回车过三关斩六将来到这里 安装到这里,需要修改镜像站点地址,修改为国内的163网易…

Linux文件系统及磁盘命名

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分…