当前位置:   article > 正文

Vue必备知识点(简单+快速上手Vue)_学vue必备哪些基础

学vue必备哪些基础

文章目录


前言

Vue前端人员需看完整知识点体系,本知识点只是作为Vue入门,还有主要学习后端的,想了解Vue的,能上手简单的运用Vue的人群。如想要做前端开发,还需要学的更细致些。

基本介绍Vue:

1.Vue.js目前最火的的一个前端框架,三大主流前端框架之一。
2.Vue.js是一套构建用户界面的框架(一套完整的解决方案,对项目侵入性大,中途需要跟换框架则需要重构整个项目),只关注视图层,易上手,有配套的第三方类库。
3.提高开发效率,帮助减少不必要的dom操作;双向数据绑定,通过框架提供的指令,前端只需要关注业务逻辑,不再关心dom如何渲染。

一、Vue基础语法

        1.初学Vue

                Vue中hello案例的练习

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>Vue基础</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. {{ message }}
  10. </div>
  11. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  12. <script>
  13. var app=new Vue({
  14. el: "#app",
  15. data:{
  16. message: "你好Vue!"
  17. }
  18. })
  19. </script>
  20. </body>
  21. </html>

第一步:引入Vue需要的资源:

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

 第二步:写一个div

  1. <div id="app">
  2. {{ message }}
  3. </div>

第三步: 在script标签中new一个Vue,在里面写相应的内容

  1. <script>
  2. var app=new Vue({
  3. el: "#app",
  4. data:{
  5. message: "你好Vue!"
  6. }
  7. })
  8. </script>

效果图: 

         2.初学Vue中的el:挂载点

挂载点说的就是如下图所示的红色框内的东西。

el:后面“ ”中放的是选择标签的id、class或标签。一般情况下都是用id选择器

如图:

 代码及运行结果:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>el:挂载点</title>
  6. </head>
  7. <body>
  8. <!-- el外部不会被执行 -->
  9. {{ message }}
  10. <div id="app" class="app">
  11. {{ message }}
  12. <p>{{ message }}</p>
  13. </div>
  14. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js" type="text/javascript" charset="utf-8"></script>
  15. <script type="text/javascript">
  16. var app=new Vue({
  17. //三种选择器都可以用,但一般用id选择器。
  18. el:"#app",//id选择器
  19. // el:".app",类选择器
  20. // el:"div",标签选择器
  21. data:{
  22. message:"小白"
  23. }
  24. })
  25. </script>
  26. </body>
  27. </html>

         3.初学Vue中的data:数据对象

 data:后面的{ }里的所有数据对象。

data:中可以存储字符串、对象、数组等。

对象获取的方法:对象名.  。

数组获取方法:数组名[index].

如图:

 代码及运行结果

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>data:数据对象</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. {{ message }}
  10. <h2>{{ school.class }} {{ school.student }}</h2>
  11. <ul>
  12. <li>{{ arr[0] }}</li>
  13. <li>{{ arr[1] }}</li>
  14. <li>{{ arr[2] }}</li>
  15. <li>{{ arr[3] }}</li>
  16. </ul>
  17. </div>
  18. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  19. <script type="text/javascript">
  20. var app=new Vue({
  21. el:"#app",
  22. data:{
  23. message:"你好,小黑!",
  24. school:{
  25. class:"1班",
  26. student:"张三"
  27. },
  28. arr:["数据库","java","ssm","springboot"]
  29. }
  30. })
  31. </script>
  32. </body>
  33. </html>

二、本地运用

        1.v-text指令学习

v-text的用法:

相同点:<h2 v-text="message"></h2> 相当于  <h2>{{ message }}</h2>  

不同点:<h2 v-text="message"></h2>这样写获取message值时会覆盖h2中原有的内容。而后者不会覆盖。

如图:

这里的第二个方框中是差值表达式只是简单的“+”号举例子,在复杂的运用中我们还可以写语句等。

