Vue2之webpack篇(一)

news2025/1/26 15:44:11

目录

前言

1、什么是webpack?

2、传统开发模式

一、传统开发模式

1、场景

2、问题

3、原因

4、解决方案

二、ES6模块化

1、ES6的解决方案

 3、拓展

4、取别名

 5、*搭配取别名

 6、导出default{}

三、CommonJS规范

1、推荐文档

2、使用CommonJS规范解决方案

四、了解webpack

1、概念

2、文档

3、安装node.js

五、CommonJS规范问题的解决步骤

1、下载webpack

2、main.js文件

3、打包webpack

 4、引入地址的修改

5、弊端

六、webpack配置文件

1、创建文件

2、输入命令

3、发现打包文件

七、项目管理文件

1、记录项目

2、命令初始化

3、npm i

4、npm其他语句


前言

1、什么是webpack?

webpack:打包工具

2、传统开发模式

以往的方法都是单页面,一个index对应一个js文件,并且是自己完成的

而这样的方法是局限的,在现实中通常是多人开发,这时候肯定不能写一行代码就去沟通一下,因此需要有几个注意事项


一、传统开发模式

1、场景

(1)两个开发人员一起开发一个项目,编写a.js、b.js、c.js文件,其中开发员1负责a.js、c.js,开发员2负责b.js

(2)开发员1在a.js文件定义一个年龄变量age,赋值15,在c.js文件写ifelse判断该年龄是否成年;开发员2也定义一个年龄变量age,赋值20

2、问题

(1)结果输出:成年人

(2)开发员1迷糊,自己编写的15未成年居然变成成年人

3、原因

变量命名冲突【js在index.html文件的加载顺序问题】

4、解决方案

匿名函数,使函数具有作用域,隔离了变量,使用return返回【立即执行函数】


二、ES6模块化

还原前面初始场景问题

1、ES6的解决方案

(1)在index.html文件引入script上,添加属性type="module",是三个js文件独立成模块化

<script src="./a.js" type="module"></script>
<script src="./b.js" type="module"></script>
<script src="./c.js" type="module"></script>

注意:

①用Browser运行会报错

 ②建议用插件Live Server运行即可

(2)但是独立成模块化后,在c.js文件里age就找不到了

(3)这时就需要使用导入和导出

①导出:export {age}

②导入:import {age} from './a,js'

//a.js
var age = 15
export{age}
// c.js
import {age} from "./a.js"

if(age >= 18){
    console.log('成年人');
}else{
    console.log('未成年');
}

 

 3、拓展

(1)导出导入一个方法

//a.js
var age = 15
function sum(x,y){
    return x + y
}
// var sum = function(){
//     return x + y
// }
export{age,sum}
// c.js
import {age,sum} from "./a.js"

if(age >= 18){
    console.log('成年人');
}else{
    console.log('未成年');
}
console.log(sum(1,2));

 

 (2)多个变量单独导出,一块导入

//a.js
export const age = 15;
export function sum(x,y){
    return x + y
}

4、取别名

(1)当a.js和b.js同时导出age变量使,有会出现age已经被声明的问题

//a.js
var age = 15
export {age}
// b.js
var age = 20
export{age}
// c.js
import {age} from "./a.js"
import {age} from "./b.js"
if(age >= 18){
    console.log('成年人');
}else{
    console.log('未成年');
}

 (2)取别名:这时候可以把导入的其中一个age改成另一个名称

import {age as ageB} from "./b.js"

 5、*搭配取别名

*代表所有的元素,直接导入所有变量

import * as moduleA from "./a.js"

 6、导出default{}

注意:当导出的是default{}时,引入import不需要{}括号

//a.js
export default{
    number:100,
}
// c.js
import number from "./a.js"
console.log(number);


三、CommonJS规范

1、推荐文档

CommonJS规范 - 简书导读 内容大部分都是来源于 阮一峰老师的博客,做个搬运工加自己写一写。想看原文请移步CommonJS规范 -- JavaScript 标准参考教程(alpha) 1....https://www.jianshu.com/p/dd08f4095a49(1)导出:module.exports

(2)导入:require


还原初始场景问题


2、使用CommonJS规范解决方案

//a.js
var age = 15
module.export = {
    age,
}
// b.js
var age = 20
module.export = {
    age,
}
// c.js
const moduleA = require('./a.js')
if(moduleA.age >= 18){
    console.log('成年人');
}else{
    console.log('未成年');
}

 

 还是报错,此时就要使用解决方案webpack了🧐


