当前位置: 首页 > news >正文

vue脚手架的基础搭建过程

MVVM架构

Vue框架底层设计遵循MVVM架构。

Model层(M)模型层(业务逻辑层)

View层(V)视图层 主管UI

ViewModel层(VM)

将项目代码划分清晰的层次结构后,非常有利于后期代码功能维护。如果需要修改ui,则只需要修改view层代码;如果需要修改业务逻辑,则只需要修改model层代码。

基于脚手架的环境开发vue项目

开发vue项目的方式主要有两种:

  1. 基于vue.js:在html中引入vue.js,让vue.js管理页面的div#app元素。

  2. 基于脚手架环境:通过vue脚手架环境可以方便的创建一个通用的vue项目框架模板,在此基础之上开发vue向更加便捷。适合工程化开发。

vue脚手架工具:VueCLIVite

VueCLI提供了简单的创建项目包、vue项目开发模式。需要安装VueCLI

npm config get registry  # 查看npm源
npm set registry https://registry.npmmirror.com  # 设置国内npm镜像源
​
npm  install  -g  @vue/cli

VueCLI项目很大,文件很多,大多数都在node_modules中,所以以后传代码不会带着node_modules,大家下载了项目后由于缺少依赖模块,项目跑不起来的。如果需要运行项目,则应该在项目目录下执行命令:npm install。将会默认读取package.json,下载所需要的依赖包,就可以正常跑项目了。npm run serve

脚手架的运行过程: 当脚手架启动时,将会打开 public/index.html ,并且在该网页中运行 main.js ,将会创建 Vue 对象,通过 Vue 对象来管理 index.html 中的 #app 内容的显示。初始化状态下,默认将 App.vue 组件中的内容渲染到 #app 中,从而看到页面效果。

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

VueCLI项目中,所有的资源都会显示在div#app中。 在此过程中就需要实现根据不同的请求资源路径,显示不同的页面内容。这个功能由VueRouter脚手架的路由系统来管理。

脚手架路由系统(VueRouter)的设计与应用

平时在开发项目的过程中,需要访问不同的路径来看到不同的页面内容,在脚手架项目中,由VueRouter来管理项目的路由系统。 实现:访问不同的路由地址,看到不同的页面。

案例:写一个页面:首页,该页面只有首页两个字。访问:http://localhost:8080/index时,看到该页面。

实现思路:

  1. 先准备好一个vue组件:views/Index.vue。写好内容。

  2. 手动配置路由,使得当访问:/index时,看到该组件。

  3. 测试路由地址即可。http://localhost:8080/index

案例:写个登录页面:账号密码两个输入框,一个提交按钮。要求访问地址:

http://localhost:8080/login 时,看到该登录页面。

案例:写个注册页面:账号、密码、确认密码、手机号,一个提交按钮。要求访问地址:

http://localhost:8080/register时,看到该注册页面。

Vue文件的语法

在脚手架项目中,每一个vue文件都成为是一个组件。一个组件封装了页面中的局部内容(包括局部内容的html结构、局部内容的css样式、局部内容的js功能)。这样就需要研究一下.vue文件的语法。

.vue文件的基础结构
<template><div></div>
</template>
​
<script>export default {}
</script>
​
<style lang="scss" scoped>
​
</style>

template部分用于定义当前组件的页面结构。

注意:template中的内容有且仅有一个根元素。

script部分用于定义当前组件的js脚本。

注意:可以在script中通过data来定义响应式变量,通过methods定义方法。

style部分用于定义当前组件的css样式。

在style标签中可以添加scoped属性,一旦style标签上有scoped属性,则在此style段中定义的样式,仅仅针对当前组件的生效(原理是当前组件的每一个元素都会生成一个属性,然后vue将在style中定义的选择器改为使用属性选择器,仅仅选择当前组件内的元素)。如果没有scoped属性,则样式一旦加载,全局生效。

Vue的常用指令

  1. v-on 绑定事件

  2. v-bind 动态绑定属性

  3. v-show 设置元素显示或隐藏 display:none

  4. v-if v-else-if v-else 判断元素是否输出

  5. v-html v-pre v-text

  6. v-for

案例:编写一个组件页面:views/Directive.vue 当访问:/directive时,看到它。

v-for指令的用法

v-for指令用于重复输出当前元素。

案例:写一个新的组件页面:For.vue 当访问: /for时看到它。

场景1

遍历字符串数组输出每一个列表项元素:

data: {nav: ['京东超市','京东家电','秒杀','拍卖','京东生鲜','PLUS会员']
}
<ul><li v-for="item in nav">{{item}}</li>
</ul>

