【Vue实战教程】之Vue工程化项目详解

Vue工程化项目

随着多年的发展,前端越来越模块化、组件化、工程化,这是前端发展的大趋势。webpack是目前用于构建前端工程化项目的主流工具之一,也正变得越来越重要。本章节我们来详细讲解一下如何使用webpack搭建Vue工程化项目。

1 使用webpack构建Vue项目

1.1 什么是webpack

Webpack 是一个现代 JavaScript 应用程序的静态模块打包器(static module bundler)。在 Webpack 处理应用程序时,它会在内部创建一个依赖图(dependency graph),用于映射到项目需要的每个模块,然后将所有这些依赖生成到一个或多个 bundle。

Webpack 可以做到按需加载。像 Grunt、Gulp 这类构建工具,打包的思路是:

遍历源文件 > 匹配规则 > 打包

这个过程中做不到按需加载,即对于打包起来的资源,到底页面用不用,打包过程中是不关心的。

Webpack 跟其他构建工具本质上不同之处在于:Webpack 是从入口文件开始,经过模块依赖加载、分析和打包三个流程完成项目的构建。在加载、分析和打包的三个过程中,可以针对性的做一些解决方案,达到按需加载的目的,比如code split(拆分公共代码等)。

当然,Webpack 还可以轻松的解决传统构建工具解决的问题:

  • 模块化打包
  • 语法糖转换
  • 预处理器编译
  • 项目优化
  • 解决方案封装
  • 流程对接
1.2 webpack中配置Vue开发环境

在webpack中配置Vue开发环境的过程如下。

项目初始化

在硬盘上创建项目的根目录,例如 d:\myapp,在 myapp 目录下启动命令行工具,执行以下命令:

npm init -y

上面命令运行成功后,会在myapp目录下自动创建package.json文件。

安装依赖

在myapp目录下的命令行工具中,依次执行以下命令:

# 安装 vue 依赖
npm i vue# 安装 webpack 和 webpack-cli 开发依赖
npm i webpack webpack-cli -D# 安装 babel
npm i babel-loader @babel/core @babel/preset-env -D# 安装 loader
npm i vue-loader vue-template-compiler -D# 安装 html-webpack-plugin
npm i html-webpack-plugin -D

创建目录结构与文件

在myapp目录下依次新建 public 和 src 目录。
在public目录下新建 index.html 文件代码如下:

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8" /><title>Webpack Vue Demo</title></head><body><div id="app"></div></body>
</html>

在src目录下分别新建main.js和App.vue文件。
main.js文件代码如下:

import Vue from 'vue';
import App from './App.vue';Vue.config.productionTip = false;new Vue({render: h => h(App)
}).$mount('#app');

App.vue文件代码如下:

<template><div id="app">Hello Vue & Webpack</div>
</template><script>export default {};
</script>

配置webpack.config.js
在myapp目录下新建 webpack.config.js配置文件,配置内容如下:

const HtmlWebpackPlugin = require('html-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');module.exports = {enter: './src/main.js',resolve: {alias: {vue$: 'vue/dist/vue.esm.js'},extensions: ['*', '.js', '.vue', '.json']},module: {rules: [{test: /\.js$/,exclude: /node_modules/,use: {loader: 'babel-loader'}},{test: /\.vue$/,loader: 'vue-loader'}]},plugins: [new VueLoaderPlugin(),new HtmlWebpackPlugin({template: './public/index.html',filename: 'index.html'})]
};

Vue 的配置文件中关于 Vue 语法的模板需要使用vue-loader来处理。完成上面配置后,执行下npx webpack看下 dist 输出结果。

1.3 webpack配置本地服务器

webpack-dev-server 就是一个 Express 的小型服务器,它是通过 Express 的中间件 webpack-dev-middleware和 Webpack 进行交互的。在开发过程中,如果项目本身就是个 Express 服务器,那么可以使用 webpack-dev-middleware 和 webpack-hot-middleware 两个中间件来实现 HMR 功能。

webpack-dev-server具体操作如下。

安装与启动

webpack-dev-server安装命令如下:

npm i webpack-dev-server

安装成功后,执行以下命令启动本地服务器:

npx webpack-dev-server

执行webpack-dev-server命令之后,它会读取 Webpack 的配置文件(默认是 webpack.config.js)然后将文件打包到内存中(所以看不到dist文件夹的生产,Webpack 会打包到硬盘上),这时候打开 server 的默认地址:localhost:8080就可以看到文件目录或者页面(默认是显示 index.html,没有则显示目录)。

自动刷新

