三、Vue 的一些语法样例

数字码影说
• 阅读 1455

前言

其实vue 的语法在官网上都有详细的讲解和例子,我这里就不多做什么说明,只是把自己学习这些语法是练习的例子贴出来。另外官网上的例子是一个个的html文件。我这里的是一个的vue 文件,通过不同的路由进行访问。
三、Vue 的一些语法样例
类似就上图的这种效果吧,没有什么样式,大伙将就看看嘿嘿。好了,下面我们就一起来看下主题的vue 语法吧。

路由

其实不应该先讲路由的,但是想要做这种点击跳转的就是通过路由实现的。其实也很简单,我们只求会用,不求为什要这样吧先。

<router-link :to="{name: 'IfAndFor'}">
条件与循环
</router-link>

可以看到我们通过 router-link 就可以实现跳转。to 表示跳转的地址,name 指跳转的路由。当然这个路由需要我们在src--router--index.js 中配置好,并且有相关的组件才行哟。
三、Vue 的一些语法样例

我们要新增路由的话,就在index.js 中增加对应配置就好了,然后就可以通过router-link来实现界面见的跳转。

条件与循环

我们配置好路由后,现在我们来看看v-if 和v-for 我们新建一个组件如下:

<template xmlns:v-bind="http://www.w3.org/1999/xhtml">
  <div>
      <div id="for">
        <p>一</p>
        <table>
          <tr v-for="(value, key, index) in object">
            <td v-if="key === 'url'">
              <a v-bind:href="value"> {{value}}</a>
            </td>
            <td v-else>
              {{ value }}
            </td>
          </tr>
        </table>
        <br>
        <p>二</p>
        <ul>
          <li v-for="(value, key, index) in object">
            {{ index }}. {{ key }} : {{ value }}
          </li>
        </ul>
        <br>
        <p>二</p>
        <ul>
          <li v-for="(value, key) in object">
            {{ key }} : {{ value }}
          </li>
        </ul>
      </div>
    </div>
</template>

<script>
    export default {
        name: "",
      data(){
        return {
          object: {
            name: 'quellanan',
            url: 'http://quellanan.xyz',
            slogan: '学的不仅是技术,更是梦想!'
          }
        }
      }
    }
</script>

可以看到我使用了三种方式进行for 循环。index 是索引,key 是键, value 是值。这些其实和Java 中的循环差不多。无非就是通过索引遍历,要不就是通过键值遍历。

v-if 和v-else-if v-else 也是一样的。满足条件就显示组件,知道这样用就可以。

但是有一点,上面代码也发现了,无论是v-if 还是v-for, 都要与某个标签结合使用。单独是无法使用的。

监听事件

听起来很高大上,其实就是一个 watch 方法。
我们写一个单位换算的组件:

<template>
  <div>
      <div style="margin: 20px">
        千米 : <input type = "text" v-model = "kilometers">
        米 : <input type = "text" v-model = "meters">
        <p id="info"></p>
      </div>

      <div style="margin: 20px">
        小时 : <input type = "text" v-model = "hour">
        分钟 : <input type = "text" v-model = "minute">
        秒 : <input type = "text" v-model = "second">
        <br>
        天 : <input type = "text" v-model = "day">
        <br>
        星期 : <input type = "text" v-model = "week">
      </div>
      <div style="margin: 20px">
        <p >计数器: {{ counter }}</p>
        <button @click = "counter++">点我</button>
      </div>
  </div>
</template>

<script>
    export default {
        name: "",
      data(){
          return{
            kilometers : 0,
            meters:0,
            second : 0,
            minute : 0,
            hour : 0,
            day : 0,
            week : 0,
            counter: 0
          }
      },
      watch : {
        kilometers:function(val) {
          this.kilometers = val;
          this.meters = this.kilometers * 1000
        },
        meters : function (val) {
          this.kilometers = val/ 1000;
          this.meters = val;
        },
        week:function(val) {
          this.week = val;
          this.day = this.week * 7;
          this.hour = this.day * 24;
          this.minute = this.hour * 60;
          this.second = this.minute * 60;
        },
        day : function (val) {
          this.day = val;
          this.week = this.day/7;
          this.hour = this.day * 24;
          this.minute = this.hour * 60;
          this.second = this.minute * 60;
        },
        hour : function (val) {
          this.hour = val;
          this.day = this.hour/24;
          this.week = this.day/7;
          this.minute = this.hour * 60;
          this.second = this.minute * 60;
        },
        minute : function (val) {
          this.minute = val;
          this.hour = this.minute/60;
          this.day = this.hour/24;
          this.week = this.day/7;
          this.second = this.minute * 60;
        },
        second : function (val) {
          this.second = val;
          this.minute = this.second/60;
          this.hour = this.minute/60;
          this.day = this.hour/24;
          this.week = this.day/7;
        },
        counter :function(nval, oval) {
          //alert('计数器值的变化 :' + oval + ' 变为 ' + nval + '!');
        }
      }
    };