上述写法,类似于:

for(let i=0; i<nav.length; i++){let item = nav[i]输出  `<li> ${item} </li>`
}
场景2

遍历对象数组输出每一个列表项元素:

data: {movies: [{id:1, name:'交换余生', showingon:'2021-10-10', duration:124},{id:2, name:'杀手', showingon:'2022-10-09', duration:114},{id:3, name:'功夫', showingon:'2023-1-10', duration:194},{id:4, name:'功夫熊猫', showingon:'2011-05-10', duration:141}]
}
<div><div v-for="item in movies" :key="item.id">ID:{{item.id}}  &nbsp;&nbsp;|&nbsp;&nbsp;名称:{{item.name}} &nbsp;&nbsp;|&nbsp;&nbsp;上映时间:{{item.showingon}} &nbsp;&nbsp;|&nbsp;&nbsp;时长:{{item.duration}}分钟</div>
</div>
拓展1

在使用v-for遍历输出数组数据的同时,引用数组的下标:

<div v-for="(item,i) in movies" :key="item.id">..{{i}} 下标
</div>
拓展2

纯粹的按照数量重复输出元素:

<div v-for="item in 100" :key="item">内容</div>
:key的作用

v-for指令一般都需要配一个v-bind:key(简写 :key)来为每一个列表项设置一个唯一标识符(简单理解为每一个item一个名字)。目的是为了提高列表更新时的DOM渲染性能。如果列表中已经包含很多列表项了,后续由于列表数据的变化需要重新渲染列表时,将会通过:key属性来检测当前需要渲染的列表项是否已经渲染过(比较列表项的key在原始列表中是否已经存在),如果已经渲染过,就不会重新创建DOM了。

那么一般将什么设置为:key的值?

<div v-for="(item,i) in list" :key="item.id"></div>  id是唯一属性
<div v-for="(item,i) in list" :key="i"></div>  下标 但不建议

:key的数据类型只能是number和string,不能是对象。同一个列表中的列表项的key不能重复,否则控制台报错。

相关文章:

vue脚手架的基础搭建过程

MVVM架构 Vue框架底层设计遵循MVVM架构。 Model层&#xff08;M&#xff09;模型层&#xff08;业务逻辑层&#xff09; View层&#xff08;V&#xff09;视图层 主管UI ViewModel层&#xff08;VM&#xff09; 将项目代码划分清晰的层次结构后&#xff0c;非常有利于后期代…...

函数与数组

一.函数 1、函数的作用 定义较为复杂的但是需要重复使用的内容&#xff0c;以便再次使用&#xff0c;可以直接调用&#xff0c;节约时间&#xff0c;提高效率。 语句块定义成函数约等于别名&#xff0c;定义函数&#xff0c;再引用函数。 封装的可重复利用的具有特定功能的…...

2023年【安全生产监管人员】考试题及安全生产监管人员找解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全生产监管人员考试题参考答案及安全生产监管人员考试试题解析是安全生产模拟考试一点通题库老师及安全生产监管人员操作证已考过的学员汇总&#xff0c;相对有效帮助安全生产监管人员找解析学员顺利通过考试。 1、…...

K8S(一)

一、kubernetes 概述 1、kubernetes 基本介绍 kubernetes&#xff0c;简称 K8s&#xff0c;是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源的&#xff0c;用于管理云平台中多个主机上的容器化的应用&#xff0c;Kubernetes 的目标是让部署容器化的 应用简单并且高效…...

Linux快速显示文件行号并跳转

有时候&#xff0c;想要在线上直接查看日志文件&#xff0c;搜索到关键词后&#xff0c;如果一直按n找下去&#xff0c;很麻烦&#xff0c;我们可以先显示出行号&#xff0c;确定好我们要找内容对应的行号&#xff0c;直接跳转过去。 esc进入命令模式&#xff0c;输入:set nu命…...

异步爬取+多线程+redis构建一个运转丝滑且免费http-ip代理池 (二)

继上一章: CSDN 本次需要做的是进行有效ip的验证! 我们知道,从网页上爬取上千上万个ip之后,因为是免费的代理,所以,对这上千上万个ip进行验证有效性就需要考虑效率上的问题了; 而验证ip有效性的唯一办法,就是通过对网络发起请求;如果state200,就是有效,否则就是无效; 而上…...

HugeGraph安装与使用

1、HugeGraph-Server与HugeGraph-Hubble下载 HugeGraph官方地址&#xff1a;https://hugegraph.apache.org/ 环境为&#xff1a;linux 官网是有模块版本对应关系,尽量下载较新版本,hubble1.5.0之前是studio功能比较少。官网已经下架server,其他模块下载也比较慢。可以在网上找…...

