IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 新手小白VUE整理(1) —— webpack -> 正文阅读

[JavaScript知识库]新手小白VUE整理(1) —— webpack

VUE2.X

1.安装node.js

去官网下载对应的安装包,一键安装即可。
安装教程:https://blog.csdn.net/qq_40712862/article/details/120231621

2.win10系统查看或配置系统环境变量

https://www.jb51.net/os/win10/801921.html
ctrl+R,打开命令行,输入“sysdm.cpl”,点击“高级”–>“环境变量”–>“系统变量”–>“path”,点击编辑,node.js已自动配置到环境变量

3.前端工程化概念

1.模块化:js的模块化、css的模块化、资源的模块化
2.组件化:复用现有的UI结构、样式、行为
3.规范化:目录结构的划分、编码规划化、接口规范化、文档规范化、Git分支管理
4.自动化:自动化构建、自动部署、自动化测试
5.工程化解决方案:
	早期:grunt、gulp(已淘汰)
	目前主流:webpack、parcel
总的原则:在企业级的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规范化、标准化。

3.Webpack

1.什么是webpack?

概念:webpack是前端项目工程化的具体解决方案。
主要功能:它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理浏览器端JavaScript的兼容性、性能优化等强大的功能。让程序猿把工作重心放到具体的功能实现上,提高了前端的开发效率和项目的可维护性。

2.webpack基本使用

1)新建项目,完成隔行变色功能

在这里插入图片描述

2)安装webpack

npm i webpack webpack-cli -D

3)配置webpack

①在项目根目录中,创建名为webpack.config.js的webpack配置文件,并初始化如下的基本配置

module.exports = {
  // webpack运行模式,可选值:development和production
  mode:"development"
}

②在package.json的scripts节点下,新建dev脚本如下

"scripts": {
    "dev":"webpack"
  }

③在终端运行npm run dev命令,启动webpack进行项目的打包构建

4)webpack打包默认约定

在webpack4.x和5.x的版本汇总,有如下默认约定:
①默认的打包入口文件未src -> index.js
②默认的输出文件路径为dist -> main.js
注:可以在webpack.config.js中修改打包的默认约定

5)自定义webpack打包的入口和出口

在webpack.config.js配置文件中,通过entry节点指定打包的入口,通过output节点指定打包的出口。示例代码如下:

// 导入node.js张专门操作路径的模块
const path = require('path')
module.exports = {
  // webpack运行模式,可选值:development和production
  // development:开发模式,打包速度快,但是打包体积大
  // production:生产模式,打包速度慢,但是打包体积小
  mode:"development",
  // 指定要处理哪个文件,__dirname代表项目根目录
  entry:path.join(__dirname,'./src/index1.js'),
  // 指定出口路径
  output:{
    // 存放到目录
    path:path.join(__dirname,'dist'),
    // 生成文件名
    filename:'bundle.js'
  } 
}

6)安装webpack-dev-server

这个插件的作用是,在修改代码以后webpack会自动进行项目的打包和构建
①安装命令:npm i webpack-dev-server@3.11.2 -D
②package.json中scripts修改属性值:

"scripts": {
    "dev": "webpack serve"
  }

③webpack.config.js中添加配置

devServer: {
        contentBase: path.join(__dirname, './'), // 指定发布后的映射的路径,./代表映射当前根路径
        compress: true, // 压缩资源
        port: 9000, // 指定服务器的端口号
        open: true, // 是否自动打开页面
    }

3.loader相关

1)loader概述

  • 在实际开发过程中,webpack默认只能打包处理以.js后缀名结尾的模块。其他非.js后缀名结尾的模块,webpack默认处理不了,需要调用loader加载器才可以正常打包,否则会报错;

  • loader加载器的作用:协助webpack打包处理特定的文件模块。比如:
    css-loader 可以打包处理.css相关的文件
    less-loader可以打包处理.less相关的文件
    babel-loader可以打包处理webpack无法处理的高级JS语法