在开发中,我们希望边写代码,边看到代码的执行情况,webpack-dev-server 提供自动刷新页面的功能可以满足我们的需求。webpack-dev-server 支持两种模式的自动刷新页面。

  • iframe模式:页面被放到一个 iframe 内,当发生变化时,会重新加载;
  • inline模式:将 webpack-dev-server 的重载代码添加到产出的 bundle 中。

两种模式都支持模块热替换(Hot Module Replacement)。模块热替换的好处是只替换更新的部分,而不是整个页面都重新加载。
执行以下命令开启自动刷新:

webpack-dev-server --hot --inline

2 Vue CLI脚手架工具

Vue CLI是一个基于 Vue.js 进行快速开发的完整系统,致力于将 Vue 生态中的工具基础标准化。它确保了各种构建工具能够基于智能的默认配置即可平稳衔接,这样就可以使开发者只专注与撰写应用,而不必浪费很多时间去研究项目搭建中配置的问题。

Vue CLI 有以下几个独立的部分。

CLI

CLI (@vue/cli) 是一个全局安装的 npm 包,提供了终端里的 vue 命令。它可以通过 vue create 快速搭建一个新项目,或者直接通过 vue serve 构建原型。

CLI服务

CLI 服务 (@vue/cli-service) 是一个开发环境依赖,属于一个 npm 包,局部安装在每个 @vue/cli 创建的项目中。CLI 服务是构建于 webpack 和 webpack-dev-server 之上的。

CLI插件

CLI 插件是向 Vue 项目提供可选功能的 npm 包,例如 Babel/TypeScript 转译、ESLint 集成、单元测试和 end-to-end 测试等。Vue CLI 插件的名字以 @vue/cli-plugin- (内建插件) 或 vue-cli-plugin- (社区插件) 开头,非常容易使用。

2.1 脚手架安装

Vue CLI 4.x 需要 Node.js v8.9 或更高版本 (推荐 v10 以上)。更新依赖版本命令如下:

npm install -g @vue/cli
# 或者
yarn global add @vue/cli

安装之后,就可以在命令行中访问 vue 命令。还可以通过运行一些简单的 vue 命令来验证它是否安装成功。
例如,可以执行命令来检查其版本,命令如下:

vue --version

如需升级全局的 Vue CLI 包,可以运行以下命令:

npm update -g @vue/cli
# 或者
yarn global upgrade --latest @vue/cli

2.2 使用脚手架创建Vue项目

运行以下命令来创建一个新项目:

# myapp为项目名
vue create myapp

执行上面的命令会被提示选取一个 preset。可以选默认的包含了基本的 Babel + ESLint 设置的 preset,也可以选“手动选择特性”来选取需要的特性,如下图所示。
在这里插入图片描述

默认的设置非常适合快速创建一个新项目的原型,而手动设置则提供了更多的选项,它们是面向生产的项目更加需要的。如果使用了手动选择特性,在操作提示的最后可以选择将已选项保存为一个将来可复用的 preset。
具体的选项操作可以参考下图所示。
在这里插入图片描述

上面的选项执行完成后,会提示如何启动项目,如下图所示。
在这里插入图片描述

根据命令行工具的提示,依次执行下面命令,即可启动项目:

# 进入项目目录
cd myapp
# 启动项目
npm run serve

上面命令执行成功后,会在命令行工具显示项目的IP地址和端口号,如下图所示。

在这里插入图片描述

在Google Chrome浏览器中访问http://localhost:8080打开项目的首页,效果如下图所示。
在这里插入图片描述

4.2.3 项目结构与文件描述
把创建好的项目在Visual Studio Code(以下简称VSCode)开发工具中打开,项目的目录结构如下图所示。
在这里插入图片描述

目录结构解析

vue-cli4.0版本脚手架工具创建的项目结构如下表所示。

目录/文件说明
node_modulesnpm 加载的项目依赖模块
public用于存放静态资源文件,启动本地服务器后,该目录为服务器访问的根目录。目录下存放index.html文件
src这里是我们要开发的目录,基本上要做的事情都在这个目录里。
babel.config.jsbabel相关的配置文件
package.jsonnpm相关的配置文件
package-lock.jsonnpm相关的配置文件,用于锁定依赖包的版本号
README.mdMarkdown格式的项目说明文档

index.html文件

public目录下的index.html文件是项目的静态页面,当前创建的项目为单页面应用(SPA),所以整个项目中只有一个静态的HTML文件,index.html文件代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1.0"><link rel="icon" href="<%= BASE_URL %>favicon.ico"><title><%= htmlWebpackPlugin.options.title %></title></head><body><noscript><strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><!-- built files will be auto injected --></body>
</html>

