webpack配置

devtools/2024/11/20 7:14:44/

4-3vue-loader测试_哔哩哔哩_bilibili
一.新建文件夹vue_todo,vscode打开

二.ctrl+`打开终端,输入npm init -y,快速生成一个默认的package.json文件

之后左边出现项目初始化文件package.json

三.接下来需要webpack完成打包,所以安装webpackwebpack-cli
(-D是安装开发环境依赖,是--save-dev的简写)

四.编写主页文件index.html,div标签id为app

五.创建src目录,在src目录下创建main.js作为项目入口文件

1.导入vue

2.new关键字创建vue根实例

  • el:'#app' 接管index.html中id为app的元素内容
  • components:{App:App} 注册App组件
  • 在template标签中渲染App组件标签

要实现1,则要安装vue , 终端输入 npm install  vue

安装完成之后出现

然后impotr导入vue对象

要挂载App组件,先要创建App组件

在src文件夹下新建



index.html主页文件

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>todo应用</title>
</head><body><div id="app"></div>
</body></html>

main.js项目入口文件

javascript">// 一.创建Vue根实例,导入vue
import Vue from 'vue'// 导入App组件
import App from './App.vue'// new关键字创建vue根实例
new Vue({el: '#app', //接管index.html中id为app的元素内容components:{// 组件名:组件对象(组件名是自己起的,组件对象是导入的)App:App //键和值相同可以直接写为App}, //有了App名称,就可以在template中渲染这个标签template: '<App/>' //App是组件名,在template中渲染这个标签})
// .挂载App组件

App.vue根组件

<template><div>App</div>
</template>
<script>
</script>
<style>
</style>

总而言之,

就是main.js项目入口文件导入并创建vue实例

  • 实例接管了index.html主页文件(以id的方式)
  • 注册挂载App根组件(在components)
    在template标签中渲染根组件<App />


 

 在index.html文件中引入main.js测试

在index.html文件的script中导入maIn.js文件

浏览器打开index.html发现报错,不能识别main.js中的import等内容

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>todo应用</title>
</head><body><div id="app"></div><script src="./src/main.js"></script>
</body></html>

为了使webpack进行正常解析,这时就需要使用webpack将源代码进行打包

1.在工作目录下,新建webpack.config.js默认配置文件

2.使用module.exports = { } 导出一个对象,该对象是webpack的一个配置。改配置有最基本俩

  • 打包入口文件 ertry(告诉webpack从哪个文件夹开始打包,从src的main.js开始打包)
  • 打包出口文件output(将所有文件生成的文件放到哪里,指定filename,path指定打包的绝对路径,所以需要node提供的path模块)
javascript">// 导入path模块
const path = require('path')
module.exports = {// 打包入口entry: './src/main.js',// 打包出口output: {filename: 'bundle.js',path: path.resolve(__dirname, 'dist') //在当前目录的绝对路径下指定dist这个目录}
}

也就是在根目录下创建了一个dist目录,打包生成的的文件叫做bundle.js

使用webpack命令完成打包的过程

npx webpack在node_modules下找webpack并执行,执行的该webpack就会去加载webpack.config.js的配置文件,根据指定的入口出口生成对应的文件

但是一般npx比较麻烦,所以在pack.json中编写脚本帮助完成命令


然后就能使用npm run bulid这个指令了,这个就是打包命令

注意,不要安装成vue3了,现在在学习Vue2,安装错误通过npm uninstall vue卸载,通过npm install  vue@2.6.11可以安装特定版本



npm run build安装出错,webpack不能解析vue文件,它只能解析打包js文件。所以需要通过第三方loader解析

javascript">PS D:\vue框架学习\vue_todo> npm run build> vue_todo@1.0.0 build
> webpack./src/App.vue 81 bytes [built] [code generated] [1 error]WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. 
Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/ERROR in ./src/App.vue 1:0
Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
> <template>
|   <div>App</div>
| </template>@ ./src/main.js 5:0-27 12:9-12webpack 5.96.1 compiled with 1 error and 1 warning in 1766 ms

使用vue-loader来打包vue文件(vue-loader完成模板的编译)

安装完成发现vue-loader依赖css-loader,然后又安装css-loader


接下来进行webpack相关配置

从vue-loader@15开始,vue-loader需要在webpack中添加一个插件

webpack.config.js中配置打包规则
( 打包规则,test表示正则表达式,匹配以vue结尾的文件,以vue-loader来打包)


配置好之后在webpack.config.js中写一个插件

然后将该插件写入打包规则中



 

javascript">// 导入path模块
const path = require('path')// 导入vue-loader 的插件
const VueLoaderPlugin = require('vue-loader/lib/plugin')
module.exports = {// 打包入口entry: './src/main.js',// 打包出口output: {filename: 'bundle.js',path: path.resolve(__dirname, 'dist')},//打包规则,test表示正则表达式,匹配以vue结尾的文件,以vue-loader来打包module: {rules: [{test: /.\vue$/,loader: 'vue-loader'}]},// 插件plugins: [new VueLoaderPlugin()]
}


配置好之后执行打包npm run build命令

成功之后,根目录出现dist文件夹,文件夹中有bundle.js文件



webpack配置完成之后需要指定webpack是用于生产环境还是开发环境


这里指定webpack用于生产环境之后继续执行npm run build

就能看到打包出来的文件大小

如果设置为开发环境时,执行打包命令文件会大点



在主页文件index.html文件中引入bundle.js进行测试


 


 


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

相关文章

学习笔记024——Ubuntu 安装 Redis遇到相关问题

目录 1、更新APT存储库缓存&#xff1a; 2、apt安装Redis&#xff1a; 3、如何查看检查 Redis版本&#xff1a; 4、配置文件相关设置&#xff1a; 5、重启服务&#xff0c;配置生效&#xff1a; 6、查看服务状态&#xff1a; 1、更新APT存储库缓存&#xff1a; sudo apt…

深度学习之目标检测的技巧汇总

1 Data Augmentation 介绍一篇发表在Big Data上的数据增强相关的文献综述。 Introduction 数据增强与过拟合 验证是否过拟合的方法&#xff1a;画出loss曲线&#xff0c;如果训练集loss持续减小但是验证集loss增大&#xff0c;就说明是过拟合了。 数据增强目的 通过数据增强…

06 - Clickhouse的表引擎

目录 1、表引擎的使用 2、TinyLog 3、Memory 4、MergeTree 4.1、建表语句 4.2、插入数据 4.3、partition by分区&#xff08;可选&#xff09; 4.4、PartitionId 4.5、数据写入与分区合并 4.6、primary key主键&#xff08;可选&#xff09; 4.7、order by&#xff…

嵌入式C语言

一、模块化 什么是模块化编程 注意的点 结构图 二、进制转换 三、数据类型 四、数据运算 五、基本语句 六、数组 七、子函数 八、预编译 九、宏定义 #define 十、typedef 十一、结构体 struct 十二、枚举 enum 十三、指针 指针&#xff0c;C语言的灵魂 1.计算机存储机制 2.指…

javaScript交互补充2(动画函数封装)

2.1、简单动画实现 核心原理&#xff1a;通过定时器setInterval()不断移动盒子位置 实现步骤&#xff1a; 获得盒子当前位置、让盒子在当前位置上加上1个移动距离、利用定时器不断重复这个操作、加一个结束定时器的条件需要给元素加定位&#xff0c;利用left值变化改变元素的…

Redis 性能优化 18招

前言 Redis在我们的日常开发工作中&#xff0c;使用频率非常高&#xff0c;已经变成了必不可少的技术之一。 Redis的使用场景也很多。 比如&#xff1a;保存用户登录态&#xff0c;做限流&#xff0c;做分布式锁&#xff0c;做缓存提升数据访问速度等等。 那么问题来了&…

第三十七章 如何清理docker 日志

如何清理docker 日志 目标 掌握docker 日志设置掌握docker日志的清理办法背景 在现代软件开发和部署环境中,Docker 容器技术因其轻量级、可移植性和高效资源利用的特点,已成为许多企业和开发团队的首选。Docker 容器在运行过程中会产生大量的日志信息,这些日志对于监控容器…

驾驭未来:Spring Boot汽车资讯门户

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理汽车资讯网站的相关信息成为必然。开发合适…