webpack配置

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

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

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

三.接下来需要webpack完成打包,所以安装webpack和webpack-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项目入口文件

// 一.创建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模块)
// 导入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解析

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中写一个插件

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



 

// 导入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.xdnf.cn/news/19486.html

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

相关文章

字节跳动辞退103人

大家好&#xff0c;我是程序员面试刷题平台的鸭鸭&#xff01; 在前阵子实习生破坏大模型训练事件之后&#xff0c;字节又上了一次热搜。 鸭鸭吃完瓜&#xff0c;只能说&#xff0c;社会险恶啊同学们&#xff01; 5 号&#xff0c;字节跳动内部发布了年内第四份《企业纪律与职…

大型语言模型综述 A Survey of Large Language Models

文章源自 2303.18223 (arxiv.org) 如有侵权&#xff0c;请通知下线 这是一篇关于大语言模型&#xff08;LLMs&#xff09;的综述论文&#xff0c;主要介绍了 LLMs 的发展历程、技术架构、训练方法、应用领域以及面临的挑战等方面&#xff0c;具体内容如下&#xff1a; 摘要…

服务器作业4

[rootlocalhost day04]# vim 10.sh [rootlocalhost day04]# cat 10.sh #通过shell脚本分析部署nginx网络服务 #1.接收用户部署的服务名称 read -p "服务名称:(nginx)" server if [ $server ! nginx ];then echo "输入的不是nginx,脚本退出" exit 1…

Linux基础(二十)——程序管理与 SELinux 初探

程序管理与 SELinux 初探 1. 程序和进程2.程序调用流程3. 一个bash中的多任务工作管理4.进程管理4.1 查询进程4.2 进程的执行顺序 5.系统资源的观察6. /proc/* 代表的意义7.SELinux 1. 程序和进程 2.程序调用流程 程序与进程之间的关系&#xff1a; 从上图可以看出&#xff0…

vue3 路由写法及传参方式 !超详细

Vue Router 是 Vue.js 官方的路由管理器。它主要用于单页面应用程序&#xff08;SPA, Single Page Application&#xff09;中&#xff0c;帮助解决页面导航、组件复用等问题。 基本的使用 1.router配置文件代码 创建一个ts文件,用来写路由器 // 创建一个路由器,并暴露出去 …

MATLAB绘制正四面体、正六面体

MATLAB绘制正四面体、正六面体 clc;close all;clear all;warning off;% clear all rand(seed, 100); randn(seed, 100); format long g;% 正四面体&#xff08;Tetrahedron&#xff09; % 顶点坐标&#xff08;正四面体的顶点位于一个正方体的对角线上&#xff0c;并经过适当缩…

一文了解 inductive bias(归纳偏好)

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 归纳偏好&#xff08;Inductive Bias&#xff09;是机器学习中的一个非常基础但又非常重要的概念。为了更好地理解它&#xff0c;我们先从 “归纳” 和 “偏好” 这两个词开始讲解。 什么是归纳&#x…

leetcode844:比较含退格的字符串

题干 题目分析 两个字符串要进行比较&#xff0c;#代表着回车&#xff0c;也就是删除之前的字符。 若按照遍历的惯例&#xff0c;选择从前到后遍历&#xff0c;但这样没法判断&#xff0c;因为#之前被删除的部分是不需要相同的。 因此考虑到#的含义&#xff0c;我们应该选择从…

【Python爬虫实战】从入门到精通:全面解析IP代理池的原理与实战应用

&#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、IP代理池 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;主要功能 &#xff08;三…

c++_day2

第一题&#xff1a; 继续为 mystring类编写以下方法&#xff1a; 1&#xff1a;析构函数&#xff0c;释放buf指向的堆空间 2&#xff1a;编写 append(const mystring r) 为当前字符串尾部,拼接新的字符串r 3&#xff1a;编写 isEqual(const mystring r) 判断当前字符串和 字符串…

机器学习基础06

目录 1.梯度下降 1.1梯度下降概念 1.2梯度下降公式 1.3学习率 1.4实现梯度下降 1.5API 1.5.1随机梯度下降SGD 1.5.2小批量梯度下降MBGD 1.6梯度下降优化 2.欠拟合过拟合 2.1欠拟合 2.2过拟合 2.3正则化 2.3.1L1正则项&#xff08;曼哈顿距离&#xff09; 2.3.2…

基于一种基于OCR图像识别技术的发票采集管理系统及方法

本发明涉及了一种基于OCR图像识别技术的发票采集管理系统及方法&#xff0c;该系统的发票信息采集单元采集发票图片信息数据&#xff0c;OCR图像识别单元基于OCR图像识别技术并结合人工智能深度学习算法对发票图片信息数据进行识别读取以获得OCR图像识别结果&#xff0c;发票信…

Windows注册表基础学习

修改注册表让cmd ascii输出有颜色 reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1 如何打开注册表编辑器 运行regedit 按下"Winr"组合键&#xff0c;在打开的"运行"对话框中输入"regedit"&#xff0c;单击"确定"…

CarSim复制数据注意事项

更正&#xff0c;上图中提到的“数据集”应该是“数据类别”&#xff0c;可以理解为数据集的一个子集。

Spring:注解开发依赖注入

Spring为了使用注解简化开发&#xff0c;并没有提供构造函数注入、setter注入对应的注解&#xff0c;只提供了自动装配的注解实现。 直接上代码&#xff1a; 1&#xff0c;添加一个配置类SpringConfig Configuration ComponentScan("com.itheima") //PropertySourc…

springboot006基于SpringBoot的网上订餐系统(源码+包运行+LW+技术指导)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【Linux】learning notes(2)

文章目录 1、快捷键2、专业名词2.1、驱动2.2、内核2.3、U-Boot2.4、Dynamic Library and Static Library2.5、SDK / NDK / UDK 3、BUG 前文链接&#xff1a; 【Linux】learning notes 1、快捷键 在文件夹里&#xff0c;ctrll&#xff0c;选定文件夹路径 Linux下的ctrl常用组合…

商业银行核心系统单元化改造的研究与思考

随着金融科技的快速发展&#xff0c;银行核心系统面临着更高的处理能力、扩展能力及业务连续性的要求与挑战。为应对这些挑战&#xff0c;许多银行开始考虑对其核心系统进行单元化改造。本文首先分析了传统银行核心系统存在的问题以及单元化改造的必要性&#xff0c;然后详细阐…

指针

内存和地址 内存 我们知道计算上CPU&#xff08;中央处理器&#xff09;在处理数据的时候&#xff0c;需要的数据是在内存中读取的&#xff0c;处理后的数据也会放回内存中&#xff0c;那我们电脑上的哪些内存空间如何高效的管理呢&#xff1f; 其实也是把内存划分为一个个的…

强大的正则表达式——Medium

由上一篇文章《Easy》中提到过的&#xff1a; 还是直接让AI写个python脚本生成难度2的正则表达式&#xff0c;但是生成的正则表达式无法成功获取到flag&#xff1a; 这里了解了一下相关知识&#xff0c;字符串形式的整数对常数求模是可以用有限状态机来实现的。对于二进制数字来…