四、了解webpack

1、概念

(1)本质上,webpack是一个用于现代 JavaScript 应用程序的静态模块打包工具

(2)当 webpack处理应用程序时,它会在内部从一个或多个入口点构建一个依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示你的内容

2、文档

webpack | webpack 中文文档 | webpack 中文网webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使用,但它也能够胜任转换(transform)、打包(bundle)或包裹(package)任何资源(resource or asset)。https://www.webpackjs.com/

3、安装node.js

(1)使用webpack前需要使用nvm安装node.js,nvm相对于一个管理器,专门管理node,不同的项目对node版本的需求可能会有所不同

(2)node的安装步骤,小伙伴们可以参考下面的文档🧐

windows下使用nvm安装node.js_羁城灬的博客-CSDN博客_nvm安装nodejs目录是空的nvm是一个nodejs版本控制下载器,可以通过nvm下载安装想要的nodejs版本,通过nvm指定使用已安装的某个版本,便于快速管理nodejs版本.避免项目对nodejs版本的需求,导致需要重复安装\卸载不同版本的nodejs到官网下载安装包 ......https://blog.csdn.net/qq_44276227/article/details/125561077?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22125561077%22%2C%22source%22%3A%22qq_44276227%22%7D&ctrtid=lEV01


五、CommonJS规范问题的解决步骤

1、下载webpack

(1)打开VSCode终端,使用命令

npm i webpack@4 webpack-cli -g

        ①i:install下载

        ②-g:全局下载

(2)加入对应文件终端

①法一:右键点击需要配置的文件,选择在集成终端中打开

②法二:直接打开集成终端,通过输入cd 项目路径,进入正确的文件夹下

注意:可以按tab键有选择的进路径

2、main.js文件

需要有一个常见的main.js作用程序入口(即引入html需要的js),在本篇例子中可以把c.js文件看作此处的main.js文件

3、打包webpack

使用打包命令webpack 要打包的文件 打包生成的位置

webpack ./main.js -o ./dist

(1)./main.js:入口文件

(2)./dist:打包结果文件

 (3)注意

①只要语句没有ERROR错误,那么就算执行成功

②如果报错了,很可能是全局webpack 与 本地webpack版本不一致导致

 解决方法就是换webpack的版本:

先删除已下载过的webpack

npm uninstall webpack -g

再重新下载其他版本的webpack

npm install webpack@4.17.1 -g

 @后边跟版本号,可以在本地package.json中查看webpack版本

 4、引入地址的修改

在html文件中,将用来的三个js文件分别引入修改为打包生成的js文件

<script src='./dist/main.js'></script>

 

5、弊端

(1)代码每修改一次就要重新在终端打包webpack,过程繁琐

(2)解决方法:对webpack进行配置,小伙伴们可以下面文档的具体介绍🧐

概念 | webpack 中文文档 | webpack 中文文档 | webpack 中文网webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使用,但它也能够胜任转换(transform)、打包(bundle)或包裹(package)任何资源(resource or asset)。https://www.webpackjs.com/concepts/#output


六、webpack配置文件

1、创建文件

(1)在对应的工程文件下,创建webpack.config.js

(2)配置文件

//node中自带的模块,用来处理文件路径
const path = require('path');//引入文件

module.exports = {//导出
  //指定要处理的js(入口js文件)
  entry: './main.js',//注意文件路径
  //指定文件输出的配置
  output: {
    //指定打包输出的路径
    //__dirname:Node.js中指向被执行js文件的绝对路径
    path: path.resolve(__dirname, 'dist'),//path的路径拼接方法
    //打包输出的文件名
    filename: 'bundle.js',
  },
};

2、输入命令

(1)使用终端进入项目根目录,直接输入命令【webpack】即可

(2)webpack会自动查找目录下的webpack.config.js文件,读取里面的配置进行打包

3、发现打包文件

(1)查看原先打包的文件dist下会产生一个指定输出的bundle.js文件,打开其实是对前面工程的所有操作全部打包在这个bundle.js文件里

(2)后续修改代码,仅需在终端输入webpack重新打包一下即可


七、项目管理文件

1、记录项目

