Vue基础教学

Vue.js 是一款轻量级、渐进式的 JavaScript 框架,用于构建用户界面。它将视图层和数据层分离,通过双向数据绑定实现了响应式的数据渲染和交互。

以下是 Vue.js 的基础知识:

实例

1. Vue 实例:Vue.js 应用程序的起点是一个 Vue 实例,它是 Vue 应用程序中的根实例,用于管理应用程序的状态和行为。可以使用 new Vue() 语法来创建一个 Vue 实例。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 创建vue的方法 -->
    <div id="app">
        <!-- 插值语法 -->
        <h1>
            {{msg}}
        </h1>
    </div>
    <h1 class="app">
        {{msg}}
    </h1>
    <!-- 引入vue.js文件 -->
    <script src="../vue.js"></script>
    <script>
        /* 实例化 vue */
        const vm=new Vue({
            /* 挂载dom */
            /* el 是elment的缩写 */
            /*  el: '选择器名称' */
            el:'.app',
            /* 初始化页面数据 */
            /* 原生js通过 dom控制页面的改变 */
            /* vue通过data里面的数据 改变页面 */
            data:{
                /* 和对象的写法一模一样 定义数据 */
                msg:'hello Vue'
            }
        })
    </script>
</body>
</html>

模板

2. 模板:Vue 使用模板语法来描述 DOM 结构和数据绑定。模板是一个 HTML 片段,可以包含 Vue 的特殊标记,如指令、表达式和事件。

<template>
  <div>
    <h1>{{ title }}</h1>
    <ul>
      <li v-for="item in list" :key="item.id">{{ item.name }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      title: '这是一个标题',
      list: [
        { id: 1, name: '项目1' },
        { id: 2, name: '项目2' },
        { id: 3, name: '项目3' },
      ],
    };
  },
};
</script>

<style>
h1 {
  color: red;
}
</style>

数据绑定

3. 数据绑定:Vue 使用双向数据绑定来实现视图和模型之间的数据同步。当数据发生变化时,视图会自动更新,反之亦然。

双向绑定:

<template>
  <div>
    <input v-model="message" type="text">
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: ''
    };
  }
};
</script>

计算属性

4. 计算属性:计算属性是基于其他属性计算而来的属性,它们可以缓存计算结果,以提高应用程序的性能。

<template>
  <div>
    <ul>
      <li v-for="item in cartItems" :key="item.id">
        {{ item.name }} - ¥{{ item.price }}
      </li>
    </ul>
    <p>Total: ¥{{ totalPrice }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      cartItems: [
        { id: 1, name: "商品1", price: 10 },
        { id: 2, name: "商品2", price: 20 },
        { id: 3, name: "商品3", price: 30 }
      ]
    };
  },
  computed: {
    totalPrice() {
      return this.cartItems.reduce((total, item) => total + item.price, 0);
    }
  }
};
</script>

内置指令

5. 指令:Vue 的指令是一种特殊的 HTML 属性,它们可以用于操作 DOM 元素、绑定事件、条件渲染和列表渲染等。常用指令包括 v-bind、v-if、v-for、v-on 等。

 1. 插值语法

            {{ 数据名 }}

            插值语法里面可以使用 非赋值运算符,以及一些非赋值的方法

        2. v-html  

            作用: 可以把数据里面的标签渲染到页面上,

            相当于原生js的innerHTML

        3. v-text

            作用:

                可以把数据的内容渲染出来,不会渲染HTML标签

                相当于原生的 innerText

        4. v-bind:

            数据绑定

            用法:

                v-bind:属性名="数据"

                简写:

                :属性名="数据"

        5. v-on:

            事件绑定

                所有的事件要写在methods里面

            绑定用法:

                v-on:事件名="函数名()"

                简写:

                @事件名="函数名"

            事件修饰符:

                @keydown.enter = "函数名()"

                只有在按下enter键的时候才会触发函数

        6. v-model:

            作用:

                用在表单元素(input,textarea,select):

                v-model会自动寻找需要绑定的属性,

                实现数据,页面的双向绑定,

                数据变,页面变;页面变,数据变

        7. v-if, v-else-if,v-else

  1.             用法:

                v-if="条件判断"

            条件满足,显示该标签,不满足条件的标签不会显示在dom树中,也不会显示到页面上

        8. v-show

            用法:

                v-show="条件判断"

            条件满足,显示该标签,不满子的条件标签不会显示到页面上,但是会在dom中,通过display:none不让它显示在

            页面上

     

生命周期

