Vue.js一课一得

目录

一、核心概念

1.模板语法

2.组件化

3.数据驱动

4.生命周期

5.指令

二、常用功能

1.组件通信

2.路由管理

3.状态管理

4.过滤器

5.插件开发

三、常见的vue.js代码示例

1.插值表达式

2.条件渲染

3.列表渲染

4.绑定属性

5.双向绑定

6.组件通信

8.状态管理(使用Vuex)

四、Vue.js概念和技术包括的几个方面

1.响应式原理:

2.虚拟DOM:

3.异步组件:

4.自定义指令:

5.渲染函数:

6.混入:

7.服务端渲染:

8.插件开发:


一、核心概念

1.模板语法

Vue.js 使用基于 HTML 的模板语法,可以快速构建页面,并且支持绑定数据和事件等功能。例如,可以使用 {{ }} 语法绑定变量,使用 v-on: 绑定事件

2.组件化

Vue.js 将页面划分为多个组件,每个组件包含自己的模板、样式和逻辑。组件化使得代码可复用性更高、可维护性更好。

3.数据驱动

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

4.生命周期

Vue.js 组件有多个生命周期钩子函数,在不同阶段执行不同的逻辑,可用于处理异步请求、DOM 操作等。

5.指令

Vue.js 提供了多个内置指令,如 v-if、v-show、v-for、v-bind 等,用于操作 DOM 元素、绑定数据等。

二、常用功能

1.组件通信

在 Vue.js 中,组件通信可以通过 props$emit$parent$children$refs 等方式实现。常用的方法有:

(1)props:用于父子组件之间传递数据,子组件通过 props 接收父组件传递的值;
(2)$emit:用于子组件向父组件触发自定义事件;
(3)$parent 和 $children:用于访问父组件和子组件的实例;
(4)$refs:用于获取子组件或 DOM 元素的引用,可以直接操作子组件或 DOM 元素。

2.路由管理

Vue.js 集成了 Vue Router 模块,提供了路由管理功能,可用于实现 SPA(单页面应用)的跳转、刷新等操作。常用的概念有:

(1)路由配置:定义不同路径下对应的组件,如 { path: '/home', component: Home };
(2)路由跳转:使用 router.push() 方法或 <router-link> 组件进行路由跳转;
(3)动态路由:使用路由参数动态生成路由,如 /user/:id;
(4)嵌套路由:在一个页面中嵌套多个子路由,实现多层级页面的跳转。

3.状态管理

Vue.js 集成了 Vuex 模块,提供了状态管理功能,可用于管理应用中的共享状态,方便不同组件之间进行通信和数据交互。常用的概念有:

(1)State:存放应用中所有的共享状态,类似于组件中的 data 属性;
(2)Getter:用于从 state 中派生出一些状态,类似于组件中的 computed 属性;
(3)Mutation:用于修改 state 中的数据,必须是同步函数;
(4)Action:用于处理异步操作或调用多个 mutation,可以包含任意的异步操作。

4.过滤器

Vue.js 提供了过滤器机制,可以对数据进行处理和格式化,例如,可以将日期格式化为指定格式,或者将文本转换为大写字母等。常用的方法有:

(1)定义过滤器:使用 Vue.filter() 方法定义过滤器函数;
(2)使用过滤器:在模板中使用 {{ value | filterName }} 的语法调用过滤器函数。

5.插件开发

Vue.js 支持插件式开发,可以扩展 Vue.js 的功能和特性,例如,可以开发插件来实现自定义指令、过滤器、混入等功能。常用的方法有:

(1)定义插件:使用 Vue.use() 方法安装插件,或者定义一个对象,包含 install() 方法;
(2)使用插件:在 main.js 中使用 Vue.use() 安装插件,或者在组件中使用 this.$pluginName 调用插件中的方法。

三、常见的vue.js代码示例

1.插值表达式

<div>
  <p>{{ message }}</p>
</div>

2.条件渲染

<div>
  <p v-if="showMessage">显示的消息</p>
  <p v-else>隐藏的消息</p>
</div>

3.列表渲染

<ul>
  <li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>

4.绑定属性

<button :disabled="isDisabled">点击按钮</button>

5.双向绑定

<input type="text" v-model="message">

6.组件通信

<!-- 父组件 -->
<template>
  <ChildComponent :message="parentMessage" @update="updateParentMessage" />
</template>

<script>
export default {
  data() {
    return {
      parentMessage: '父组件的消息'
    }
  },
  methods: {
    updateParentMessage(message) {
      this.parentMessage = message;
    }
  }
}
</script>

<!-- 子组件 -->
<template>
  <div>
    <p>{{ message }}</p>
    <button @click="sendMessage">发送消息给父组件</button>
  </div>
</template>

<script>
export default {
  props: ['message'],
  methods: {
    sendMessage() {
      this.$emit('update', '子组件的消息');
    }
  }
}
</script>

7.路由配置和跳转(使用Vue Router)

import Vue from 'vue';
import VueRouter from 'vue-router';

Vue.use(VueRouter);

const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About }
];

const router = new VueRouter({
  routes
});

new Vue({
  router
}).$mount('#app');

8.状态管理(使用Vuex)

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  },
  actions: {
    incrementAsync({ commit }) {
      setTimeout(() => {
        commit('increment');
      }, 1000);
    }
  }
});

new Vue({
  store
}).$mount('#app');

四、Vue.js概念和技术包括的几个方面

1.响应式原理:

Vue.js使用了响应式的数据绑定机制,当数据发生变化时,相关的视图会自动更新。这一机制是通过使用Object.defineProperty()方法来劫持对象的属性访问,在属性的读取和修改时触发相应的操作。

