• 基础一,Vue的相关定义和简单语法介绍


    在前面两个章节中,介绍了Vue项目初始环境的搭建,以及Vue项目目录结构和相关的项目文件说明。本节介绍一下Vue的相关定义和语法,主要内容来自Vue的官方文档,我选的是当前最新版本V3。

    但是我使用的例子跟官网的会有所不同,但最终结果都是一样的。本节内容非常简单,记录下来作为我自已完整的一个复习笔记。

    一、Vue是什么

    Vue是一套用于构建用户界面的渐进式框架,与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用,Vue 的核心库只关注视图层。

    二、声明式渲染

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

     1 <template>
     2   <div>Counter: {{ counter }}</div>
     3 </template>
     4 
     5 <script>
     6 export default {
     7   data() {
     8     return {
     9       counter: 0,
    10     };
    11   },
    12 };
    13 </script>

     成功创建了第一个 Vue 应用!看起来这跟渲染一个字符串模板非常类似,但是 Vue 在背后做了大量工作。现在数据和 DOM 已经被建立了关联,所有东西都是响应式的。除了文本插值,我们还可以像这样绑定元素的 attribute:

     1 <template>
     2   <div>
     3     <span v-bind:title="message">
     4       鼠标悬停几秒钟查看此处动态绑定的提示信息!
     5     </span>
     6   </div>
     7 </template>
     8 <script>
     9 export default {
    10   name: "Test",
    11   data() {
    12     return {
    13       message: "safsadf"
    14   }
    15 };
    16 </script>

     v-bind attribute 被称为指令。指令带有前缀 v-,以表示它们是 Vue 提供的特殊 attribute

    三、处理用户输入

    用 v-on 指令添加一个事件监听器,通过它调用在实例中定义的方法:

     1 <template>
     2   <div>
     3        <p>{{ message }}</p>
     4     <button v-on:click="reverseMessage">反转Message</button>
     5     </div>
     6 </template>
     7 <script>
     8 export default {
     9   name: "Test",
    10   data() {
    11     return {
    12       message: "safsadf"
    13     };
    14   },
    15   methods: {
    16     reverseMessage() {
    17       this.message = this.message.split("").reverse().join("");
    18     },
    19   },
    20 };
    21 </script>

     所有的 DOM 操作都由 Vue 来处理,你编写的代码只需要关注逻辑层面即可。Vue 还提供了 v-model 指令,它能轻松实现表单输入和应用状态之间的双向绑定。

    四、条件和循环

    主要通过v-if指令,如:

     1 <div id="conditional-rendering"> 2 <span v-if="seen">现在你看到我了</span> 3 </div> 然后通过seen变量等于true或者false来控制元素显示或者隐藏,其实背后的原理是通过生成css display等于none或者true实现的。

    v-for 指令可以绑定数组的数据来渲染一个项目列表,这里就不举例了,直接看下一节,是本文的重点。

    五、组件化应用构建

    组件系统是 Vue 的另一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用。几乎任意类型的应用界面都可以抽象为一个组件树。

    组件本质上是一个具有预定义选项的实例。在components文件夹下我们新建TodoItem.vue文件,并编写如下内容:

    1 <template>
    2   <li>{{ todo.text }}</li>
    3 </template>
    4 <script>
    5 export default {
    6   name: "todo-item",
    7   props: ["todo"],
    8 };
    9 </script>

     这样一个简单的组件就定义好了,这里重点是props属性接口,它是与外部数据进行通信的桥梁。接下再在任意vue文件中来使用这个组件:

     1 <template>
     2   <div>
     3     <ol>
     4       <todo-item v-for="item in list" v-bind:todo="item" v-bind:key="item.id">
     5       </todo-item>
     6     </ol>
     7   </div>
     8 </template>
     9 
    10 <script>
    11 import TodoItem from "./TodoItem.vue";
    12 export default {
    13   name: "Test",
    14   components: {
    15     TodoItem,
    16   },
    17   data() {
    18     return {
    19       list: [
    20         { id: 0, text: "Vegetables" },
    21         { id: 1, text: "Cheese" },
    22         { id: 2, text: "Whatever else humans are supposed to eat" },
    23       ],
    24     };
    25   }
    26 };
    27 </script>

     通过import TodoItem from "./TodoItem.vue";来导入这个组件,通过在components属性中赋值TodoItem,声明需要使用这个组件,案例中通过使用v-for指令来遍历list数据,通过v-bind:todo绑定到元素中。注意这里一定要绑定v-bind:key来区分元素,不希望会报错。

    示例中将应用分割成了两个更小的单元,子单元通过 prop 接口与父单元进行了良好的解耦。现在可以进一步改进 <todo-item> 组件,提供更为复杂的模板和逻辑,而不会影响到父应用。

    在一个大型应用中,有必要将整个应用程序划分为多个组件,以使开发更易管理。

  • 相关阅读:
    AE旋转
    AE2
    AE1
    面试
    TS 基础数据类型
    vue-cli结构介绍
    js异步加载的5种方式
    slot 插槽的使用
    使用组件的细节点
    Vue 条件渲染
  • 原文地址:https://www.cnblogs.com/EastWind/p/14592437.html
Copyright © 2020-2023  润新知