计算机端口

前言 计算机端口&#xff08;Port&#xff09;是一种用于在计算机网络中标识特定服务或应用程序的机制。 端口是一个数字&#xff0c;范围从0到65535&#xff0c;用于将网络通信分配给不同的应用程序或服务。 在 Internet 协议套件&#xff08;TCP/IP&#xff09;中&#xff0…...

激发创新,助力研究:CogVLM,强大且开源的视觉语言模型亮相

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…...

centos 6.10 安装 perl 5.14

下载安装包 运行下面命令&#xff1a; wget http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz也可以直接下载好安装包&#xff0c;再拷到虚拟机 安装 执行下面命令 tar -xvzf perl-5.14.2.tar.gz #解压安装包 cd perl-5.14.2 ./Configure -des -Dprefix/usr/local/perl ma…...

Elasticsearch:FMA 风格的向量相似度计算

作者&#xff1a;Chris Hegarty 在 Lucene 9.7.0 中&#xff0c;我们添加了利用 SIMD 指令执行向量相似性计算的数据并行化的支持。 现在&#xff0c;我们通过使用融合乘加 (Fused Mulitply-Add - FMA) 进一步推动这一点。 什么是 FMA 乘法和加法是一种常见的运算&#xff0c;…...

思维模型 等待效应

本系列文章 主要是 分享 思维模型 &#xff0c;涉及各个领域&#xff0c;重在提升认知。越是等待&#xff0c;越是焦虑。 1 等待效应的应用 1.1 等待效应在管理中的应用 西南航空公司是一家美国的航空公司&#xff0c;它在管理中运用了等待效应。西南航空公司鼓励员工在工作中…...

Linux下使用宏定义判断系统架构和系统类型

文章目录 查看编译器当前支持的宏定义查找指定的宏不同架构不同系统 附录-编译器内部常用的一些宏定义宏定义实际应用使用宏定义判断系统架构使用宏定义判断系统类型 一般情况下在linux下做C/C方面的开发不需要太关注系统架构&#xff0c;当然如果涉及到不同架构下的适配问题&a…...

Python---把函数的返回值作为另外一个函数的参数

def test1():return 50def test2(num):print(num)# 1. 保存函数test1的返回值 result test1()# 2.将函数返回值所在变量作为参数传递到test2函数 test2(result) # 50...

231123 刷题日报-动态规划

今天主要看了DP&#xff0c;前几天频繁遇到DP打击有点大。。 1. 0-1背包问题 要点&#xff1a; a. 三部曲&#xff1a; 1. 状态和选择 状态&#xff1a;物品序号、背包容量 选择&#xff1a;放、不放 2. dp数组定义、base case dp[i][w] 对于前i个物品&#xff0c;当前背包…...

微信小程序前端环境搭建

搭建微信小程序前端环境 申请小程序测试账号 访问路径 使用微信扫描二维码进行申请&#xff0c;申请成功之后&#xff0c;进入界面&#xff0c;获取小程序ID(AppID)和秘钥(AppSecret) 安装微信web开发者工具 访问路径 选择稳定开发的版本 需要在小程序的设置中将默认关闭…...

【Qt一坑】qt编译出现“常量中有换行符”

在qt编译过程中出现“常量中有换行符”&#xff0c;原因有以下几点&#xff08;qt版本5.14.2&#xff09;&#xff1a; 1.中文编码格式问题&#xff0c;将UTF-8编码格式改成 UTF-8 BOM。 或者使用QtCreator 进行如下设置&#xff08;找到Qt的左边列表里的项目&#xff0c;下的…...

C++每日选择题—Day1

第一题 以下C代码会输出什么? #include <iostream> using namespace std; class A { public:A() {}~A() {} private:static int a; }; int main() {cout << sizeof(A) << endl;return 0; } A&#xff1a;0 B&#xff1a;1 C&#xff1a;4 D&#xff1a;8 答…...

【实用】mysql配置 及将线上数据导入本地 问题解决及记录

[ERR] 1292 - Incorrect datetime value: ‘0000-00-0000:00:00‘ for column ‘BIRTH_DATE‘ at row 1 此问题是mysql当前配置不支持日期为空&#xff0c;或者为‘0000-00-0000:00:00‘得情况 1、直接在数据库执行 # 修改全局 set global.sql_mode ONLY_FULL_GROUP_BY,STR…...

如何下载OpenJDK及其源码