</script>

v-model 表示数据双向绑定,这个没有什么好说的。data 初始化数据,watch 方法中就是监听函数,监听各自的组件并进行处理。

发送HTTP 请求

我们要做前后端分离,那么通过http 请求访问后端数据是避免不了的。所以我们一起来看下。我这里也是查看资料中的例子。直接拿过来用了。
我们创建一个BlogList.vue 文件,内容如下:

<template>
  <div >
    <table>
      <tr v-for="blog in blogs">
        <!--<td @click='show_blog(blog.id)'>{{blog.title}}</td>-->
        <td>
          <router-link :to="{name: 'Blog', query: {id: blog.id}}">
            {{blog.title}}
          </router-link>
        </td>
      </tr>
    </table>
  </div>
</template>

<script>
    export default {
      data () {
        return {
          title: '博客列表页',
          blogs: []
        }
      },
      mounted () {
        this.$http.get('api/interface/blogs/all').then((response) => {
          console.info(response.body)
          this.blogs = response.body.blogs
        }, (response) => {
          console.error(response)
        });
      },
      methods:{
        show_blog: function(blog_id) {
          this.$router.push({name: 'Blog', query: {id: blog_id}})
        }
      }
      }

</script>

<style >

  td {
    border-bottom: 1px solid grey;
  }
</style>

上面的代码可以看到。mounted 方法中发送http 请求。mounted 函数是初始化页面后,将数据渲染到界面上的。

      mounted () {
        this.$http.get('api/interface/blogs/all').then((response) => {
          this.blogs = response.body.blogs
        }, (response) => {
          console.error(response)
        });
      },

我们启动项目,发现报这种错误。这是因为我们项目中没有引入 vue-resource 所以我们需要在项目中引入。
三、Vue 的一些语法样例

我们在idea 中打开控制台(alt+F12)。

npm  install vue-resource

三、Vue 的一些语法样例
安装好之后,我们在在main.js 中引入它

import VueResource from 'vue-resource'
Vue.use(VueResource)
Vue.http.options.emulateJSON = true //允许使用post 请求。

在config--index.js 中设置一下代理,模拟一下跨域请求,不然接口访问不了。

proxyTable: {
      '/api': {        // 1. 对于所有以  "/api" 开头的url 做处理.
        target: 'http://siwei.me',   // 3. 转发到 siwei.me 上.
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''  // 2. 把url中的 "/api" 去掉.
        }
      }
    },

三、Vue 的一些语法样例

好了,我们启动看一下,
三、Vue 的一些语法样例
后面是获取详情的,上面没有传递参数,获取详情需要传递参数,代码如下:

<template>
  <div >
    <div>
      <p> 标题: {{ blog.title }}  </p>
      <p> 发布于: {{blog.created_at }}</p>
      <div>
        <div v-html='blog.body'></div>
      </div>
    </div>
  </div>
</template>

<script>
  export default {
    data () {
      return {
        blog: {}
      }
    },
    mounted() {
      this.$http.get('api/interface/blogs/show?id='+this.$route.query.id).then((response) => {
        this.blog = response.body.result
      }, (response) => {
        console.error(response)
      });
    }
  }
</script>

<style scoped>

</style>

这是别人的接口,好像不支持post 请求。所以post 请求就先算了,并且这种算是原生的http 请求吧,我们以后使用的时候,可以使用 axios 来发送http 请求。这个我们后面再尝试。

番外

这篇就讲到这吧,都是一些例子。如果要看语法的话,还得看看官网的教程。

代码上传到github:
https://github.com/QuellanAn/...

后续加油♡

欢迎大家关注个人公众号 "程序员爱酸奶"

分享各种学习资料,包含java,linux,大数据等。资料包含视频文档以及源码,同时分享本人及投递的优质技术博文。

如果大家喜欢记得关注和分享哟❤