运行结果上图,代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>v-text学习</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <h2 v-text="message">覆盖了标签内的值</h2>
  10. <h2>{{ info }}</h2>
  11. <h2>差值表达式:</h2>
  12. <h2 v-text="message+'学习'">覆盖了标签内的值</h2>
  13. <h2>{{ info }}学习</h2>
  14. </div>
  15. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js" type="text/javascript" charset="utf-8"></script>
  16. <script type="text/javascript">
  17. var app=new Vue({
  18. el:"#app",
  19. data:{
  20. message:"Vue1",
  21. info:"Vue2"
  22. }
  23. })
  24. </script>
  25. </body>
  26. </html>

      2. v-html指令学习

v-html和v-text差不多,只不过v-text是直接把内容输出,不会进行转义,而v-html是可以进行转义的。举个例子说明v-html的用法:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>v-html指令</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <!-- 解析标签 -->
  10. <p v-html="message"></p>
  11. <!-- 只是文本 -->
  12. <p v-text="message"></p>
  13. </div>
  14. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  15. <script type="text/javascript">
  16. var app=new Vue({
  17. el:"#app",
  18. data:{
  19. message:"<a href='/'>黑马</a>"
  20. }
  21. })
  22. </script>
  23. </body>
  24. </html>

注意观察红色框内的不同: 

 运行结果,从运行结果我们可看出不同的地方:

        3.v-on指令学习

 v-on:后面是加事件的,如v-on:click,就是点击事件。当点击时,就会调用v-on:click=“函数名”中函数名用methods:里面定义该方法进行相应的操作。

v-on:可以简写为@符号代替:如@click=“函数名”。

如图所示:

 this是可以直接指向data数据对象中的数据,可以用this.food对data数据对象中的数据进行操作。

具体大家可以复制代码运行感受。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>v-on指令(绑定事件)</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <input type="button" value="v-on指令" v-on:click="doIt()"/>
  10. <input type="button" value="v-on简写" @click="doIt()"/>
  11. <input type="button" value="双击事件" @dblclick="doIt()"/>
  12. <h2 @click="changeFood()">{{ food }}</h2>
  13. </div>
  14. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  15. <script type="text/javascript">
  16. var app=new Vue({
  17. el:"#app",
  18. data:{
  19. food:"西红柿炒鸡蛋"
  20. },
  21. methods:{
  22. doIt:function(){
  23. alert("做It");
  24. },
  25. changeFood:function(){
  26. // 内部用this调用
  27. this.food+="好好吃!"
  28. }
  29. }
  30. })
  31. </script>
  32. </body>
  33. </html>

运行结果:

        4.计数器小练习 

练习不做讲解,都是上述知识点的总结,看不懂的可以多去学学上述知识点。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>计数器练习</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <button type="button" @click="sub">-</button>
  10. <span>{{ num }}</span>
  11. <button type="button" @click="add">+</button>
  12. </div>
  13. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  14. <script type="text/javascript">
  15. var app=new Vue({
  16. el:"#app",
  17. data:{
  18. num:0,
  19. },
  20. methods:{
  21. sub:function(){
  22. if(this.num>0){
  23. this.num--;
  24. }else{
  25. alert("被点了,已经是最小值!");
  26. }
  27. },
  28. add:function(){
  29. if(this.num<10){
  30. this.num++;
  31. }else{
  32. alert("被点了,已经是最大值!");
  33. }
  34. }
  35. }
  36. })
  37. </script>
  38. </body>
  39. </html>

运行结果: 

         5.v-show指令学习

 v-show指令的作用是:根据真假切换元素的显示状态。

原理是修改元素的display,实现显示隐藏。

指令后面的内容,最终都会解析为布尔值。

值为true元素显示,值为false元素隐藏。