6. 生命周期:Vue 实例有一系列的生命周期钩子函数,用于在组件的不同阶段执行某些操作。常用的生命周期钩子函数包括 created、mounted、updated 和 destroyed。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <!-- 
            生命(生 -> 死):
                创建,销毁结束;
            周期:
            组件也有自己的生命周期:
                创建过程;
                    创建前(beforeCreate)
                        vue实例还没有被创建,data里面的数据不可被调用;
                        也就是this.数据名 无效,页面仍然处于最原始的状态
                    创建后(created)
                        vue实例已经被创建,这个钩子函数是第一个能够访问到
                        data数据的钩子函数;页面仍然是最原始的状态,
                        虚拟dom还没有开始生成;
                挂载过程;
                    挂载前(beforeMount)
                        虚拟dom已经生成,但是还没有渲染到页面上,
                        但是这个钩子函数,做任何的dom操作,都不奏效;
                        因为,在这个钩子函数里面删除的所有的dom,
                        都已经被虚拟dom拷贝了一份,
                    挂载后(mounted)
                        所有的dom都已经渲染到了页面上,dom是最新的;
                        页面也是最新的; 组件的初始化已经完成了
                更新过程;
                    更新前(beforeUpdate)
                        页面更新前,数据是最新的,但是页面还是旧数据;
                    更新后(updated)
                        页面的是最新的,数据也是最新的;
                销毁过程;
                    销毁前(beforeDestroy)
                        实例销毁前都会触发的事件;
                    销毁后(destroyed)
                        这个生命周期是最后一次,能够调用事件以及data里面数据的钩子函数
                        销毁后,页面的所有操作,都不在生效;
                        页面还在;
                        一般在这个生命周期,做一些,停止计时器,清空内存等操作;
                称为 组件的四大生命周期;

                八小份生命周期 都有自己的钩子(vue对象里面的函数)函数;
         -->
         <button @click="number = 456">
            按钮
         </button>
        {{ number }}

        <button @click="kill()">
            销毁vue实例
        </button>
    </div>
    <script src="./vue.js"></script>
    <script>

        // 实例化
        const vm = new Vue({
            // 挂载dom
            el: '#app',
            methods: {
                kill(){
                    // 销毁生命周期
                    vm.$destroy()
                }
            },
            data() {
                return {
                    number: 123
                }
            },
            // 创建前的生命周期
            beforeCreate() {
                console.log(this.number);
                // 前端代码断点调试
                debugger
            },
            // 创建后的生命周期
            created() {
                // 一般做些数据的请求操作,页面刚开始加载的时候
                // 需要的数据
                console.log(this.number);
                debugger
            },
            // 挂载前的生命周期
            beforeMount() {
                document.querySelector('button').remove();
                debugger
            },
            // 挂载后的生命周期
            mounted() {
                // 一般做一些,页面加载后需要进行的dom操作;
                // vue一般不提倡直接控制dom
                debugger
            },
            // 更新前
            beforeUpdate() {
                console.log(this.number);
                debugger
            },
            // 更新后
            updated() {
                debugger
            },
            // 销毁前
            beforeDestroy() {
                debugger
            },
            // 销毁后
            destroyed() {
                debugger
            },
        })
    </script>
</body>
</html>

组件

7. 组件:组件是 Vue 中的重要概念,它允许开发人员将页面分解为具有相同功能的小组件。组件可以嵌套和复用,使应用程序更易于维护和开发。

// 定义一个组件
Vue.component('my-component', {
  data: function() {
    return {
      message: 'Hello, Vue!'
    }
  },
  template: '<div>{{ message }}</div>'
})

// 在Vue应用程序中使用组件
new Vue({
  el: '#app',
  template: '<my-component></my-component>'
})

路由

8. 路由:Vue 提供了 vue-router 插件,用于管理应用程序的路由。路由可以帮助开发人员在不同的 URL 和组件之间进行导航和交互。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script src="vue.js路径"></script>
  <script src="vue-router.js路径"></script>

  <div id="app">
    <h1>Hello App!</h1>
    <p>
      <!-- 使用 router-link 组件来导航. -->
      <!-- 通过传入 `to` 属性指定链接. -->
      <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
      <router-link to="/foo">Go to Foo</router-link>
      <router-link to="/bar">Go to Bar</router-link>
    </p>
    <!-- 路由出口 -->
    <!-- 路由匹配到的组件将渲染在这里 -->
    <router-view></router-view>
  </div>
  
  <script>
    // 1. 定义 (路由) 组件。
    // 可以从其他文件 import 进来
    const Foo = { template: '<div>foo</div>' }
    const Bar = { template: '<div>bar</div>' }

    // 2. 定义路由
    // 每个路由应该映射一个组件。 其中"component" 可以是
    // 通过 Vue.extend() 创建的组件构造器,
    // 或者,只是一个组件配置对象。
    // 我们晚点再讨论嵌套路由。
    const routes = [
      { path: '/foo', component: Foo },
      { path: '/bar', component: Bar }
    ]

    // 3. 创建 router 实例,然后传 `routes` 配置
    // 你还可以传别的配置参数, 不过先这么简单着吧。
    const router = new VueRouter({
      routes // (缩写) 相当于 routes: routes
    })

    // 4. 创建和挂载根实例。
    // 记得要通过 router 配置参数注入路由,
    // 从而让整个应用都有路由功能
    const app = new Vue({
      router
    }).$mount('#app')

    // 现在,应用已经启动了!
  </script>
</body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值