2)loader执行原理

  • webpack默认只能打包处理.js结尾的文件,处理不了其他后缀的文件
  • 由于代码中包含了index.css这个文件,因此webpack默认处理不了
  • 当webpack发现某个文件处理不了的时候,会查找webpack.config.js这个配置文件,看module.rules数组中,是否配置了对应的loader加载器
  • webpack把index.css这个文件,先转交给最后一个loader进行处理(先转交给css-loader)
  • 当css-loader处理完毕以后,会把处理的结果,转交给下一个loader(转交给style-loader)
  • 当style-loader处理完毕以后,发现没有下一个loader了,于是就把处理结果转交给webpack
  • webpack把style-loader处理的结果,合并到/dist/bundle.js中,最终生成打包好的文件

3) 打包处理css文件

  • 运行 npm i style-loader css-loader -D 命令,安装css文件的loader
  • 在webpack.config.js的module–>rules数组中,添加loader规则如下:
module:{ // 所有第三方文件模块的匹配规则
    rules:[
       {test:/\.css$/,use:['style-loader','css-loader']}
    ]
}

4)打包处理less文件

  • 运行 npm i less-loader less -D
  • 在webpack.config.js的module–>rules数组中,添加loader规则如下:
module:{ // 所有第三方文件模块的匹配规则
    rules:[
       {test:/\.less$/,use:['style-loader','css-loader','less-loader']},
    ]
}

5)打包处理图片

  • 运行npm i url-loader file-loader -D
  • 在webpack.config.js的module–>rules数组中,添加loader规则如下:
module:{ // 所有第三方文件模块的匹配规则
    rules:[ // 文件后缀名匹配规则
       {test:/\.jpg|png|gif$/,use:'url-loader?limit=22222'},
    ]
}
其中?之后的loader的参数项:
limit用来指定图片的大小,单位是字节(byte),只有<=limit大小的图片,才会被转成base64格式的图片

6)安装babel-loader,打包处理高级js语法

  • 运行 npm i babel-loader @babel/core @babel/plugin-proposal-decorators -D
  • 在webpack.config.js的module–>rules数组中,添加loader规则如下:
module:{ // 所有第三方文件模块的匹配规则
    rules:[ // 文件后缀名匹配规则
        // 在配置babel-loader的时候,要排除掉第三方包
       {test:/\.js$/,use:'babel-loader',exclude:/node_modules/},
    ]
}
  • 在项目根目录下,创建名为babel.config.js的配置文件,定义Babel的配置项如下:
module.exports = {
  // 声明babel可用的插件
  // 将来,webpack在调用babel-loader的时候,会先加载plugins中的插件
  plugins: [
    ["@babel/plugin-proposal-decorators", { legacy: true }]
  ]
}
  • 官方文档:https://babeljs.io/docs/en/babel-plugin-proposal-decorators

4.安装clean-webpack-plugin

  • 作用:每次打包发布删除原来的dist文件夹
  • npm i clean-webpack-plugin -D
  • webpack.config.js添加如下代码:
const {CleanWebpackPlugin} = require('clean-webpack-plugin')
module.exports = {
      plugins:[new CleanWebpackPlugin()]
  }
  • 官网https://github.com/johnagan/clean-webpack-plugin#readme
    注:其他插件举一反三,需要的时候通过官网配置

5.打包发布

在package.json文件的scripts节点下,新增build命令如下:

"scripts":{
  // 项目发布时,将mode设置成production,会对文件进行压缩,运行build命令
  "build":"webpack --mode production" 
}

6.优化生成的js存放路径

修改webpack.config.js中的output命令:

output:{
  // 存放到目录
  path:path.join(__dirname,'dist'),
  // 生成文件名
  filename:'js/bundle.js'
}

7.优化生成的image存放路径

修改webpack.config.js中的url-loader:

{test:/\.jpg|png|gif$/,use:'url-loader?limit=22222&outputPath=images'}