执行过程如图所示,v-show="可以填表达式",下面因为age=17,就不会显示第二张图:

 代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>v-show指令</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <input type="button" value="点我改变状态" @click="change()"/>
  10. <img v-show="isShow" src="../img/wzj.jpg" >
  11. <img v-show="age>=18" src="../img/wzj.jpg" >
  12. </div>
  13. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  14. <script type="text/javascript">
  15. var app=new Vue({
  16. el:"#app",
  17. data:{
  18. isShow:false,
  19. age:17
  20. },
  21. methods:{
  22. change:function(){
  23. // 取反
  24. this.isShow=!this.isShow;
  25. }
  26. }
  27. })
  28. </script>
  29. </body>
  30. </html>

运行结果,点击按钮图片进行隐藏,再次点击图片会显示:

         6.v-if指令学习

 v-if指令的作用是:根据表达式的真假切换元素的显示状态。

本质是通过操纵dom元素来切换显示状态。

表达式的值为true,元素存在dom树中,反之则从dom树中移除。

v-if和v-show一般在操作较多的时候会用v-show,因为v-show只是样式隐藏,标签还在。如果操作只一次,一般都会用到v-if。将标签移除。

代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>v-if指令</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <input type="button" value="v-if指令" @click="flag()"/>
  10. <p v-if="isShow">v-if指令显示效果</p>
  11. <!-- 表达式 -->
  12. <p v-if="age>=18">age18才能显示</p>
  13. </div>
  14. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  15. <script type="text/javascript">
  16. var app=new Vue({
  17. el:"#app",
  18. data:{
  19. isShow:false,
  20. // 表达式也可以
  21. age:17
  22. },
  23. methods:{
  24. flag:function(){
  25. this.isShow=!this.isShow;
  26. }
  27. }
  28. })
  29. </script>
  30. </body>
  31. </html>

运行截图,点击一次显示出的:

         7.v-bind指令学习

用来操作属性,如src

v-bind指令的作用是:为元素绑定属性。

完整写法是v-bind:属性名。

简写的话可以直接省略v-bind,只保留:属性名。

需要动态的增删class使用对象的方式。

