自学Java后端开发,发现14 微服务电商【乐优商城】实战项目,在介绍完SpringCloud后就要肝前端的基础知识ES6语法和Vue.js

所以本篇博客作为入门Vue练习记录的过程,目的是供自学后端Java遇到Vue使用需求的时候,加强学习一下Vue基本使用的方法。

黑马eesy_15 Vue:02.常用语法

黑马eesy_15 Vue:03.生命周期

黑马eesy_15 Vue:04.Vue案例(ssm环境搭建)

vue常用语法


1、Vue的快速入门
2、Vue的语法
  插值表达式
  事件的绑定
  数据的显示
  逻辑判断和循环输出
3、Vue的生命周期
  8个生命周期的执行点
    4个基本的
    4个特殊的
4、axios的ajax异步请求
  它和jquery的ajax比较相似


01.Vue快速入门

IntelliJ IDEA 2019.2.3

解决maven项目创建过慢的问题

  1. archetypeCatalog
  2.  
  3. internal

在webapp目录下新建一个js目录,把vuejs-2.5.16.js文件复制进去。

为了方便测试代码运行效果,在IDEA中对tomcat部署进行如下设置

demo1:由vue接管id为app的区域

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>快速入门</title>
  6. <script src="js/vuejs-2.5.16.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. {{messsage}}<!--Vue的插值表达式,把data中定义的数据显示到此处-->
  11.  
  12. <!--三元运算符-->
  13. {{ a ? "ok":"no"}}
  14. <br><!--换行-->
  15. {{number*2}}<!--支持数学运算-->
  16. <!--插值表达式不支持
  17. {{var a = 1;}}
  18. {{if(a=10){}}}
  19. -->
  20.  
  21. </div>
  22. </body>
  23. <script>
  24. //view model
  25. //创建vue对象
  26. new Vue({
  27. el:"#app", //由vue接管id为app的区域
  28. data:{
  29. messsage:"Hello Vue!",//注意:此处不要加分号
  30. number:100
  31. }
  32. });
  33. </script>
  34. </html>

07vue的v-on绑定点击事件

demo2

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>v-on:click</title>
  6. <script src="js/vuejs-2.5.16.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. {{message}}<!--Vue的插值表达式,把data中定义的数据显示到此处-->
  11. <button v-on:click="fun1('Vue v-on')">vue的onclick</button>
  12. </div>
  13. </body>
  14. <script>
  15. //view model
  16. new Vue({
  17. el:"#app",//由vue接管id为app的区域
  18. data:{
  19. message:"Hello Vue"
  20. },
  21. methods:{ /*fun1函数的参数来自于,控件调用时函数名后面小括号里的预设值*/ fun1:function (msg) {
  22. alert("hello demo2");
  23. this.message = msg;
  24. }
  25. }
  26. })
  27. </script>
  28. </html>

08vue的v-on键盘事件和阻止事件默认行为

demo3

  1. <!DOCTYPE html>
  2. <html xmlns:v-on="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>v-on:keydown</title>
  6. <script src="js/vuejs-2.5.16.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. Vue:<input type="text" v-on:keydown="fun($event)">
  11. <hr/><!--水平线-->
  12. 传统JS:<input type="text" onkeydown="showKeyCode()"/>
  13. </div>
  14. </body>
  15.  
  16. <script>
  17. //view model
  18. new Vue({
  19. el:"#app",
  20. methods:{
  21. fun:function (event) {
  22. var keyCode = event.keyCode;
  23. if(keyCode<48 || keyCode>57){
  24. alert("keyCode非法,请输入数字。");
  25. //不让键盘的按键输入起作用
  26. event.preventDefault();
  27. }
  28.  
  29. }
  30. }
  31. });
  32.  
  33. //传统js的键盘按下事件
  34. function showKeyCode() {
  35. //event对象和document对象以及windows对象,可以不用定义直接使用
  36. var keyCode = event.keyCode;
  37. if(keyCode<48 || keyCode>57){
  38. alert("keyCode非法,请输入数字。");
  39. //不让键盘的按键输入起作用
  40. event.preventDefault();
  41. }
  42.  
  43. //alert(keyCode);
  44. /*if(event.keyCode == 13){
  45. alert("你按的是回车")
  46. }*/
  47.  
  48. }
  49. </script>
  50. </html>

09vue的v-on鼠标移动事件和阻止事件传播