三、Vue 的一些语法样例

点赞
收藏
评论区
推荐文章
晴空闲云 晴空闲云
3年前
vue3中基于script setup语法糖的$refs使用
在用vue3开发项目的时候,需要调用子组件的方法,于是想着用$refs来实现,但是我是使用scriptsetup语法糖,原先vue2的语法已经不适用了。于是一番折腾和查阅资料,终于搞定。vue2语法vue2语法在组件上设置ref属性后,在代码里可以通过this.$refs.ref值访问到对应的子组件。一个设置ref值的组件:html在js代码中可以通
blmius blmius
3年前
Vue引入mavon-editor插件实现markdown功能
Vue引入mavoneditor插件实现markdown功能说明mavoneditor是一款基于Vue的markdown编辑器,因为当前项目是采用Nuxt,所以这里所展示的教程是针对Nuxt引入mavoneditor插件,如果你只是采用了Vue,没有用Nuxt框架,那么你可以看mavoneditor官方文档,有详细说明,其实它们只有在引入mavonedit
简
4年前
TS 的脚步已经拦不住,代码撸起来
前言vue3已经发布了,ts的脚步已经阻拦不住了,还只会es6?别想了,人家都已经在行动了,以下是ts的基本系列教程,ts的基本语法,高级语法等,以及在vue项目中如何应用ts,跟着我赶紧撸起来吧。基本数据类型数字const a: number  3;字符串const b: string  "1
Easter79 Easter79
3年前
thrift简单示例 (基于C++)
这个thrift的简单示例,来源于官网(http://thrift.apache.org/tutorial/cpp),因为我觉得官网的例子已经很简单了,所以没有写新的示例,关于安装的教程,可以参考https://www.cnblogs.com/albizzia/p/10838646.html,关于thrift文件的语法,可以参考:https
Stella981 Stella981
3年前
Katalon系列十九:元素相同或无法定位时的定位技巧
经常看到有人问元素属性都相同,怎么定位,这里总结一下。下面以Xpath为例讲解,CSS其实也是一样的,只是语法不一样罢了。网上说CSS会比Xpath快一些,但在Katalon主用Xpath,感觉也还行。另外Katalon做为一个产品,他们选择主打Xpath,相信也是有原因的。当然了,也有极小可能他们的骨干对Xpath比较熟。Katalon也支持CSS,
Stella981 Stella981
3年前
PhoneGap, JQuery 的第一个例子
  上周用PhoneGap和JQuery做了一个Android的例子。这个例子用来说明如何读取一个应用的配置文件。  开发环境的搭建就不在这里描述了。  先看一下代码布局:   !(http://static.oschina.net/uploads/space/2012/0312/143111_M4qy_145002.png)
Stella981 Stella981
3年前
NoDom和Vue的区别
看到有朋友在问NoDom和Vue的区别,我在这里做一个较完整的回复,只能是较完整,因为我对Vue及其源码了解并不深刻。1、框架组成而言,NoDom强调模块,NoDom整个App就是一个大模块;Vue强调组件,它是把组件装到App中,而组件(component)和插件(plugin)往往会被很多开发者混淆;2、框架的核心性能在于编译和渲染,Vue的编译
Wesley13 Wesley13
3年前
Java面试史上最全的JAVA专业术语面试100问(51
前言:再次说明一小下下:(面试题是根据一些朋友去面试提供的,再就是从网上整理了一些)前面更新了150的题,正好昨天星期六放假,回家抽时间又整理了一下后面的,我真是一个辛勤的小蜜蜂。所以请给我一个小小的赞或者…!在这里插入图片描述(https://imgblog.csdnimg.cn/202007051458
Wesley13 Wesley13
3年前
mysql查询每个学生的各科成绩,以及总分和平均分
今天看一个mysql教程,看到一个例子,感觉里面的解决方案不是很合理。问题如下:有学生表:!在这里插入图片描述(https://oscimg.oschina.net/oscnet/07b001b0c6cb7e0038a9299e768fc00a0d3.png)成绩表:!在这里插入图片描述(https://oscimg.o
李忠 李忠
1年前
VUE学习总结
VUE学习总结VUE基本语法VUE是基于ES6进行开发的。VUE安装1、安装node.jsnode.js下载地址:https://nodejs.org/en/download下载好后,点击安装,一直下一步即可。安装成功后在控制台通过下面命令如果出现版本号,