VUE-VUE介绍

VUE-VUE介绍

一、简介

  • Vue.js(通常简称为Vue)
  • 是一套用于构建用户界面的渐进式JavaScript框架
  • 渐进式:被设计成逐步采用的框架,可以轻松地逐步应用到项目中;

二、特点

1. 声明式渲染

  • Vue 使用基于HTML的模板语法,将DOM和数据绑定在一起,通过简单的模板语法,你可以轻松地将数据声明式地渲染到DOM中。

    <div id="app">
      {{ message }}
    </div>
    
    
    var app = new Vue({
      el: '#app', // 挂载到页面中的元素,这里是 id 为 'app' 的元素
      data: {
        message: 'Hello Vue!'
      }
    });
    
    

2. 组件化开发

  • Vue允许你将应用拆分为小的、独立可复用的组件;

  • 每个组件都包含自己的模板、脚本和样式;

  • 组件化开发提高了代码的可维护性和复用性;

    <!-- 定义一个组件,文件名:MyComponent.vue -->
    <template>
      <div>
        <h1>{{ title }}</h1>
        <p>{{ content }}</p>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          title: 'My Component',
          content: 'This is a Vue component.'
        };
      }
    };
    </script>
    
  • 使用上述组件:

    <template>
      <div>
        <my-component></my-component>
      </div>
    </template>
    
    <script>
    import MyComponent from '@/components/MyComponent.vue'; // 导入组件
    
    export default {
      components: {
        'my-component': MyComponent // 注册组件
      }
    };
    </script>
    
    • 组件定义为 MyComponent,则可以在模板中使用 <my-component>,Vue.js 会自动进行匹配。

3. 响应式数据绑定

  • Vue通过双向数据绑定实现了响应式的数据更新。

  • 当数据发生变化时,视图会自动更新,而当用户与视图交互时,数据也会相应地更新。

    <template>
      <div>
        <input v-model="message"><!-- Vue 的 v-model 指令,它实现了双向数据绑定-->
        <p>{{ message }}</p>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          message: 'Hello Vue!'
        };
      }
    };
    </script>
    
    • 输入框的值与 Vue 实例中的 message 数据属性相绑定,由于双向绑定的作用,当输入框的值变化时,这个段落中显示的内容也会随之更新。

4. 生命周期钩子

  • Vue组件有一系列的生命周期钩子,允许你在组件的不同阶段执行自定义逻辑。

  • 在不同阶段的实例生命周期中执行自定义逻辑。适用于执行一些初始化操作、监听生命周期事件、或清理工作;

  • 生命周期钩子包括:

    • beforeCreate: 在实例初始化之后,数据观测 (data observation) 和 event/watcher 事件配置之前被调用。在这个阶段,实例的选项对象中的 datamethods 属性被初始化,但实例尚未被挂载到 DOM。
    • created: 在实例被创建后调用。在这一步,实例已经完成以下的配置:数据观测 (data observation),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没有开始,$el 属性目前不可见。
    • beforeMount: 在挂载开始之前被调用:相关的 render 函数首次被调用。
    • mounted: el 被新创建的 vm. e l 替换,并挂载到实例上去之后调用该钩子。如果根实例挂载到了一个文档内的元素上,当 m o u n t e d 被调用时 v m . el 替换,并挂载到实例上去之后调用该钩子。如果根实例挂载到了一个文档内的元素上,当 mounted 被调用时 vm. el替换,并挂载到实例上去之后调用该钩子。如果根实例挂载到了一个文档内的元素上,当mounted被调用时vm.el 将指向文档内的这个元素。
    • beforeUpdate: 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。
    • updated: 由于数据更改导致的虚拟 DOM 重新渲染和打补丁之后调用。
    • beforeDestroy: 实例销毁之前调用。在这一步,实例仍然完全可用。
    • destroyed: 实例销毁后调用。在这一步,Vue 实例的所有指令已经解绑定,所有事件监听器已被移除,所有子实例也已经销毁。
  • 声明生命周期钩子示例:

    <template>
      <div>
        <!-- 组件的模板内容 -->
        <p>{{ message }}</p>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          message: 'Hello from the component!'
        };
      },
      beforeCreate() {
        console.log('Component - Before Create Hook');
      },
      created() {
        console.log('Component - Created Hook');
      },
      mounted() {
        console.log('Component - Mounted Hook');
      },
      beforeDestroy() {
        console.log('Component - Before Destroy Hook');
      },
      destroyed() {
        console.log('Component - Destroyed Hook');
      }
    };
    </script>
    
    <style>
    /* 组件的样式 */
    </style>
    

5. 路由管理

  • Vue提供了Vue Router来管理单页面应用的路由。

  • 允许你通过路由切换来渲染不同的组件,实现无刷新的单页面应用。

    const routes = [ 
      // 定义两个路由:
      // 一个是根路径 / 对应的组件是 Home
      // 另一个是 /about 路径对应的组件是 About
      { path: '/', component: Home },
      { path: '/about', component: About }
    ];
    
    //创建 VueRouter 实例,这个实例会管理应用程序的路由
    const router = new VueRouter({
      routes
    });
    
    //创建了一个 Vue 实例,通过 { router } 的方式将之前创建的 VueRouter 实例传递给了 Vue 实例
    const app = new Vue({
      router
    }).$mount('#app');// $mount('#app') 将 Vue 实例挂载到具有 id 为 'app' 的元素上
    

6. 状态管理

  • Vue提供了Vuex来进行状态管理。

  • Vuex是一个专为Vue.js应用程序开发的状态管理模式。它集中管理应用中所有组件的状态,使得状态的变更更加可追踪和可调试。

    //创建了一个 Vuex 的 Store 实例。
    //state 属性定义了应用的状态,这里只有一个变量 count。
    //mutations 属性定义了一系列修改状态的方法,这里只有一个 increment 方法,用于增加 count 的值。
    const store = new Vuex.Store({
      state: {
        count: 0
      },
      mutations: {
        increment(state) {
          state.count++;
        }
      }
    });
    
    //创建了一个 Vue 实例,并将之前创建的 Vuex Store 实例通过 store 选项传递给了该 Vue 实例。
    new Vue({
      store,
      computed: {
        count() {//用于获取 Vuex Store 中的 count 状态值
          return this.$store.state.count;
        }
      },
      methods: {
        increment() {//用于触发 Vuex Store 中的 increment mutation,修改 count 状态
          this.$store.commit('increment');
        }
      }
    });
    

7. 社区支持和生态系统

  • Vue有一个庞大的社区,提供了丰富的第三方插件、工具和扩展。这使得Vue在构建现代Web应用时非常具有竞争力。

  • Vue的生态系统还包括一些官方工具,如Vue CLI(用于快速搭建Vue项目)、Vue Devtools(浏览器开发者工具的插件,用于调试Vue应用)等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SEA-365

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值