demo4

  1. <!DOCTYPE html>
  2. <head>
  3. <meta charset="utf-8" />
  4. <title>v-on:mouseover</title>
  5. <style>
  6. #div {
  7. background-color: red;
  8. width: 300px;
  9. height: 300px;
  10. }
  11. </style>
  12. <script src="js/vuejs-2.5.16.js"></script>
  13. </head>
  14.  
  15. <body>
  16. <div id="app">
  17. <div v-on:mouseover="fun1" id="div">
  18. <textarea v-on:mouseover="fun2($event)">这是一个文件域</textarea>
  19. </div>
  20. <!--传统的js方式-->
  21. <!--<div onmouseover="divmouseover()" id="div">
  22. <textarea onmouseover="textareamouseover()">这是一个文件域</textarea>
  23. </div>-->
  24. </div>
  25. </body>
  26. <script>
  27. //view model
  28. /**@事件名称 就是 v-on:事件 的简写方式
  29. * @mouseover = v-on:mouseover
  30. */
  31. new Vue({
  32. el:app,
  33. methods:{
  34. fun1:function () {
  35. alert("鼠标悬停在div上了");
  36. },
  37. fun2:function (event) {
  38. alert("鼠标悬停在textarea上了");
  39. event.stopPropagation();
  40. }
  41. }
  42. });
  43.  
  44. //传统的js方式
  45. function divmouseover() {
  46. alert("鼠标移动到了div上了");
  47. }
  48. function textareamouseover() {
  49. alert("鼠标移动到了textarea上了");
  50. event.stopPropagation();
  51. }
  52. </script>
  53. </html>

10vue中的事件修饰符

demo05

  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5. <meta charset="utf-8" />
  6. <title>v-on:事件修饰符</title>
  7.  
  8. <script src="js/vuejs-2.5.16.js"></script>
  9. </head>
  10.  
  11. <body>
  12. <div id="app">
  13. <form action="http://www.baidu.com" method="get" @submit.prevent >
  14. <input type="submit" value="submit提交">
  15. </form>
  16. <!--<form action="http://www.baidu.com" method="get" onsubmit="return checkForm()">
  17. <input type="submit" value="submit提交">
  18. </form>-->
  19. </div>
  20. </body>
  21. <script>
  22. //view model
  23. new Vue({
  24. el:"#app",
  25.  
  26. })
  27.  
  28. //传统js方式
  29. function checkForm() {
  30. //表单验证必须有一个明确的boolean类型返回值
  31. //在应用验证方法时必须加上return 方法名称()
  32. //阻止事件的默认行为
  33. return false;
  34. }
  35.  
  36. </script>
  37.  
  38. </html>

11vue中的按键修饰符

demo6

  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5. <meta charset="utf-8" />
  6. <title>v-on:按键修饰符</title>
  7.  
  8. <script src="js/vuejs-2.5.16.js"></script>
  9. </head>
  10.  
  11. <body>
  12. <div id="app">
  13. Vue的按键修饰符:<input type="text" v-on:keydown.enter="fun1('你按的是Enter键')">
  14. </div>
  15. </body>
  16. <script>
  17. //view model
  18. new Vue({
  19. el:"#app",
  20. methods:{
  21. fun1:function (msg) {
  22. alert(msg);
  23. }
  24. }
  25. });
  26.  
  27. </script>
  28.  
  29. </html>

12 Vue中v-text和v-html以及v-bind的使用

demo7

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>v-text与v-html</title>
  6. <script src="js/vuejs-2.5.16.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <div id="div1"></div>
  11. <div id="div2"></div>
  12. </div>
  13. </body>
  14. <script>
  15. //view model
  16.  
  17. // 传统js的innerText和innerHTML
  18. // 这里还是个匿名函数
  19. window.onload = function () {
  20. document.getElementById("div1").innerHTML="<h1>Hello</h1>";
  21. document.getElementById("div2").innerText="<h1>Hello</h1>";
  22. }
  23. </script>
  24. </html>

显示效果:

使用Vue的语法实现

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>v-text与v-html</title>
  6. <script src="js/vuejs-2.5.16.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <div v-html="message"></div>
  11. <div v-text="message"></div>
  12. </div>
  13. </body>
  14. <script>
  15. //view model
  16. new Vue({
  17. el:"#app",
  18. data:{
  19. message:"<h1>Hello Vue</h1>"
  20. }
  21. });
  22. </script>
  23. </html>

demo8