main.js文件

src为项目的源码文件的管理目录,项目中编写的代码都要放到这个目录下,在该目录下的main.js文件为整个项目的入口文件,关于项目的全局配置都要放到该文件中。
代码如下:

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'Vue.config.productionTip = falsenew Vue({router,store,render: h => h(App)
}).$mount('#app')

App.vue文件

在src目录下还有一个很重要的文件,就是项目的根组件App.vue文件,该文件一般用于项目的一级路由的管理。因为新建的项目中,会对App.vue编写初始化的页面内容,而且这些内容对后期的开发没有价值,所以我们在正式开发前,会对App.vue文件进行修改。
代码如下:

<template><div><router-view/></div>
</template><script>export default {}
</script>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Axure Web端元件库:从Quick UI到500+组件的飞跃

在快速变化的数字世界中&#xff0c;产品设计不仅仅是功能的堆砌&#xff0c;更是用户体验的精心雕琢。原型设计作为产品开发过程中的关键环节&#xff0c;其重要性不言而喻。Axure&#xff0c;作为业界领先的原型设计工具&#xff0c;凭借其强大的交互设计和丰富的功能&#x…

智慧工地视频汇聚管理平台:打造现代化工程管理的全新视界

一、方案背景 科技高速发展的今天&#xff0c;工地施工已发生翻天覆地的变化&#xff0c;传统工地管理模式很容易造成工地管理混乱、安全事故、数据延迟等问题&#xff0c;人力资源的不足也进一步加剧了监管不到位的局面&#xff0c;严重影响了施工进度质量和安全。 视频监控…

外行对自动驾驶汽车的一些想法-2024-

起源 前段时间有关于自动驾驶汽车的讨论&#xff0c;现在热度终于快过去了。 (⊙﹏⊙) 其实&#xff0c;完全不用担心自动驾驶取代人类。 引用 这是一篇24年4月的报道。 上图为引用&#xff0c;可以看到打工人的忙碌。 2023 一个热爱自动驾驶但妥妥外行之人的思考-2023-C…

mac怎样清理photoshop垃圾的方法 ps清理缓存和垃圾 苹果电脑暂存盘已满怎么清理

很多使用过ps&#xff0c;尤其是Adobe全家桶的小伙伴会发现&#xff0c;这些软件占用缓存很多&#xff0c;而且随着使用时间的增长&#xff0c;缓存也会越多&#xff0c;并不会自动清理。那么mac系统怎么清理ps暂存盘呢&#xff1f;mac又该怎么最高效清理磁盘空间呢&#xff1f…

芯片的计算能力由什么决定

芯片的计算能力由什么决定 芯片的计算能力由多个因素决定。 包括但不限于&#xff1a; 架构设计&#xff1a; 芯片的架构设计决定了其计算单元的数量和类型&#xff0c;以及它们之间的连接方式和通信方式。不同的架构可以提供不同的计算能力和性能。处理器速度&#xff1a; 处…

快速安装torch-gpu和Tensorflow-gpu(自用,Ubuntu)

要更详细的教程可以参考Tensorflow PyTorch 安装&#xff08;CPU GPU 版本&#xff09;&#xff0c;这里是有基础之后的快速安装。 一、Pytorch 安装 conda create -n torch_env python3.10.13 conda activate torch_env conda install cudatoolkit11.8 -c nvidia pip ins…

LeetCode_122(买卖股票的最佳时机)