8.SourceMap

  • SourceMap是一个信息文件,里面存储着位置信息。就是说,SourceMap文件中存储着压缩混淆后的代码,
    所对应的转换前的位置,有了它,出错的时候,处错工具将直接显示原始代码,不是转换后的代码,可以极大
    地方便后期调试。
  • 默认SourceMap的配置,记录的是生成后的代码位置,会导致运行时报错的行数与源代码的行数不一致问题。
  • 解决默认SourceMap的问题:开发环境下,推荐在webpack.config.js中添加如下的配置,可保证运行时报错
    的行数与源代码行数保持一致:
module.exports = {
  devtool :'eval-source-map'
}
  • 在生产环境下,如果省略了devtool选项,则最终生成的文件中不包含Source Map,这样能够防止原始代码暴露。
    如果只想定位报错的具体行数,且不暴露源码。此时可以将devtool的值设置为nosources-source-map。

9.import导入@符号

  • @符号:表示src源代码目录,从外往里找,不要使用…/从里往外查找
  • webpack.config.js 添加配置:
module.exports = {
  resolve:{
    alias:{
      '@':path.join(__dirname,'./src/')
    }
  }
}
  • 使用示例:
    在src目录下新建一个test文件夹,test文件夹中新建一个test.js文件
import testJs from '@/test/test.js' 

10.npm中"-S"和"-D"说明

1)关于npm i xxx -S 中 “-S"说明
将模块依赖添加到dependencies中,可省略,完整写法”–save"
2)npm i xxx -D 中 "-D"说明
将模块依赖添加到devDependencies中,完整写法 “–save-dev”

11.dependencies说明

这个可以说是我们 npm 核心一项内容,依赖管理,这个对象里面的内容就是我们这个项目所依赖的 js 模块包。
下面这段代码表示我们依赖了 markdown-it 这个包,版本是 ^8.1.0 ,代表最小依赖版本是 8.1.0 ,如果这个包有更新,
那么当我们使用 npm install 命令的时候,npm 会帮我们下载最新的包。当别人引用我们这个包的时候,包内的依赖包也会被下载下来。

"dependencies": {
    "jquery": "^3.6.1"
}

简单一点:开发阶段要用到,上线也要用到

12.devDependencies 开发依赖说明

在我们开发的时候会用到一些包,只是在开发环境中需要用到,但是别人引用我们包的时候,不会用到这些内容,
放在 devDependencies 的包,在别人引用的时候不会被 npm 下载。

"devDependencies": {
    "autoprefixer": "^6.4.0",0",
    "babel-preset-es2015": "^6.0.0",
    "babel-preset-stage-2": "^6.0.0",
    "babel-register": "^6.0.0",
    "webpack": "^1.13.2",
    "webpack-dev-middleware": "^1.8.3",
    "webpack-hot-middleware": "^2.12.2",
    "webpack-merge": "^0.14.1",
    "highlightjs": "^9.8.0"
}

简单一点:开发阶段要用到,上线的时候不需要

13.npm本地模式和全局模式

npm默认是本地模式安装依赖,即从 http://npmjs.org 搜索或下载包,将包安装到当前目录的 node_modules 子目录下。
这种做的好处是,不同程序依赖不同的版本的包不会存在冲突,缺陷则是同一个包可能会被安装许多次
一般来说,全局安装只适用于某些工具模块,比如eslint等。
本地模式和全局模式的特点如下:
本地模式:可通过require使用,不会注册PATH环境变量
全局模式:不可以通过require使用,会注册PATH环境变量
本地安装
$ npm install
全局安装
$ sudo npm install -global
$ sudo npm install -g
npm相关更详细说明:
https://blog.csdn.net/csdn_yudong/article/details/78946708

14.webpack 中mode说明

module.exports = {
  // webpack运行模式,可选值:development和production
  // development:开发模式,打包速度快,但是打包体积大
  // production:生产模式,打包速度慢,但是打包体积小
  mode:"development"
}
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:19:49  更:2022-11-05 00:23:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:09:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码