v-bind: 给html标签的属性,设置data:变量的值

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>v-text与v-html在v-bind上的使用</title>
  6. <script src="js/vuejs-2.5.16.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <font size="5" v-bind:color="ys1">传智播客</font>
  11. <br><!--换行符-->
  12. <font size="5" v-bind:color="ys2">黑马程序员</font>
  13. </div>
  14. </body>
  15. <script>
  16. //view model
  17. //Vue的插值表达式不能用于html标签的属性取值
  18. //可以通过使用v-bind:给html标签的属性设置变量的值
  19. new Vue({
  20. el:"#app",
  21. data:{
  22. ys1:"red",
  23. ys2:"blue"
  24. }
  25. })
  26. </script>
  27. </html>

13vue中的v-model的使用

demo9

把form表单中的<input>标签的 value属性替换成 v-model

  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5. <meta charset="utf-8" />
  6. <title>v-model</title>
  7. <script src="js/vuejs-2.5.16.js"></script>
  8. </head>
  9.  
  10. <body>
  11. <div id="app">
  12. <form action="" method="post" >
  13. 用户名:<input type="text" name="username" v-model="user.username"><br/>
  14. 密码:<input type="text" name="password" v-model="user.password"><br/>
  15. <!--用户名:<input type="text" name="username" value="user.username"><br/>
  16. 密码:<input type="text" name="password" value="user.password"><br/>-->
  17. </form>
  18. </div>
  19. </body>
  20.  
  21. <script>
  22. //view model
  23. new Vue({
  24. el:"#app",
  25. data:{
  26. user:{
  27. username:"test",
  28. password:"root"
  29. }
  30. }
  31. })
  32.  
  33. </script>
  34.  
  35. </html>

14vue中的v-for的遍历使用

v-for遍历数组

demo10

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>v-for遍历数组</title>
  6. <script src="js/vuejs-2.5.16.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <ul>
  11. <li v-for="(item,index) in arr ">{{item}}={{index}}</li>
  12. </ul>
  13. </div>
  14. </body>
  15. <script>
  16. //view model
  17. new Vue({
  18. el:"#app",
  19. data:{
  20. arr:[1,2,3,4,5,6]
  21. }
  22. })
  23. </script>
  24. </html>

v-for遍历对象 (重点)

demo11

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>v-for遍历对象</title>
  6. <script src="js/vuejs-2.5.16.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <ul>
  11.  
  12. <li v-for="(value,key) in product ">{{key}}==={{value}}</li>
  13. <!-- <li v-for="(key,value) in product ">{{value}}==={{key}}</li>-->
  14. </ul>
  15. </div>
  16. </body>
  17. <script>
  18. //view model
  19. new Vue({
  20. el:"#app",
  21. data:{
  22. product:{
  23. id:1,
  24. name:"笔记本电脑",
  25. price:5000
  26. }
  27. }
  28. })
  29. </script>
  30. </html>

demo 12

  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5. <meta charset="utf-8" />
  6. <title>v-for遍历对象demo12</title>
  7. <script src="js/vuejs-2.5.16.js"></script>
  8. </head>
  9.  
  10. <body>
  11. <div id="app">
  12. <table border="1">
  13. <tr>
  14. <td>索引</td>
  15. <td>编号</td>
  16. <td>名称</td>
  17. <td>价格</td>
  18. </tr>
  19. <tr v-for="(product,index) in products">
  20. <td>{{index}} </td>
  21. <td>{{product.id}} </td>
  22. <td>{{product.name}} </td>
  23. <td>{{product.price}} </td>
  24. </tr>
  25. </table>
  26. </div>
  27. </body>
  28. <script>
  29. //view model
  30. new Vue({
  31. el:"#app",
  32. data:{
  33. products:[
  34. {id:1, name:"笔记本电脑",price:5000},
  35. {id:2, name:"手机", price:2000},
  36. {id:3, name:"电视", price:4000}
  37. ]
  38. }
  39. })
  40. </script>
  41.  
  42. </html>

15vue中的v-if与v-show

demo13

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>v-if与v-show</title>
  6. <script src="js/vuejs-2.5.16.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <span v-if="flag">hello itcast</span><br/>
  11. <span v-show="flag">hello ithemai</span><br/>
  12. <button v-on:click="fun">切换</button>
  13. </div>
  14. </body>
  15. <script>
  16. //view model
  17. new Vue({
  18. el:"#app",
  19. data:{
  20. flag:true //model
  21. },
  22. methods:{
  23. fun:function(){
  24. //!实现布尔值取反
  25. this.flag=!this.flag;
  26. }
  27. }
  28. });
  29.  
  30. </script>
  31. </html>

======================

end

