webpack的简单使用

devtools/2024/9/18 20:56:06/ 标签: webpack, 前端, npm, node.js

webpack_0">webpack的简单使用

项目初始化

  1. npm init

  2. npm install --save-dev webpack

    npm install --save-dev webpack-cli

    –save表示非全局下载;–global表示全局下载

    (不同项目可能需要不同的依赖版本,故用–save更好)
    -dev表示开发环境中使用,部署后不需要用到
    –save 部署后也要用

    也可以一次下载多个

    npm install --save-dev webpack webpack-cli

  3. 在根目录下新建文件webpack.config.js

    const path = require('path');//nodejs的一个全局变量,获取当前目录的绝对路径var config = {entry: './src/index.js',output: {filename: 'bundle.js', //打包之后的文件path: path.resolve(__dirname, 'dist') //使用'_dirname'是为了避免解决在不同服务器上绝对路径不同的问题}
    };module.exports = config;
    

    使用npx webpack命令构建项目

  4. webpack相关配置

    1. 在每次构建前清理之前的输出
      在output中添加clean: true

    2. 设置不压缩和禁止生成license.txt(即不单独生成注释文件)

      1. 下载插件terser-webpack-plugin
      2. module.exports对象中中添加如下代码
      optimization: {minimize: false,//不压缩jsminimizer: [new TerserPlugin({extractComments: false,//不将注释提取到单独的文件夹})]
      }

