全干工程师的自我修养---vue第一部分

article/2025/6/23 18:48:33

全干工程师的自我修养—vue第一部分

1、环境搭建

主要是搭建nodejs环境,设置淘宝源及安装cnpm,在之前的文章中有提到过,就不再赘述。

接下来全局安装vue脚手架:

cnpm install vue-cli -g

这样就可以成功安装了,安装完成后,我们就可以尽情的食用了。

也可以使用在线加速cdn:

<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

2、初始化一个项目

我们这里安装的是vue2.x,所以使用一下命令

vue init webpack 

最好不适用es lint6,所以前面4个都回车,后面填no.

这样cd进目录,使用

cnpm run dev

打开localhost:8080就可以看到我们的第一个vue hello,world项目了。

3、从爬行到飙车

3.1声明式渲染

Vue 实例生命周期

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统:如下

<div id="app">{{ message }}
</div>
var app = new Vue({el: '#app',data: {message: 'Hello Vue!'}
})

输出: hello,vue

3.2 数据绑定 v-bind

<div :title="title">鼠标绑定事件</div>
  data() {return {msg: "你好vue",title: "这是一个title!",message: '',todos: [{ text: '学习 JavaScript' },{ text: '学习 Vue' }, { text: '整个牛项目' }],formData: 'username',}},

鼠标放在上面时,会显示: 这是一个title! 这就是v-bind,简写方式为 :

3.3事件绑定 v-on

 <div id="app-1"><p>{{msg}}</p><button v-on:click="reverseMessage">反转消息</button></div>
//methods里面reverseMessage(){this.msg = this.msg.split('').reverse().join('');},

点击反转消息按钮就会显示: euv好你 ,这就是v-on,简写为@

3.4数据双向绑定v-model

    <div id="app-6"><p>message : {{message}}</p><input type="text" v-model="message" name="message" id="message"></div>

数据同步更新

3.5v-for

<div><ul><li v-for="item in todos">{{item.text}}</li></ul>
</div>

显示todos内容

3.6 v-if

<p v-if="seen">现在你看到我了</p>

这里,v-if 指令将根据表达式 seen 的值的真假来插入/移除 <p> 元素。

3.7 其他一些修饰符