黑马eesy_15 Vue:常用语法的更多相关文章

  1. 黑马eesy_15 Vue:04.综合案例(前端Vue实现)

    黑马eesy_15 Vue:02.常用语法 黑马eesy_15 Vue:03.生命周期 黑马eesy_15 Vue:04.Vue案例(ssm环境搭建) 黑马eesy_15 Vue:04.综合案例(前端 ...

  2. 黑马eesy_15 Vue:04.Vue案例(ssm环境搭建)

    黑马eesy_15 Vue:02.常用语法 黑马eesy_15 Vue:03.生命周期 黑马eesy_15 Vue:04.Vue案例(ssm环境搭建) 黑马eesy_15 Vue:04.综合案例(前端 ...

  3. 黑马eesy_15 Vue:03.生命周期与ajax异步请求

    黑马eesy_15 Vue:02.常用语法 黑马eesy_15 Vue:03.生命周期 黑马eesy_15 Vue:04.Vue案例(ssm环境搭建) vue的生命周期与ajax异步请求 1.Vue的 ...

  4. Vue常用语法及命令

    1,Vue常用语法 vue常用语法之变量的定义 // 1,变量相关 // 变量的提升 var username = "雪雪"; var username ; console.log ...

  5. Vue常用语法

    一.模板语法 1.双大括号表达式 [语法:] {{exp}} 用于向页面输入数据,即页面显示数据. [举例:] <!doctype html> <html lang="en ...

  6. vue 常用语法糖

    //来自 https://www.cnblogs.com/lhl66/p/8021730.html 侵删 el:element 需要获取的元素,一定是HTML中的根容器元素 data:用于数据的存储 ...

  7. vue(2)—— vue简单语法运用,常用指令集

    按照前面的文章:vue(1)——node.js安装使用,利用npm安装vue  安装完vue之后,就可以使用vue了 vue vue简介 前面安装好vue之后,确实还没有对vue进行介绍,首先,官网: ...

  8. vue学习(一)ES6常用语法

    1 ES6常用语法 1.1 变量提升 例① # 变量提升 <div id="app"> </div> <script> console.log( ...

  9. Vue常用经典开源项目汇总参考-海量

    Vue常用经典开源项目汇总参考-海量 Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的 ...

随机推荐

  1. ACM蒟蒻防bug专用 ( •̀ ω •́ )✧

    /*********************************************** * _ooOoo_ * * o8888888o * * 88" . "88 * * ...

  2. 201909-2 小明种苹果(续) Java

    思路: 待补充 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc ...

  3. bestphp's revenge

    0x00 知识点 1利用PHP原生类来构造POP链 本题没有可以利用的类,没有可以利用的类就找不到POP链所以只能考虑PHP原生类 我们先来解释一下什么是POP链 POP:面向属性编程 在二进制利用时 ...

  4. LeetCode刷题笔记(1-9)

    LeetCode1-9 本文更多是作为一个习题笔记,没有太多讲解 1.两数之和 题目请点击链接 ↑ 最先想到暴力解法,直接双循环,但是这样复杂度为n平方 public int[] twoSum(int ...

  5. arp攻击 (可查看同一局域网他人手机照片)

    国家法律一定要遵守,知识要用在对的地方. 本贴只为了和大家交流学习,请勿用在其他地方,损害任何人的利益. 今天我,来说一下arp攻击的原理和教程 原理什么的还是自行百度好,因为专业的说明是严谨而又经得 ...

  6. go语言小练习——给定英语文章统计单词数量

    给定一篇英语文章,要求统计出所有单词的个数,并按一定次序输出.思路是利用go语言的map类型,以每个单词作为关键字存储数量信息,代码实现如下: package main import ( " ...

  7. hook键盘钩子 带dll

    library Key; uses SysUtils, Classes, HookKey_Unit in 'HookKey_Unit.pas'; {$R *.res} exports HookOn,H ...

  8. SQL基础教程(第2版)第1章 数据库和SQL:练习题

    CREATE TABLE Addressbook ( regist_no INTEGER NOT NULL, name ) NOT NULL, address ) NOT NULL, tel_no ) ...

  9. 2019年春PAT甲级考试

    这次考试不是很理想,一道题目没能做完. 自己原因差不多三条: 1.自己实力不够,准备时间也有点仓促,自己没能做到每道题目都有清晰的思路. 2.考试的心理素质不行,因为设备原因东奔西跑浪费了挺多时间,自 ...

  10. os发展史

    01. 操作系统的发展历史 1.1 Unix 1965 年之前的时候,电脑并不像现在一样普遍,它可不是一般人能碰的起的,除非是军事或者学院的研究机构,而且当时大型主机至多能提供30台终端(30个键盘. ...