代码解释:

 完整代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>v-bind指令</title>
  6. <style type="text/css">
  7. .active{
  8. border: 5px solid salmon ;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <div id="app">
  14. <img v-bind:src="imgSrc" >
  15. <!-- 可简写 -->
  16. <img :src="imgSrc" :title="imgtitle+'!!!'" :class="{active:is}" @click="isactive">
  17. </div>
  18. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  19. <script type="text/javascript">
  20. var app=new Vue({
  21. el:"#app",
  22. data:{
  23. imgSrc:"../img/wzj.jpg",
  24. imgtitle:"四大美女",
  25. is:true
  26. },
  27. methods:{
  28. isactive:function(){
  29. this.is=!this.is;
  30. }
  31. }
  32. })
  33. </script>
  34. </body>
  35. </html>

运行结果:

         8.图片转换练习

 列表数据使用数组保存。

v-bind指令可以设置元素的属性,比如src.

v-show和v-if都可以切换元素的显示状态,频繁切换用v-show.

都是以前的知识点,代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>图片切换练习</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <img :src="imgArr[index]" ><br>
  10. <input type="button"value="上一张" v-show="index!=0" @click="prev()"/>
  11. <input type="button"value="下一张" v-show="index<imgArr.length-1" @click="next()"/>
  12. </div>
  13. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  14. <script type="text/javascript">
  15. var app=new Vue({
  16. el:"#app",
  17. data:{
  18. imgArr:["../img/wzj.jpg","../img/dc.jpg","../img/xx.jpg","../img/yyh.jpg"],
  19. index:0
  20. },
  21. methods:{
  22. prev:function(){
  23. this.index--;
  24. },
  25. next:function(){
  26. this.index++;
  27. }
  28. }
  29. })
  30. </script>
  31. </body>
  32. </html>

效果图,点击按钮就会切换到下一张图片:

         9.v-for指令

v-for指令的作用是:根据数据生成列表结构。

数组经常和v-for结合使用。

 语法是(i,index) in 数据。

i和index可以结合其他的指令一起使用。

数组长度的更新会同步到页面上,是响应式的。

代码运行流程:

 代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>v-for指令</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <input type="button" value="添加数据" @click="add"/>
  10. <input type="button" value="删除数据" @click="remove"/>
  11. <ul>
  12. <li v-for="(i,index) in arr">
  13. {{index+1}}想去的城市:{{ i }}
  14. </li>
  15. </ul>
  16. <h2 v-for="j in arr1">{{j.name}}</h2>
  17. </div>
  18. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  19. <script type="text/javascript">
  20. var app=new Vue({
  21. el:"#app",
  22. data:{
  23. arr:["北京","上海","广州","深圳"],
  24. // 数组存储对象
  25. arr1:[
  26. {name:"张三"},{name:"李四"}
  27. ]
  28. },
  29. methods:{
  30. add:function(){
  31. //增加
  32. this.arr1.push({name:"王五"});
  33. },
  34. remove:function(){
  35. //删除
  36. this.arr1.shift();
  37. }
  38. }
  39. })
  40. </script>
  41. </body>
  42. </html>

效果图展示:

         10.v-on指令(补充)

事件绑定的方法写成函数调用的形式,可以传入自定义参数。

定义方法时需要定义形参来接收传入的实参 。

事件的后面跟上 .修饰符 可以对事件进行限制。

.enter可以限制触发的按键为回车。

修饰符有很多,具体用到在解释。

 代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>v-on指令(补充)</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <input type="button" value="问候语" @click="doIt('张三')"/>
  10. <input type="text" value="文本" @keyup.enter="sayHi"/>
  11. </div>
  12. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  13. <script type="text/javascript">
  14. var app=new Vue({
  15. el:"#app",
  16. methods:{
  17. doIt:function(f1){
  18. console.log("你好:"+f1);
  19. },
  20. sayHi:function(){
  21. alert("写完了?");
  22. }
  23. }
  24. })
  25. </script>
  26. </body>
  27. </html>

 运行效果图:

         11.v-model指令学习

双向数据绑定

v-model指令的作用是便捷的设置和获取表单元素的值。

绑定的数据会和表单元素相关联

绑定的数据      双向      表单的值

 代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>v-model指令</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <input type="button" value="点击修改" @click="setM()"/>
  10. <input type="text" v-model="message" @keyup.enter="getM()"/>
  11. <h2>{{ message }}</h2>
  12. </div>
  13. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  14. <script type="text/javascript">
  15. var app=new Vue({
  16. el:"#app",
  17. data:{
  18. message:"好好学习,多敲代码"
  19. },
  20. methods:{
  21. getM:function(){
  22. alert(this.message);
  23. },
  24. setM:function(){
  25. this.message="多敲代码,好学习";
  26. }
  27. }
  28. })
  29. </script>
  30. </body>
  31. </html>

运行结果,点击修改按钮修改message的值看其他表单上的message值是否发生变化:

表单到绑定的数据:

  绑定的数据到表单:

         12.记事本综合练习案例

记事本功能介绍:

1.新增:增加需要记录的事情。

2.删除:点击删除按钮删除该事情。

3.统计:统计所有事情显示到记事本上。

4.清空:点击清空按钮清空所有事情。

5.隐藏:清空后隐藏不必要的框框。

注意:一下案例都没有css修饰,我们只练习vue指令的用法,自己在练习时有时间可自行去修饰样式。

12.1新增

1.生成列表结构(v-for数组)

2.获取用户输入(v-model)

3.回车,新增数据(v-on  .enter 添加数据)

 代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>记事本</title>
  6. <style type="text/css">
  7. .no{
  8. list-style: none;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <h2>记事本</h2>
  14. <div id="app">
  15. <input type="text" v-model="inputValue" @keyup.enter="add()"/>
  16. <ul class="no">
  17. <li v-for="(item,index) in list">
  18. {{index+1}}-----{{item}}
  19. </li>
  20. </ul>
  21. </div>
  22. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  23. <script type="text/javascript">
  24. var app=new Vue({
  25. el:"#app",
  26. data:{
  27. list:["吃饭","睡觉","打代码"],
  28. inputValue:"好好学习"
  29. },
  30. methods:{
  31. add:function(){
  32. this.list.push(this.inputValue);
  33. }
  34. }
  35. })
  36. </script>
  37. </body>
  38. </html>

效果图:

12.2删除

1.数据改变,和数据绑定的元素同步改变

2.事件的自定义参数

3.splice删除数组元素的使用

 效果图,点击x就会删掉,并且同步更新循环:

12.3统计

基于数据的开发方式

 效果图,不管是删除还是添加,只要数组的长度发生变化值就会变:

12.4清空

本质上就是删除数组中的所有元素。

 效果图,点击clear后的:

12.5隐藏

没有数据时,隐藏元素(v-show  v-if  数组非空

效果图,可以看到下方的计数条和清楚按钮没有了:

 12.6全部代码及总结

知识点总结:

1.列表结构可以通过v-for指令结合数据生成。

2.v-on结合事件修饰符可以对事件进行限制,比如 .enter

3.v-on在绑定事件时可以传递自定义参数

4.通过v-model可以快速的设置和获取表单元素的值

5.基于数据的开发方式

全部代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>记事本</title>
  6. <style type="text/css">
  7. .no{
  8. list-style: none;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <h2>记事本</h2>
  14. <div id="app">
  15. <input type="text" v-model="inputValue" @keyup.enter="add()"/>
  16. <ul class="no">
  17. <li v-for="(item,index) in list">
  18. {{index+1}}-----{{item}}------
  19. <button type="button" @click="remove(index)">x</button>
  20. </li>
  21. </ul>
  22. <p v-show="list.length!=0">
  23. <span v-text="list.length"></span> <span> items left ------</span>
  24. <button type="button" @click="clear()">Clear</button>
  25. </p>
  26. </div>
  27. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  28. <script type="text/javascript">
  29. var app=new Vue({
  30. el:"#app",
  31. data:{
  32. list:["吃饭","睡觉","打代码"],
  33. inputValue:"好好学习"
  34. },
  35. methods:{
  36. add:function(){
  37. this.list.push(this.inputValue);
  38. },
  39. remove:function(index){
  40. // 删除index索引值,删1个值
  41. this.list.splice(index,1);
  42. },
  43. clear:function(){
  44. this.list=[];
  45. }
  46. }
  47. })
  48. </script>
  49. </body>
  50. </html>

三、网络运用

 1.axios基本使用

axios必须先导入才可以使用

使用getpost方法即可发送对应的请求

then方法中的回调函数会在请求成功或失败时触发

通过回调函数的形参可以获取响应内容,或错误信息

官方文档:Axios 中文文档 | Axios 中文网 | Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.jsAxios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js。Axios 使用简单,包尺寸小且提供了易于扩展的接口。https://www.axios-http.cn/

 代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>axios基本使用</title>
  6. </head>
  7. <body>
  8. <button type="button" class="get">get方式</button>
  9. <button type="button" class="post">post方式</button>
  10. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  11. <script type="text/javascript">
  12. /*
  13. 接口1:音乐信息
  14. 请求地址:https://autumnfish.cn/comment/music
  15. 请求方式:get
  16. 请求参数:id=186016&limit=1
  17. 相应内容:音乐信息
  18. */
  19. document.querySelector(".get").onclick=function(){
  20. axios.get("https://autumnfish.cn/comment/music?id=186016&limit=1")
  21. .then(function(response){
  22. console.log(response);
  23. },function(err){
  24. console.log(err);
  25. })
  26. }
  27. /*
  28. 接口2:电台信息
  29. 请求地址:https://autumnfish.cn/dj/program
  30. 请求方式:post
  31. 请求参数:rid
  32. 相应内容:电台信息
  33. */
  34. document.querySelector(".post").onclick=function(){
  35. axios.post("https://autumnfish.cn/dj/program",{rid:12})
  36. .then(function(response){
  37. console.log(response);
  38. },function(err){
  39. console.log(err);
  40. })
  41. }
  42. </script>
  43. </body>
  44. </html>

get响应回的数据效果图:

 

post响应回的数据效果图:

2.axios+Vue

axios回调函数中的this已经改变,无法访问到data中数据

this保存起来,回调函数中直接使用保存的this即可

 代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>axios+vue</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <button type="button" @click="getmusic()">音乐信息</button>
  10. <p>{{music}}</p>
  11. </div>
  12. <!-- vue -->
  13. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  14. <!-- axios -->
  15. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  16. <script type="text/javascript">
  17. /*
  18. 接口1:音乐信息
  19. 请求地址:https://autumnfish.cn/comment/music
  20. 请求方式:get
  21. 请求参数:id=186016&limit=1
  22. 相应内容:音乐信息
  23. */
  24. var app=new Vue({
  25. el:"#app",
  26. data:{
  27. music:"这里有音乐信息"
  28. },
  29. methods:{
  30. getmusic:function(){
  31. var that=this;
  32. axios.get("https://autumnfish.cn/comment/music?id=186016&limit=1")
  33. .then(function(response){
  34. that.music=response.data.comments;
  35. console.log(response);
  36. },function(err){
  37. })
  38. }
  39. }
  40. })
  41. </script>
  42. </body>
  43. </html>

 效果图:

3.综合练习案例

电台查询案例:

应用的逻辑代码建议和页面分离,使用单独的js文件编写。

axios回调函数中this指向改变了,需要额外的保存一份。

服务器返回的数据比较复杂时,获取的时候需要注意层次结构。

3.1回车查询

1.按下回车(v-on  .enter)

2.查询数据(axios 接口  v-model)

3.渲染数据(v-for  数组  that)

html:

效果图:

  

 3.2点击查询

自定义参数可以让代码的复用性更高。

methods中定义的方法内部,可以通过this关键字点出其他的方法。

效果图,点击后查询的结果:

 3.3全部代码展示

html:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>天气查询案例</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <input type="text" placeholder="输入查询的电台id" @keyup.enter="searchId" v-model="et"/>
  10. <button type="button" @click="search">搜索</button>
  11. <a @click="etd(11)">编号11</a>
  12. <a @click="etd(12)">编号12</a>
  13. <a @click="etd(13)">编号13</a>
  14. <a @click="etd(14)">编号14</a>
  15. <a @click="etd(15)">编号15</a>
  16. <ul>
  17. <li v-for="item in etlist">
  18. <p>{{ item.name }}</p>
  19. <p>{{item.description}}</p>
  20. <p>{{ item.id}}</p>
  21. </li>
  22. </ul>
  23. </div>
  24. <!-- vue -->
  25. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  26. <!-- axios -->
  27. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  28. <!-- 导入js文件 -->
  29. <script src="js/main.js" type="text/javascript" charset="utf-8"></script>
  30. </body>
  31. </html>

js代码:

  1. var app = new Vue({
  2. el: "#app",
  3. data: {
  4. et: '',
  5. etlist: []
  6. },
  7. methods: {
  8. searchId: function() {
  9. // console.log("电台查询");
  10. // console.log(this.city);
  11. //调用接口
  12. var that=this;
  13. axios.get('https://autumnfish.cn/dj/program?rid=' + this.et)
  14. .then(function(response) {
  15. console.log(response.data.programs);
  16. that.etlist=response.data.programs;
  17. })
  18. .catch(function(err) {})
  19. },
  20. etd:function(et){
  21. this.et=et;
  22. this.searchId();
  23. },
  24. search:function(){
  25. this.searchId();
  26. }
  27. }
  28. })

总结

Vue到这里就算结束了,这里只是浅浅的学了一遍,更加适合学后端的但想写出一些好看点的页面的去学习,如果是想走前端的话,这些知识还不够。需要系统的去学习Vue,花大量的时间去打代码练习每一个案例。代码不管是前端还是后端都要勤加练习才能有所收获。希望大家动起来,我们一起敲代码。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/269251
推荐阅读
相关标签
  

闽ICP备14008679号