v-html
v-on的修饰符
.stop - 调用 event.stopPropagation()。
.prevent - 调用 event.preventDefault()。
.capture - 添加事件侦听器时使用 capture 模式。
.self - 只当事件是从侦听器绑定的元素本身触发时才触发回调。
.{keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调。
.native - 监听组件根元素的原生事件。
.once - 只触发一次回调。
.left - (2.2.0) 只当点击鼠标左键时触发。
.right - (2.2.0) 只当点击鼠标右键时触发。
.middle - (2.2.0) 只当点击鼠标中键时触发。
.passive - (2.3.0) 以 { passive: true } 模式添加侦听器

3.8ref操作dom

<div id="app-5"><input type="text"  ref="userInfo"><div id="box" ref="box">我是一个box</div><button  @click="getInputValue()">获取input value</button></div>//methods里// ref操作dom节点getInputValue(){alert(this.$refs.userInfo.value);this.$refs.box.style.background= 'red';}

ref指定对象,在方法里通过this.$refs.对象来获取对象值。

3.9方法传值

  <div id="app-7"><button @click="requestData()">请求数据</button><ul><li v-for="item in list">{{item}}</li></ul></div>//datalist: []//methodsrequestData(){for(var i=0;i<10;i++){this.list.push(i);}}

点击按钮,就会显示0-9的列表

3.10小结–todolist

第一步====需求: todolist的增添和删除

<template><div>//表单<input type="text" v-model="todolist" placeholder="请输入todo list" class="inputText"><button @click="pushData()" class="btn">+</button>//打印to'do'list<ul><li v-for="(item,key) in list">{{item}}  ----- <button @click="del(key)">删除</button></li></ul></div>
</template><script>
export default {name: 'helloworld',data() {return {todolist: '',list: []}},methods: {//添加元素操作pushData(){this.list.push(this.todolist);this.todolist = ''},//删除元素操作  splice是js数组操作的方法可以去看一下,这里的意思表示从key开始删除第一个,即key代表的值,如果是splice(1,3,'wiinfud')表示从第一个开始删除3个,并添加一个‘wiidfd'del(key){this.list.splice(key,1)}},
}
</script>
//样式
<style>.inputText{border-radius: 20px;border: solid 1px gray;padding: 20px 10px;display: inline;}.btn{background: skyblue;border: 2px red solid;padding: 20px 10px;display: inline;}
</style>

第二部====需求:可以点击来更改状态

<template><div><input type="text" v-model="todolist" placeholder="请输入todo list" class="inputText"><button @click="pushData()" class="btn">+</button><h2>进行中</h2><ul><li v-for="(item,key) in list" v-if="!item.checked"><input type="checkbox" name="" id="" v-model="item.checked">{{item.title}}  ----- <button @click="del(key)">删除</button></li></ul><br><hr><h2>已完成</h2><ul><li v-for="(item,key) in list" v-if="item.checked"><input type="checkbox" name="" id="" v-model="item.checked">{{item.title}}  ----- <button @click="del(key)">删除</button></li></ul></div>
</template><script>
export default {name: 'helloworld',data() {return {todolist: '',checked: false,list: [{title: 'vue',checked: true},{title: 'nodejs',checked: false}]}},methods: {pushData(){this.list.push({title: this.todolist,checked: this.checked});this.todolist = ''},del(key){this.list.splice(key,1)}},
}
</script><style>.inputText{border-radius: 20px;border: solid 1px gray;padding: 20px 10px;display: inline;}.btn{background: skyblue;border: 2px red solid;padding: 20px 10px;display: inline;}
</style>

3.11todolist升级

需求:保存状态,使用enter点击事件

需要使用到html5的storage技术

<template><div><input type="text" v-model="todolist" placeholder="请输入todo list" class="inputText"><button @click="pushData()" class="btn">+</button><h2>进行中</h2><ul><li v-for="(item,key) in list" v-if="!item.checked"><input type="checkbox" name="" id="" v-model="item.checked" @change="saveList()">{{item.title}}  ----- <button @click="del(key)">删除</button></li></ul><br><hr><h2>已完成</h2><ul><li v-for="(item,key) in list" v-if="item.checked"><input type="checkbox" name="" id="" v-model="item.checked" @change="saveList()">{{item.title}}  ----- <button @click="del(key)">删除</button></li></ul></div>
</template><script>
export default {name: 'helloworld',data() {return {todolist: '',checked: false,list: [{title: 'vue',checked: true},{title: 'nodejs',checked: false}]}},methods: {pushData(){this.list.push({title: this.todolist,checked: this.checked});this.todolist = ''localStorage.setItem('list',JSON.stringify(this.list))},del(key){this.list.splice(key,1);localStorage.setItem('list',JSON.stringify(this.list))},saveList(){localStorage.setItem('list',JSON.stringify(this.list))}},mounted() {var list = JSON.parse(localStorage.getItem('list'))if(list){this.list = list;}},
}
</script><style>.inputText{border-radius: 20px;border: solid 1px gray;padding: 20px 10px;display: inline;}.btn{background: skyblue;border: 2px red solid;padding: 20px 10px;display: inline;}
</style>

这里可以将storage封装成一个模块,暴露出来引用就行。

更多详情

更多详情请访问: juntech


http://chatgpt.dhexx.cn/article/CWcTT0nP.shtml

相关文章

从业两年时间,我被一个女前端鄙视了!

学测试一定要找准方向&#xff0c;避免做无用功&#xff0c;可以看看现在的测试行业市场行情&#xff1a;测试行业现状分析及测试人员能力标准 早在四年前在深圳打拼的日子&#xff0c;第一家企业我就被一个女前端深深上了一课&#xff01; 看似很平常的几句话&#xff0c;其实…

职场摸爬滚打的卑微软件测试工!外包干了三年后,我废了...

去年国庆&#xff0c;我分享了一次一位阿里朋友的技术生涯&#xff0c;大家反响爆蓬&#xff0c;感觉十分有意思&#xff0c;今天我来分享一下我另一位朋友的真实经历&#xff0c;是不是很想听&#xff1f; 没错&#xff0c;我这位朋友是曾经外包公司的测试开发&#xff0c;而…

从哪一刻开始,我成了资深工程师

“ 我成了资深工程师&#xff01;” 当说这句话时&#xff0c;我们可能同时表达了两层含义&#xff1a;我在能力素质上是一位资深工程师了&#xff1b;我的 Title 更新为资深工程师了。 这两者之间有着必然联系。虽然 Title 的更新是一瞬间的事儿&#xff0c;但在其背后&…

一名测试开发工程师的内心自白,被裁员之前,没得到任何风声,措手不及......

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结 前言 一个码农&#xff08;测试开发&#xff09;的自白 小…

前端小白奋斗史07

em 倾斜标签 ins 下划线标签 alter 替换文本 title 提示文本 target 目标窗口弹出方式 _blank _self 锚点链接 快速定位页面位置 特殊标签 空格 &#xff06;nbsp 你不是胖 &#xff1c; &#xff06;it &#xff1e; &gt element语法 父子记关系标签 ul&#xff1…

学艺不精,总是掉坑!前后端分离历险记

Spring Boot Vue 这一对技术栈目前看来可以说是非常的火热&#xff0c;关于 Spring Boot 松哥已经写过多篇教程&#xff0c;如&#xff1a; 40 篇原创干货&#xff0c;带你进入 Spring Boot 殿堂&#xff01; 前后端分离的文章也写过好几篇了&#xff0c;例如&#xff1a; 一个…

测试4年裸辞失业,面试17k的测试岗被按在地上摩擦,结局让我崩溃大哭...

作为IT行业的大热岗位——软件测试&#xff0c;只要你付出了&#xff0c;就会有回报。说它作为IT热门岗位之一是完全不虚的。可能很多人回说软件测试是吃青春饭的&#xff0c;但放眼望去&#xff0c;哪个工作不是这样的呢&#xff1f;会有哪家公司愿意养一些闲人呢&#xff1f;…

一名【合格】前端工程师的自检清单,劝退指南 >_<

到现在为止&#xff0c;前端工程师已经成为研发体系中的重要岗位之一。可是&#xff0c;与此相对的是&#xff0c;我发现极少或者几乎没有大学的计算机专业愿意开设前端课程&#xff0c;更没有系统性的教学方案出现。大部分前端工程师的知识&#xff0c;其实都是来自于实践和工…

测试4年裸辞失业,面试17k的测试岗被按在地上摩擦,结局让我崩溃大哭....

作为IT行业的大热岗位——软件测试&#xff0c;只要你付出了&#xff0c;就会有回报。说它作为IT热门岗位之一是完全不虚的。可能很多人回说软件测试是吃青春饭的&#xff0c;但放眼望去&#xff0c;哪个工作不是这样的呢&#xff1f;会有哪家公司愿意养一些闲人呢&#xff1f;…

Linux文件导入gitee仓库中

文章目录 零.前言1.在gitee中建立仓库2.向Linux系统中导入仓库3..gitignore4.总结 零.前言 本文将介绍如何将Linux中的文件存入gitee的仓库中&#xff0c;由于github时常登不上去&#xff0c;所以国内推荐gitee。 1.在gitee中建立仓库 首先我们先注册一账号&#xff0c;这里…

年少成名的我并没有放弃自己,谁敢说她\他文章比我写的好?!,不服来战!

大家镇定一下情绪&#xff0c;文章要开始了。 不择手段是人杰&#xff0c;不改初衷是英雄&#xff01; 年前读了老罗的这本书—— 《一个理想主义者的奋斗&#xff0c;The Adventures of an Idealist》回想起了我与新东方的故事 我与新东方的故事&#xff0c;大砥开始于高二…

小黑抱紧沛奇老师课程的大腿,继续学习git的日常积累:沛奇老师git笔记(git命令与分支)

课程链接 https://www.bilibili.com/video/BV1Ud4y1k715?p4&vd_source0b1383084f626b5cf37be3e82e883106 git入门 进入要管理的目录git init 初始化,即:让git帮助我们管理当前文件夹git status 检测当前文件目录下文件的状态三种状态变化 红色:新增的文件/修改了老文件…

后端开发——Flask框架从入门到入坟(终章)

前言 前面已经将Flask框架的内容基本梳理完了&#xff0c;在这篇文章中荔枝会将Flask的部署上云的步骤跟大家分享一下&#xff0c;其实也是基于宝塔页面来进行配置的啦哈哈哈。荔枝也会将环境配置命令和数据库迁移步骤分享出来&#xff0c;下面就由荔枝把具体的操作梳理出来吧哈…

数字电路逻辑设计_第三版_微课版_第五章思考题与练习题(附答案)

1. 触发器具有哪些基本特征? 答&#xff1a; 触发器的基本特征&#xff1a; &#xff08;1&#xff09;有两个稳态&#xff0c;可分别表示二进制数码0和1无外触发时可维持稳态&#xff1b; &#xff08;2&#xff09;外触发下&#xff0c;两个稳态可相互转换&#xff08;称翻转…

数电基础复习(一)

电信号&#xff1a; 模拟电信号&#xff1a;电压或电流的幅值随时间连续变化数字电信号&#xff1a;电压或电流在幅值和时间上都是离散的&#xff08;可以是多值逻辑&#xff0c;一般采用二值逻辑&#xff09; 主要参数&#xff1a; 幅值&#xff1a;高电平的电压值上升时间…

数电设计-八路抢答器

1 设计要求 设计一个能支持八路抢答的智力竞赛抢答器&#xff1b;主持人按下开始抢答的按键后&#xff0c;有短暂的报警声提示抢答人员抢答开始且指示灯亮表示抢答进行中&#xff1b;在开始抢答后数码管显示30秒倒计时&#xff1b;有抢答人员按下抢答键后&#xff0c;在数码管…

模电/数电考核试题

目录&#xff1a; 西安交通大学17年3月课程考试《模拟电子技术》考核试题 西安交通大学17年3月课程考试《数字电子技术》考核试题 附录 -------------------------------------------------------------------------------------------- 西安交通大学17年3月课程考试《模拟…

[答案解析]华工数电实验:简易交通灯控制电路的设计

题目&#xff1a; 答案&#xff1a; 工程文件下载&#xff1a;https://github.com/BlademasterQAQ/A-simple-traffic-signal-lamp-in-digital-electronic-technology 用3个JK触发器实现的3位二进制计数器电路&#xff1a; 仿真结果&#xff1a;&#xff08;此为上升沿触发时的仿…