webpackJS_55">webpack对JS的处理

  1. 多页应用

    • 设置多入口
    • 设置多出口文件
     entry: {index: './src/page/index/index.js',
    },output: {filename: './js/[name].bundle.js', //打包之后的文件(用[name]处理多入口问题)----index.bundle.jspath: path.resolve(__dirname, 'dist'), //使用'_dirname'是为了避免在不同服务器上绝对路径不同的问题clean: true,
    },
    
  2. jQuery的引用

    • 模块化方法

      1. 下载依赖npm install jquery --save
      2. 代码引入var $ = require('jquery');
      3. 用法不变$('body').html('hello jquery');

      问题:每一个需要使用jquery的地方都需要require,比较麻烦,会把jquery的js也打包进出口文件中

    • 传统方式

      1. 卸载依赖npm uninstall jquery --save

      2. CDN

        百度CDN<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

        注意引用的先后顺序

    • 外部变量

      作为外部变量引入——传统直接引用+模块化的方式(webpack的配置文件中写,不需要install)

      externals: {'jquery': 'window.jQuery',//有些页面已经引入了jQuery,直接通过window对象获取,注意要大写
      }
      

      注意在代码中区分一下 var $$ = require('jquery');

      var $$ = require('jquery');
      $$('body').html('hello jquery。。。。。');
      console.log('this is index js');
      
  3. 公共模块的提取(util,会被很多个js调用的模块,如jdbc)

    • 公共模块提取成独立的文件

      在优化optimization里写

      splitChunks: {name: 'util',//给公共模块文件命名为utilchunks: 'all',minSize: 0},
      

webpackHTMLCSS_120">webpack对HTML、CSS、图片的处理**

  1. CSS的处理

    下载加载器 css loader (style-loader)

    npm install --save-dev css-loader

    使用MiniCssExtractPlugin 将 CSS 从 bundle 中分离出来单独打包

    不要同时使用 style-loader 与 mini-css-extract-plugin

    下载插件

    引入
    const MiniCssExtractPlugin = require('mini-css-extract-plugin');

    在exports对象中添加

     module: {rules: [{test: /\.css$/i,use: [{loader: MiniCssExtractPlugin.loader,options: {publicPath: '../'}}, 'css-loader'],},],
    },
    

    plugins中添加

        new MiniCssExtractPlugin({filename: 'css/[name].css'}),
    
  2. 图片的加载

    • url-loader和file-loader limit参数和name参数控制图片格式和名称

      module的rules中添加

        {test: /\.(png|svg|jpg|gif)$/, use: ['url-loader?limit=1000&name=images/[name].[ext]']}
    
  3. HTML的处理

    • HtmlWebpack

webpackDevServer_183">webpackDevServer的使用

  1. 安装依赖npm install --save-dev webpack-dev-server

  2. 配置

    • 引入依赖
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    • exports对象中添加
    devServer: {port: 8888,static: './dist',
    },
    
    • plugins中添加
        new HtmlWebpackPlugin({template: './src/view/index.html',filename: 'view/index.html',inject: true, //网页用到什么,自动识别注入hash: true, //版本号chunks: ['index'],//index入口的所有东西会被这个网页用到minify: {collapseWhitespace: false //不压缩}})
    
    • 用于单页面应用,每个页面都要这样写,太麻烦了,提取为方法
    var getHtmlConfig = function (name) {return {template: './src/view/' + name + '.html',filename: 'view/' + name + '.html',inject: true, //网页用到什么,自动识别注入hash: true, //添加版本号,如<link href="../css/index.css?2ae023c62db635021a67" rel="stylesheet">chunks: ['common', name],//指出的入口的所有东西会被这个网页用到,将通用模块放到这就不用在每个js中require一次了minify: {collapseWhitespace: false //不压缩}}
    }
    
    • plugins中写调用方法
    new HtmlWebpackPlugin(getHtmlConfig('index')),
    new HtmlWebpackPlugin(getHtmlConfig('login')),
    new webpack.HotModuleReplacementPlugin()//启用热部署
    

    单个 HTML 页面有多个入口时添加optimization.runtimeChunk: 'single'配置

  3. 热部署成功后,保存即显示修改

    • package.json中的scripts中添加

      "start": "webpack-dev-server --open" //open表示自动打开浏览器,否则需要手动打开

    • 编译后使用npm run start命令即可打开浏览器

      注意:发布时别忘了重新编译,保存到dist里面去


http://www.ppmy.cn/devtools/13760.html

相关文章

微服务之网关路由

一、概述 1.1认识网关 什么是网关&#xff1f; 顾明思议&#xff0c;网关就是网络的关口。数据在网络间传输&#xff0c;从一个网络传输到另一网络时就需要经过网关来做数据的路由和转发以及数据安全的校验。 更通俗的来讲&#xff0c;网关就像是以前园区传达室的大爷。 外…

Delete the specified node in the linked list with dummy header

分数 20 作者 伍建全 单位 重庆科技大学 Please create a function with the prototype void deleteNode(List L, int key). This function should delete the first node from the linked list L with dummy header, where the data field is equal to key. If there are n…

基于httpd和lvs的dr模式简单测试

lvs主机&#xff1a;192.168.50.154 httpd主机&#xff1a;192.168.50.157 192.168.50.156 &#xff08;ip需要在同一网段&#xff09; 虚拟ip&#xff1a;192.168.50.183 前提准备&#xff1a; lvs安装&#xff1a; yum install ipvsadm -y lsmod|grep ip_vs modprobe ip_vs …

深度学习500问——Chapter08:目标检测(2)

文章目录 8.2.4 R-FCN 8.2.5 FPN 8.2.6 Mask R-CNN 8.2.4 R-FCN R-FCN 有哪些创新点 R-FCN仍然属于two-stage目标检测算法&#xff1a;RPN R-FCN Fully convolutional位置敏感得分图&#xff08;position-sentive score maps&#xff09; our region-based detector is ful…

线性代数 | 分开写 |第二章 矩阵及其运算 | 3. 逆矩阵

0.思维导图 3.1 定义 3.2 性质 3.3 用定义求逆矩阵 3.4 例题 3.5 伴随矩阵定义与主要公式 3.6 用伴随矩阵求逆矩阵 3.7 普通矩阵求逆 3.8 分块矩阵求逆 考研要求中&#xff0c;分块矩阵求逆必有一块为全零 根据全零块位置不同&#xff0c;一共有四种情况&#xff0c;可以直…

【经验总结】Jupyter 配置内核

1. 背景描述 使用 国家超算互联网中心 的服务器&#xff0c;创建 jupyterlab 容器&#xff0c;想在之前 conda 创建的环境中运行&#xff0c;可是不行&#xff0c;进入容器就直接进入 jupyterlab 2. 解决方法 配置内核 2.1 激活环境 conda activate peft2.2 安装内核 pip…

AIOS: LLM Agent Operating System

AIOS&#xff1a;LLM代理操作系统 摘要 文中提出了AIOS系统&#xff08;人工智能操作系统&#xff09;&#xff0c;目的是解决在大型语言模型基础上部署智能代理时遇到的各种挑战&#xff0c;如调度不佳、资源分配不合理以及在代理与LLM交互过程中保持上下文的困难。AIOS旨在…

深度学习 Lecture 9 信息增益、One-hot、回归树、集成树、随机森林、XGBoost模型

一、信息增益&#xff08;Information Gain) 决定使用什么特征来划分一个节点取决于什么样的特征选择最能减少熵&#xff08;也就是使纯度最大化&#xff09; 在决策树中&#xff0c;熵的减少被称为信息增益。 所以如何选择呢&#xff1f; 假设现在有三个特征可以选择&#…

C语言复习文章链接

目录 C语言基础概念以及规定基础语法函数数组小项目 C语言进阶指针函数内存 C语言基础 概念以及规定 “main函数”以及“printf函数和库函数”的理解 简述&#xff1a; 1&#xff1a;main函数 2&#xff1a;printf函数的用法 C语言的关键字&#xff0c;字符和ASCII码 简述&a…

linux内核网络源码-用户空间与内核的接口

内核通过各种不同的接口把内部信息输出到用户空间&#xff0c;除了程序员用于请求特定信息的经典系统调用外&#xff0c;还有三个特殊接口&#xff0c;而其中两个是虚拟文件系统&#xff1a; procfs 文件系统 这是一个虚拟文件系统&#xff0c;通过是挂在proc ,允许内核以文件的…

栈 、队列

1.stack的介绍和使用 1.1stack的介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 1.2 stack的使用 函数说明 接口说明 stack() 构造空的栈 empty() 检测stack是否为空 size…

AndroidStudio中虚拟机(AVD)无法启动,出现unable to locate adb错误

1.检查Android SDK Platform-Tools是否安装(个人是通过这个方法解决的) 首先通过File-Project Structure-Project SDK检查SDK有没有被选中 步骤&#xff1a;打开file -> settings &#xff0c;搜索SDK 之后点击"-",在点击Apply进行安装 2.可能是驱动的问题 电脑…

【前端技术】CSS基础入门篇

一、 CSS简介 css&#xff08;Cascading Style Sheets&#xff0c;缩写为 CSS&#xff0c;也叫作层叠样式表&#xff09;是一套美化HTML标签所编写出页面的语法&#xff0c;CSS描述了如何在不同设备上渲染内容的方法。 二、 CSS基本引入方法 <!-- Cascading style shet:层…

VUE3 ref,props,生命周期

1.--ref属性 1.1代码 1.1.1子表 <template><div class"person"><h1>中国</h1><h2 ref"title2">北京</h2><h3>尚硅谷</h3><button click"showLog">点我输出h2这个元素</button>&l…

基于java的CRM客户关系管理系统的设计与实现

本科毕业设计(论文) 题 目&#xff1a; 基于java的CRM客户关系管理系统的设计与实现 专题题目&#xff1a; 说 明 请按以下顺序编排&#xff1a; 封面任务书开题报告中外文摘要及关键词目录正文附录&…

No.1 - 职场关键角色通识宝典之课程内容先导

&#x1f4d6; 该文隶属 程序员&#xff1a;职场关键角色通识宝典 ✍️ 作者&#xff1a;哈哥撩编程&#xff08;视频号同名&#xff09; 博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 &#x1f3c6; 推荐专栏…

Nginx莫名奇妙返回了404

描述 nginx作为反向代理&#xff0c;代理python的服务&#xff0c;但是通过代理访问服务的时候&#xff0c;报了404的错误。 难受的是客户现场没有查看日志的权限&#xff0c;只有查看配置文件的权限&#xff0c;我们检测了几遍配置文件也没有找到问题&#xff0c;哎~ 问题引…

儿童护眼落地灯哪个牌子好?值得买的五款大路灯分享

近年来&#xff0c;随着近视问题日益严重&#xff0c;消费者越来越倾向于选购能够优化照明环境、减轻眼部压力的护眼落地灯。然而&#xff0c;市场上的护眼落地灯品质良莠不齐&#xff0c;许多品牌为了追求低廉价格和扩大市场份额&#xff0c;不惜采取模仿甚至抄袭的方式&#…

操作教程丨MaxKB+Ollama:快速构建基于大语言模型的本地知识库问答系统

2024年4月12日&#xff0c;1Panel开源项目组正式对外介绍了其官方出品的开源子项目——MaxKB&#xff08;github.com/1Panel-dev/MaxKB&#xff09;。MaxKB是一款基于LLM&#xff08;Large Language Model&#xff09;大语言模型的知识库问答系统。MaxKB的产品命名内涵为“Max …

算法学习笔记Day9——动态规划初探

一、介绍 本文解决几个问题&#xff1a;动态规划是什么&#xff1f;解决动态规划问题有什么技巧&#xff1f;如何学习动态规划&#xff1f; 1. 动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法&#xff0c;只不过在计算机问题上应用比较多&#xff…