前面的命令默认去全局配置的找运行依赖,但是一个项目应该有属于自己项目的依赖,而且项目使用了哪些依赖应该记录下来

2、命令初始化

(1)在工程终端输入npm init,进行相应的配置

(2)配置好后,将产生一个package.json文件

 (3)拓展,与"script"同级类似的还有如下:

①dependencies:生产环境下,项目运行所需依赖
②devDependencies:开发环境下,项目所需依赖

3、npm i

(1)下载jquery:在工程终端输入npm i jquery

 (2)直接引入jquery使用

cosnt jquery = require('jquery')
console.log('jquery')

注意:每次修改都要重新在终端输入webpack打包

(3)下载vue2:npm i vue@2

(4)此时工程会产生一个新的文件夹node_modules,称为依赖包,同时package.json文件也发生了变化

4、npm其他语句

(1)npm run start

(2)npm run test

(3)npm rub build

具体使用功能将在后续文章使用到再做详细解释🧐

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

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

相关文章

十二、DockerFile构建过程解析

1、概述 Dockerfile是用来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本。 在Docker 常用命令篇中&#xff0c;我们已经知道了2中构建镜像的方式 export\import 和 commit方式。这两种方式都需要先运行并创建容器&#xff0c;然后在容器…

python自学之《21天学通Python》(5)

第8章 复杂程序组织 当一个应用程序简单时&#xff0c;将程序代码写入一个文件即可。但随着应用程序或项目复杂度增加时&#xff0c;如果将所有代码都写入同一个文件中时&#xff0c;会出现文件过长或过大&#xff0c;即不方便代码浏览&#xff0c;也不方便代码的管理、使用与维…

人工智能人才缺口暴增,想转行的你赶紧把Python学起来...

当前AI人才极度紧缺&#xff0c;据《中国ICT人才生态白皮书》研究分析&#xff0c;到2018年底&#xff0c;我国人工智能人才缺口将突破100万&#xff0c;到2020年&#xff0c;这一数字将攀升到226万。 在过去的几年中&#xff0c;Python已经成为现代软件开发&#xff0c;基础设…

Web测试的各个测试点,居然这么全!(文末送web测试方法大全一份)

1 什么是Web测试&#xff1f; Web测试测试Web或Web应用程序的潜在错误。它是在上线前对基于网络的应用程序进行完整的测试。 UI测试功能测试数据库测试性能测试兼容性测试安全测试自动化测试 2 WEB测试主要测试场景 1.UI测试 界面是否美观&#xff0c;风格、字体、样式是否…

初识: 对象的属性特征

1. 前言 2. 什么是对象的属性特征 3. 灵活控制对象的属性特征 4. configurable: false 是单向设置的 1. 前言 众所周知&#xff0c;默认情况下我们可以任意对自己定义的对象进行增删改的。但是&#xff0c;在某些情况下&#xff0c;我们不能让别人去随便修改我们定义的对象的…

《数据结构》二叉数

学习目录树型结构概念树的重要概念树的表示形式二叉数概念特殊的二叉树二叉树的性质练习题树型结构 概念 树是一种非线性的数据结构&#xff0c;由 n 个有限节点组成一个有层次关系的集合 它具有以下的特点&#xff1a; 有一个特殊的结点&#xff0c;称为根结点&#xff0c;…

【 Threejs 】- Shader 着色器实例渲染教程

着色器在threejs中是一个难点&#xff0c;话不多说&#xff0c;先来看看着色器是什么&#xff1f; 如果您已经有使用计算机绘图的经验&#xff0c;您就会知道在这个过程中您先画一个圆&#xff0c;然后画一个矩形、一条线、一些三角形&#xff0c;直到您组成您想要的图像。这个…

面试真题 | 什么是 Redis ? Redis缓存应用场景有哪些?

面试官问题 redis击穿、穿透有什么区别&#xff1f;如何设计用例及测试 Redis 的基本概念 在没有添加 Redis 的时候&#xff0c;后端的查询流程是&#xff1a; 用户访问页面。请求后端服务。经过逻辑处理后&#xff0c;去数据库查询信息。 在添加 Redis 的之后&#xff0c;…

MySQL 服务端口大全

介绍 MySQL默认服务端口3306/TCP都不会陌生&#xff0c;但MySQL提供服务只有单纯的这个端口吗。在8.0版本默认启动的时候会发现&#xff0c;出现新的端口。 可以说MySQL使用的端口数量取决于所启用的特性、所使用的组件、应用程序连接的方式以及环境的其他方面。 按照官方说…