示例:

<div id="app">
  <p>{{ message }}</p>
  <button @click="updateMessage">更新消息</button>
</div>

<script>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  },
  methods: {
    updateMessage: function() {
      this.message = 'Hello World!';
    }
  }
});
</script>

在上面的代码中,我们使用了Vue.js提供的data属性来定义了一个message变量,并将其绑定到模板中的<p>标签中。当点击按钮时,调用updateMessage方法修改message变量的值,由于Vue.js的响应式机制,相关的视图会自动更新。

2.虚拟DOM:

Vue.js使用虚拟DOM来提高渲染性能。虚拟DOM是一个轻量级的JavaScript对象,它对应着真实的DOM元素树,并且可以通过对比新旧虚拟DOM树的差异,最小化地更新真实的DOM。

示例:

<div id="app"></div>

<script>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  },
  render: function(createElement) {
    return createElement('h1', this.message);
  }
});
</script>

在上面的代码中,我们使用了Vue.js提供的render函数来创建虚拟DOM树,并将其渲染为真实的DOM元素。在这个例子中,我们创建了一个<h1>标签,并将其内容设置为message变量的值。由于Vue.js的虚拟DOM机制,当message变量的值发生改变时,Vue.js会自动对比新旧虚拟DOM树的差异,并最小化地更新真实的DOM。

3.异步组件:

Vue.js支持异步组件加载,可以将页面划分为更小的模块,按需加载,提高页面的加载速度和用户体验。异步组件可以通过import()语法或者工厂函数的方式进行定义和使用。

示例:

<div id="app">
  <async-component></async-component>
</div>

<script>
var AsyncComponent = () => import('./AsyncComponent.vue');
var app = new Vue({
  el: '#app',
  components: {
    'async-component': AsyncComponent
  }
});
</script>

在上面的代码中,我们使用了Vue.js提供的import()语法来异步加载一个组件,并将其注册为全局组件。当页面加载时,这个组件不会被立即加载,只有在需要渲染时才会异步加载。这种方式可以提高页面的加载速度和用户体验。

4.自定义指令:

Vue.js允许开发者自定义指令,用于在DOM元素上添加特定的行为。自定义指令可以用于封装常用的DOM操作、事件处理等逻辑,使得代码更加可复用和清晰。

示例:

<div id="app">
  <p v-highlight="'red'">这是一段需要高亮显示的文本</p>
</div>

<script>
Vue.directive('highlight', {
  bind: function(el, binding) {
    el.style.backgroundColor = binding.value;
  }
});

var app = new Vue({
  el: '#app'
});
</script>

在上面的代码中,我们使用了Vue.js提供的directive函数来定义一个名为highlight的自定义指令,并将其绑定到模板中的<p>标签上。当指令被绑定时,调用bind钩子函数并将绑定值设置为<p>标签的背景色。

5.渲染函数:

除了使用模板语法,Vue.js还提供了渲染函数的方式来创建组件。渲染函数允许直接用JavaScript代码生成虚拟DOM,从而更加灵活地控制组件的结构和行为。

示例:

<div id="app"></div>

<script>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  },
  render: function(createElement) {
    return createElement('h1', {
      attrs: {
        class: 'title'
      },
      domProps: {
        textContent: this.message
      }
    });
  }
});
</script>

在上面的代码中,我们使用了Vue.js提供的render函数来创建虚拟DOM树,并将其渲染为真实的DOM元素。在这个例子中,我们创建了一个<h1>标签,并将其内容设置为message变量的值,同时添加了一个class属性。由于Vue.js的渲染函数机制,我们可以更加灵活地控制组件的结构和行为。

6.混入:

混入(Mixin)是一种复用Vue组件逻辑的方式。开发者可以编写一些通用的逻辑,将其定义为混入对象,并将其混入到需要共享逻辑的组件中,从而实现代码的重用。

示例:

<div id="app">
  <p>{{ message }}</p>
  <button @click="updateMessage">更新消息</button>
</div>

<script>
var myMixin = {
  data: function() {
    return {
      message: 'Hello Mixin!'
    };
  },
  methods: {
    updateMessage: function() {
      this.message = 'Hello World!';
    }
  }
};

var app = new Vue({
  el: '#app',
  mixins: [myMixin]
});
</script>

7.服务端渲染:

Vue.js支持服务端渲染(SSR),可以将Vue组件在服务器端预渲染成HTML字符串,然后将其发送给客户端,提高首屏加载速度和SEO效果。

示例:

<!-- index.html -->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Vue.js SSR Demo</title>
  </head>
  <body>
    <!--vue-ssr-outlet-->
    <script src="/dist/build.js"></script>
  </body>
</html>

在上面的代码中,我们使用了Vue.js提供的服务器端渲染(SSR)功能,将Vue组件渲染成HTML字符串,并在服务器端将其输出。这可以提高首屏加载速度和SEO效果。

8.插件开发:

Vue.js支持开发和使用插件,可以扩展Vue的功能和特性。开发者可以编写插件来添加全局方法、指令、过滤器,或者对Vue的原型进行扩展,从而实现自定义的需求。

示例:

// myPlugin.js
export default {
  install(Vue, options) {
    Vue.prototype.$myMethod = function() {
      console.log('Hello World!');
    };
    Vue.directive('myDirective', {
      bind: function(el, binding) {
        el.style.backgroundColor = binding.value;
      }
    });
  }
}

// main.js
import Vue from 'vue';
import myPlugin from './myPlugin.js';

Vue.use(myPlugin);

new Vue({
  el: '#app'
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值