public int maxProfit(int[] prices) {int ans 0;//int prices[] {7,1,5,3,6,4};for(int i1;i<prices.length;i){ansMath.max(0,prices[i]-prices[i-1]);}return ans;}

DevExpress WinForms自动表单布局,创建高度可定制用户体验(二)

使用DevExpress WinForms的表单布局组件可以创建高度可定制的应用程序用户体验&#xff0c;从自动安排UI控件到按比例调整大小&#xff0c;DevExpress布局和数据布局控件都可以让您消除与基于像素表单设计相关的麻烦。 P.S&#xff1a;DevExpress WinForms拥有180组件和UI库&a…

openmv学习笔记(24电赛笔记)

感光元件 openmv采用小孔摄像模式&#xff0c;将图像映射到感光原件上面&#xff0c;来传递图片&#xff0c;通过图片快速的刷新行成视频&#xff0c;在IDE中通过对感光原件的编辑可以控制视频的效果。 重置感光元件到默认状态 import sensor #导入感光元件这个库sensor.res…

IPD推行成功的核心要素(十五)项目管理提升IPD相关项目交付效率和用户体验

研发项目往往包含很多复杂的流程和具体的细节。因此&#xff0c;一套完整且标准的研发项目管理制度和流程对项目的推进至关重要。研发项目管理是成功推动创新和技术发展的关键因素。然而在实际管理中&#xff0c;研发项目管理常常面临着需求不确定、技术风险、人员素质、成本和…

如何在 Windows 上安装并配置 VNC 远程连接树莓派,并结合Cpolar实现公网远程访问

目录 ⛳️推荐 前言 1. 使用 Raspberry Pi Imager 安装 Raspberry Pi OS 2. Windows安装VNC远程树莓派 3. 使用VNC Viewer公网远程访问树莓派 3.1 安装Cpolar步骤 3.2 配置固定的公网地址 3.3 VNC远程连接测试 4. 固定远程连接公网地址 4.1 固定TCP地址测试 ⛳️推荐…

Godot游戏制作 05收集物品

创建新场景&#xff0c;添加Area2D节点&#xff0c;AnimatedSprite2D节点 &#xff0c;CollisionShape2D节点 添加硬币 按F键居中&#xff0c;放大视图。设置动画速度设为10FPS&#xff0c;加载后自动播放&#xff0c;动画循环 碰撞形状设为圆形&#xff0c;修改Area2D节点为Co…

通信原理-思科实验三:无线局域网实验

实验三 无线局域网实验 一&#xff1a;无线局域网基础服务集 实验步骤&#xff1a; 进入物理工作区&#xff0c;导航选择 城市家园; 选择设备 AP0&#xff0c;并分别选择Laptop0、Laptop1放在APO范围外区域 修改笔记本的网卡&#xff0c;从以太网卡切换到无线网卡WPC300N 切…

pmp证书是个什么样的证书?

PMP&#xff08;项目管理专业人士资格认证&#xff09;由美国项目管理协会&#xff08;Project Management Institute&#xff09;发起&#xff0c;在全球200多个国家和地区得到高度认可&#xff0c;PMP是项目管理领域重要的认证之一&#xff0c;受到业内广泛认可。 如果您想成…

C++ set

1. 背景 关联式容器 STL 中的部分容器&#xff0c;比如&#xff1a; vector 、 list 、 deque 、forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身。那什么是关联式容器&#xff1f;它与…

了解高防 IP

一、高防 IP 的基本概念 高防 IP 是指拥有强大防御能力的 IP 地址。它主要通过将攻击流量引流到高防机房进行清洗和过滤&#xff0c;再将正常的流量回注到源站&#xff0c;从而保障源站服务器的稳定运行。 二、高防 IP 的工作原理 当用户的服务器遭受 DDoS 攻击时&#xff0…

医疗器械上市欧美,需要什么样的网络安全相关申报文件?

医疗器械在欧美上市时&#xff0c;需要提交的网络安全相关申报文件主要包括以下几个方面&#xff0c;这些要求基于欧美地区的法律法规和监管机构的指导文件。 一、美国FDA要求 1. 网络安全管理计划 内容&#xff1a;制造商需要提交一份网络安全管理计划&#xff0c;该计划应包含…

基于OSS前端直传的分片上传以及断点续传

一、大文件分片上传 原型 大文件如果直接上传的话由于nginx的限制会导致响应500报错&#xff0c;或者响应时间过长导致响应超时 并且大文件上传有如下缺点 上传时间长: 对于大文件&#xff0c;直接上传可能需要较长时间&#xff0c;特别是在网络速度较慢或不稳定的情况下。这…

亚信安慧AntDB亮相PostgreSQL中国技术大会,获“数据库最佳应用奖”并分享数据库应用实践

7月12日&#xff0c;第13届PostgreSQL中国技术大会在杭州顺利举办&#xff0c;亚信安慧AntDB数据库荣获“数据库最佳应用奖”。大会上&#xff0c;亚信安慧AntDB数据库同事带来《基于AntDB的CRM系统全域数据库替换实践》和《亚信安慧AntDB数据库运维之路》两场精彩演讲&#xf…

STM32H7的LPUART基础和唤醒示例

STM32H7的LPUART基础知识 硬件框图低功耗的高级特性低功耗串口的时钟以及波特率低功耗串口发送时序低功耗串口支持的唤醒方式 LPUART 的全称是 Low power universal synchronous asynchronous receiver transmitter&#xff0c;中文意思是低功耗通用异步收发器&#xff0c;简称…