转速传感器信号隔离变送器正弦波输入方波信号输出

特点 转速传感器信号直接输入&#xff0c;方波信号输出正弦波、锯齿波信号输入&#xff0c;方波信号输出200mV峰值微弱信号的放大与整形不改变原波形频率&#xff0c;响应速度快电源、信号&#xff1a;输入/输出 3000VDC三隔离辅助电源&#xff1a;5V、12V、15V或24V直流单电源…

Huffman编码

目录背景Huffman编码代码部分背景 在数据传输&#xff0c;保存的时候&#xff0c;特别是在数据量特别大的时候传输&#xff0c;保存数据是一件特别麻烦的事。比如逛淘宝的时候&#xff0c;首页会有很多商家展示自己产品的高清图片&#xff0c;如果不对图片进行压缩服务端保存图…

经历百度、美团两次被裁后,我能在小公司躺平吗?

百度裁员后我进入体制内&#xff0c;专心学习自动化 百度被裁后&#xff0c;我意识到自学效果不佳&#xff0c;跟不上职场的所需&#xff0c;于是有了系统学习的想法。 这时的新工作是在体制内&#xff0c;工作强度不大&#xff0c;时间上也比较自由&#xff0c;便正式成为了…

非零基础自学Golang 第12章 接口与类型 12.5 类型断言

非零基础自学Golang 文章目录非零基础自学Golang第12章 接口与类型12.5 类型断言12.5.1 ok-pattern12.5.2 switch-type第12章 接口与类型 12.5 类型断言 类型断言是使用在接口变量上的操作。 简单来说&#xff0c;接口类型向普通类型的转换就是类型断言。 类型断言的语法是…

【关于时间序列的ML】项目 1 :使用 Python 进行 Covid-19 病例 预测

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

rk3568 | 瑞芯微平台GPIO引脚驱动编写

最近在玩瑞芯微平台的产品&#xff0c;移植了几个设备的驱动&#xff0c;遇到了一些问题&#xff0c;总结后发现大部分问题都出在了GPIO配置的问题上&#xff0c;写下本篇文章&#xff0c;用来分享一下调试的心得。 有喜欢瑞芯微的朋友&#xff0c;可以加我好友&#xff0c;拉…

JVM的作用,结构

源文件经过编译&#xff0c;生成字节码文件 JVM执行字节码文件&#xff08;实际上就是将字节码解释成具体平台上的机器指令&#xff09; jdk&#xff0c;jre&#xff0c;jvm三者的关系&#xff1a; jvm的组成&#xff1a; (1)类加载器子系统:负责将.class文件加载到JVM中 (2)…

初学编程,我们应该怎么做,十年老鸟带你入门。

问问自己学编程的真正目的&#xff0c;仅仅是想应付考试考证&#xff0c;还是真心想从事编程方面的工作。仅仅处于功利性而不是真心喜欢&#xff0c;人生苦短&#xff0c;劝不要来浪费时间&#xff0c;找其它真心喜欢的事情。不是社会喜欢的&#xff0c;不是父母喜欢的&#xf…

这6个微信隐藏功能你真的知道吗?学到就是赚到

我们常用的软件——微信&#xff0c;它有着许多隐藏功能&#xff0c;这些功能其实是很好用的&#xff0c;但是一直被我们忽略掉&#xff0c;现在我整理出来了&#xff0c;一起来看看吧。1.登录设备管理 我们平常在其它设备登录&#xff0c;第一次登录需要二次验证才能成功&…

jdk11新特性——新的Epsilon垃圾收集器

目录一、Epsilon垃圾收集器概述二、Epsilon垃圾收集器用法三、Epsilon垃圾收集器代码示例四、使用Epsilon垃圾收集器的原因五、使用Epsilon垃圾收集器的主要用途一、Epsilon垃圾收集器概述 A NoOp Garbage CollectorJDK上对这个特性的描述是: 开发一个处理内存分配但不实现任何…

【Flink】Flink GET operation failed: Server side error 从blobserver下载错误

文章目录 1.概述2.服务器端1.概述 flink 报错 Flink GET operation failed: Server side error 从blobserver下载错误 java.io.IOException: GET operation failed: Server side error: /tmp/hadoop-www/nm-lo