vue脚手架的基础搭建过程
MVVM架构
Vue框架底层设计遵循MVVM架构。
Model层(M)模型层(业务逻辑层)
View层(V)视图层 主管UI
ViewModel层(VM)
将项目代码划分清晰的层次结构后,非常有利于后期代码功能维护。如果需要修改ui,则只需要修改view层代码;如果需要修改业务逻辑,则只需要修改model层代码。
基于脚手架的环境开发vue项目
开发vue项目的方式主要有两种:
-
基于vue.js:在html中引入vue.js,让vue.js管理页面的
div#app元素。 -
基于脚手架环境:通过vue脚手架环境可以方便的创建一个通用的vue项目框架模板,在此基础之上开发vue向更加便捷。适合工程化开发。
vue脚手架工具:VueCLI、Vite。
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时,看到该页面。
实现思路:
-
先准备好一个vue组件:
views/Index.vue。写好内容。 -
手动配置路由,使得当访问:/index时,看到该组件。
-
测试路由地址即可。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的常用指令
-
v-on 绑定事件
-
v-bind 动态绑定属性
-
v-show 设置元素显示或隐藏 display:none
-
v-if v-else-if v-else 判断元素是否输出
-
v-html v-pre v-text
-
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}} | 名称:{{item.name}} | 上映时间:{{item.showingon}} | 时长:{{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层(M)模型层(业务逻辑层) View层(V)视图层 主管UI ViewModel层(VM) 将项目代码划分清晰的层次结构后,非常有利于后期代…...
函数与数组
一.函数 1、函数的作用 定义较为复杂的但是需要重复使用的内容,以便再次使用,可以直接调用,节约时间,提高效率。 语句块定义成函数约等于别名,定义函数,再引用函数。 封装的可重复利用的具有特定功能的…...
2023年【安全生产监管人员】考试题及安全生产监管人员找解析
题库来源:安全生产模拟考试一点通公众号小程序 安全生产监管人员考试题参考答案及安全生产监管人员考试试题解析是安全生产模拟考试一点通题库老师及安全生产监管人员操作证已考过的学员汇总,相对有效帮助安全生产监管人员找解析学员顺利通过考试。 1、…...
K8S(一)
一、kubernetes 概述 1、kubernetes 基本介绍 kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的 应用简单并且高效…...
Linux快速显示文件行号并跳转
有时候,想要在线上直接查看日志文件,搜索到关键词后,如果一直按n找下去,很麻烦,我们可以先显示出行号,确定好我们要找内容对应的行号,直接跳转过去。 esc进入命令模式,输入:set nu命…...
异步爬取+多线程+redis构建一个运转丝滑且免费http-ip代理池 (二)
继上一章: CSDN 本次需要做的是进行有效ip的验证! 我们知道,从网页上爬取上千上万个ip之后,因为是免费的代理,所以,对这上千上万个ip进行验证有效性就需要考虑效率上的问题了; 而验证ip有效性的唯一办法,就是通过对网络发起请求;如果state200,就是有效,否则就是无效; 而上…...
HugeGraph安装与使用
1、HugeGraph-Server与HugeGraph-Hubble下载 HugeGraph官方地址:https://hugegraph.apache.org/ 环境为:linux 官网是有模块版本对应关系,尽量下载较新版本,hubble1.5.0之前是studio功能比较少。官网已经下架server,其他模块下载也比较慢。可以在网上找…...
计算机端口
前言 计算机端口(Port)是一种用于在计算机网络中标识特定服务或应用程序的机制。 端口是一个数字,范围从0到65535,用于将网络通信分配给不同的应用程序或服务。 在 Internet 协议套件(TCP/IP)中࿰…...
激发创新,助力研究:CogVLM,强大且开源的视觉语言模型亮相
项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实…...
centos 6.10 安装 perl 5.14
下载安装包 运行下面命令: wget http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz也可以直接下载好安装包,再拷到虚拟机 安装 执行下面命令 tar -xvzf perl-5.14.2.tar.gz #解压安装包 cd perl-5.14.2 ./Configure -des -Dprefix/usr/local/perl ma…...
Elasticsearch:FMA 风格的向量相似度计算
作者:Chris Hegarty 在 Lucene 9.7.0 中,我们添加了利用 SIMD 指令执行向量相似性计算的数据并行化的支持。 现在,我们通过使用融合乘加 (Fused Mulitply-Add - FMA) 进一步推动这一点。 什么是 FMA 乘法和加法是一种常见的运算,…...
思维模型 等待效应
本系列文章 主要是 分享 思维模型 ,涉及各个领域,重在提升认知。越是等待,越是焦虑。 1 等待效应的应用 1.1 等待效应在管理中的应用 西南航空公司是一家美国的航空公司,它在管理中运用了等待效应。西南航空公司鼓励员工在工作中…...
Linux下使用宏定义判断系统架构和系统类型
文章目录 查看编译器当前支持的宏定义查找指定的宏不同架构不同系统 附录-编译器内部常用的一些宏定义宏定义实际应用使用宏定义判断系统架构使用宏定义判断系统类型 一般情况下在linux下做C/C方面的开发不需要太关注系统架构,当然如果涉及到不同架构下的适配问题&a…...
Python---把函数的返回值作为另外一个函数的参数
def test1():return 50def test2(num):print(num)# 1. 保存函数test1的返回值 result test1()# 2.将函数返回值所在变量作为参数传递到test2函数 test2(result) # 50...
231123 刷题日报-动态规划
今天主要看了DP,前几天频繁遇到DP打击有点大。。 1. 0-1背包问题 要点: a. 三部曲: 1. 状态和选择 状态:物品序号、背包容量 选择:放、不放 2. dp数组定义、base case dp[i][w] 对于前i个物品,当前背包…...
微信小程序前端环境搭建
搭建微信小程序前端环境 申请小程序测试账号 访问路径 使用微信扫描二维码进行申请,申请成功之后,进入界面,获取小程序ID(AppID)和秘钥(AppSecret) 安装微信web开发者工具 访问路径 选择稳定开发的版本 需要在小程序的设置中将默认关闭…...
【Qt一坑】qt编译出现“常量中有换行符”
在qt编译过程中出现“常量中有换行符”,原因有以下几点(qt版本5.14.2): 1.中文编码格式问题,将UTF-8编码格式改成 UTF-8 BOM。 或者使用QtCreator 进行如下设置(找到Qt的左边列表里的项目,下的…...
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:0 B:1 C:4 D:8 答…...
【实用】mysql配置 及将线上数据导入本地 问题解决及记录
[ERR] 1292 - Incorrect datetime value: ‘0000-00-0000:00:00‘ for column ‘BIRTH_DATE‘ at row 1 此问题是mysql当前配置不支持日期为空,或者为‘0000-00-0000:00:00‘得情况 1、直接在数据库执行 # 修改全局 set global.sql_mode ONLY_FULL_GROUP_BY,STR…...
如何下载OpenJDK及其源码
如果想下载 OpenJDK,存在以下几种办法: 最简单的办法是去 OpenJDK 官网,这里能下载 JDK9 及其以上的版本,还有 JDK 源码所在的 github 地址。 第二种方法是使用 IDEA 下载,位置在 File->Project Structure->SD…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