如果想下载 OpenJDK&#xff0c;存在以下几种办法&#xff1a; 最简单的办法是去 OpenJDK 官网&#xff0c;这里能下载 JDK9 及其以上的版本&#xff0c;还有 JDK 源码所在的 github 地址。 第二种方法是使用 IDEA 下载&#xff0c;位置在 File->Project Structure->SD…...

Element UI Tree懒加载回显踩坑记:default-checked-keys为何总多展开一层?

Element UI Tree懒加载回显深度解析&#xff1a;从原理到实战的完整解决方案 1. 问题现象与背景分析 在VueElement UI的后台管理系统开发中&#xff0c;el-tree组件因其强大的树形展示能力而广受欢迎。但当遇到懒加载模式下的数据回显需求时&#xff0c;不少开发者都会陷入一个…...

CLI-Gym:基于环境反演的CLI任务自动化生成技术

1. CLI-Gym&#xff1a;环境反演驱动的CLI任务自动化生成框架在软件开发领域&#xff0c;命令行界面&#xff08;CLI&#xff09;是开发者与系统交互的核心工具。传统CLI任务开发面临两大痛点&#xff1a;一是环境密集型任务&#xff08;如依赖冲突解决、系统配置修复&#xff…...

NVIDIA Nemotron-CC-Math数据集提升LLM数学能力训练效果

1. 项目背景与核心价值NVIDIA最新发布的Nemotron-CC-Math数据集正在改变大语言模型&#xff08;LLM&#xff09;数学能力训练的格局。这个专门针对数学领域预训练的高质量语料库&#xff0c;包含了从Common Crawl网页数据中精选的数学相关内容&#xff0c;经过严格清洗和标准化…...

Code Claw:用手机遥控VSCode,实现移动AI编程

1. 项目概述&#xff1a;当手机成为你的AI编程遥控器作为一名在开发一线摸爬滚打了十多年的程序员&#xff0c;我经历过无数次这样的场景&#xff1a;灵感在通勤路上、在咖啡厅、甚至在睡前突然闪现&#xff0c;但手边没有电脑&#xff0c;只能眼睁睁看着它溜走。或者&#xff…...

字体放大,导航栏按钮间隙变小

屏幕总宽度&#xff08;固定不变&#xff09; |<-------------------------------------------------->|旧方案&#xff08;字体变大时崩&#xff09;&#xff1a; | margin |[back(变大)]| margin |[home(变大)]| margin |←固定px→ ←固定px→ …...

ARM架构EL2虚拟定时器寄存器原理与应用详解

1. ARM架构下EL2虚拟定时器寄存器深度解析在ARMv8-A架构的虚拟化环境中&#xff0c;定时器管理是Hypervisor实现精确调度的核心机制之一。作为系统开发者&#xff0c;理解EL2特权级的虚拟定时器寄存器工作原理&#xff0c;对于构建高效可靠的虚拟化平台至关重要。本文将深入剖析…...

非官方套件也能起飞:手把手教你给Jetson Orin NX模块刷上Jetpack 6.2,解锁Super性能

非官方套件性能飞跃指南&#xff1a;Jetson Orin NX模块刷写Jetpack 6.2全流程解析 当大多数开发者还在使用官方DevKit套件时&#xff0c;有一群极客已经将目光投向了更具性价比的独立模块方案。Jetson Orin NX核心模块以其出色的计算性能和灵活的集成特性&#xff0c;正在成为…...

PvZ Toolkit:内存注入技术与游戏逆向工程的完美融合

PvZ Toolkit&#xff1a;内存注入技术与游戏逆向工程的完美融合 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 当我们回顾经典游戏《植物大战僵尸》时&#xff0c;总会想起那些充满策略性的关卡设…...

避坑指南:在OpenHarmony上玩转Modbus RTU,RS-485接线和libmodbus配置那些事儿

OpenHarmony工业互联实战&#xff1a;RS-485硬件连接与libmodbus配置避坑手册 当温控器的数据突然跳变&#xff0c;当电表读数出现异常抖动&#xff0c;很多工程师的第一反应往往是检查代码逻辑——但真正的陷阱可能藏在那些被忽略的物理细节中。在工业现场&#xff0c;RS-485总…...

技术决策的底层逻辑:数据、直觉与博弈

——软件测试从业者的专业视角 在软件研发的复杂棋局中&#xff0c;技术决策——无论是架构选型、工具链搭建&#xff0c;还是缺陷修复的优先级、自动化策略的制定——其质量直接关乎项目的成败与团队的效率。对于软件测试从业者而言&#xff0c;理解技术决策背后的底层逻辑&a…...