Vue.js学习总结-分析说明

一、Vue.js的基础介绍

1.什么是Vue.js

  1. 渐进式:Vue.js 是一个渐进式框架,这意味着你可以逐步采用 Vue.js,并将其整合到现有的项目中。你可以选择仅使用 Vue.js 的核心功能,也可以结合使用官方提供的插件或社区中的第三方库来扩展其功能。

  2. 响应式:Vue.js 基于其响应式数据系统,通过使用数据绑定,将数据与 DOM 元素进行关联。当数据发生变化时,相关的 DOM 元素会自动更新。这种响应式机制大大简化了开发过程,提高了效率。

  3. 组件化:Vue.js 采用组件化的开发方式。组件是 Vue.js 应用程序的基本构建块,每个组件都有自己的模板、逻辑和样式。这种组件化的架构使得代码更容易维护、重用和测试。

  4. 虚拟 DOM:Vue.js 使用虚拟 DOM 技术来优化性能。虚拟 DOM 是一个轻量级的 JavaScript 对象,它在内存中表示真实的 DOM 结构。当数据发生变化时,Vue.js 会通过比较虚拟 DOM 的差异,只更新需要更改的部分,而不是整个页面。

  5. 模板语法:Vue.js 的模板语法类似于 HTML,但具有更强大的功能。它包括条件渲染、循环、事件处理等。模板语法还支持计算属性和过滤器,允许开发者对数据进行处理和转换。

  6. 生态系统:Vue.js 拥有庞大的生态系统,提供了许多有用的插件和工具。这些插件可以帮助开发者更快速地构建应用程序,并提供路由、状态管理、表单验证、UI 组件等功能。

总而言之,Vue.js 是一个灵活、高效且易于使用的 JavaScript 框架,它使开发者能够构建现代化的用户界面,并享受到组件化、响应式和虚拟 DOM 带来的便利。

2.Vue.js的特点

  • 轻量级, 体积小是一个重要指标。Vue.js压缩后有只有20多kb(Angular压缩后56kb+,React压缩后44kb+)
  • 移动优先。更适合移动端, 比如移动端的Touch事件
  • 易上手,学习曲线平稳,文档齐全
  • 开源,社区活跃度高

3.Vue.js的安装

vue.js官网:

Vue.jsVue.js - The Progressive JavaScript Frameworkicon-default.png?t=N7T8https://v2.cn.vuejs.org/

也可以直接引入,版本号为:

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>

 4.Vue.js入门

第一个vue实例:

  • 创建一个HTML文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue学习</title>
</head>
<body>
 
</body>
</html>
  • 引入Vue.js

<script src="../js/vue.js"></script>

  • 创建根节点
   <div id="app">

    </div>

  • 初始化Vue实例,绑定根节点

 <script>

       // 第三步:初始化vue实例,绑定根节点

      var app= new Vue({

        el: "#app",

        data: {

          msg: "第一个vue实例!",

        },

      })

    </script>

  • 完整代码
<!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>

    // 第一步:引入vue.js

    <script src="../js/vue.js"></script>

  </head>

  <body>

    // 第二步:创建根节点

    <div id="app">

    </div>

    <script>

       // 第三步:初始化vue实例,绑定根节点

      var app= new Vue({

        el: "#app",

        data: {

          msg: "第一个vue实例!",

        },

      })

    </script>

  </body>

</html>

  • vue实例常用到的构造选项

常用的构造选项:

选项说明
el

唯一根标签,决定Vue实例会管理哪一个DOM节点

data

Vue实例对应的数据对象

methods

定义Vue实例的方法,可以在其他地方调用,也可以在指令中使用

computed

定义Vue实例的计算属性,可以在其他地方调用,也可以在指令中使用,本质是一个属性而不是一个函数,在调用时不用加小括号

components

定义Vue实例的子组件

filters

定义Vue实例的过滤器

watch

监听数据变化,观察和响应 Vue 实例上的数据变动

二、基础语法指令

1、v-if

v-if是Vue.js的条件语句,v-if指令用于条件性地渲染一块内容,这块内容只会在指令的表达式返回 true 值的时候被渲染。特别注意的是,v-if所关联的是Vue.js的动态变量。

        v-if的使用一般有两个场景:

       1.通过条件判断展示或者隐藏某个元素或者多个元素;

        2.进行视图之间的切换。

<div id="app">
  <p v-if="showMessage">{{ message }}</p>
  <p v-else>Message is hidden.</p>
</div>

2、v-bind

v-bind指令用于实现单向动态数据绑定。

前面学习的v-text和v-html指令主要作用是将值插入到模板标签的内容当中。但是,除了标签内容需要动态来渲染外,某些标签的属性也希望动态来绑定,这时就可以使用v-bind动态绑定属性。

<div v-bind:id="dynamicId"></div>
 
//可以简写为
<div :id="dynamicId"></div>

3、v-on

v-on指令用来绑定事件监听器。在普通元素上,v-on指令可以监听原生的DOM事件(如click、dblclick、keyup、mouseover等)。

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
 
<div id="app">
    <button v-on:click="sayHi">点我</button>
</div>
 
<script src="../js/vue.js"></script>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            message:'Hello World'
        },
        methods:{
            sayHi:function(event){
                //'this'在方法里面指向当前Vue实例
                alert(this.message);
            }
        }
    });
</script>
</body>
</html>

4、v-for

v-for是Vue.js的循环语句,当需要遍历数组或对象时,常用的就是列表渲染指令v-for, 它需要结合着in或者of来使用。

<div id="app">
    <li v-for="(item,index) in items">
        {{item.message}}---{{index}}
    </li>
 
</div>

5、v-model

v-model指令主要用于实现表单元素和数据的双向绑定,通常用在表单类元素上(如input、select、textarea等)。所谓双向绑定,指的就是Vue实例中的data与其渲染的DOM元素上的内容保持一致,两者无论谁被改变,另一方也会相应的同步更新为相同的数据。

<template>
  <div>
    <input v-model="message" type="text">
    <p>您输入的是:{{ message }}</p>
  </div>
</template>

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

注:

v-model修饰符

v-model有3个修饰符,分别是lazy、number、trim

1、lazy 

v-model默认是在input事件中同步输入框中的内容,也就是一旦数据发生改变,对应的data中的数据也会发生改变。如果使用lazy修饰符,可以让数据在失去焦点或者回车时才会更新。

<input type="text" placeholder="搜索"  v-model.lazy='keyword' />

2、number

默认情况下,在输入框输入数字的时候,默认会把输入的内容当作字符串类型处理,如果加上number修饰符,就可以让你在输入数字的时候将内容转为number类型。

<input type="text" placeholder="搜索"  v-model.number='keyword' />

3、trim

trim修饰符可以去除输入内容左右两边的空格。

<input type="text" placeholder="搜索"  v-model.trim='keyword' />

三、组件

1.什么是组件

组件是前端开发中的重要概念,它代表着一个可独立使用、可重复利用的UI元素或模块。组件可以包含HTML、CSS和JavaScript代码,用于实现特定的功能或展示特定的内容。

2.为什么使用组件

  • 1、方便重复使用
  • 2、减少代码重复冗余
  • 3、便于多人协同开发
  • 4、有助于提高开发效率
  • 5、提升整个项目的可维护性

3、组件基础

创建组件格式:

Vue.component(tagName, options)

tagName 为组件名,options 为配置选项。注册后,我们可以使用以下方式来调用组件:

<tagName></tagName>

以下是一个在Vue.js中使用组件的简单例子:

假设我们有一个名为 "HelloWorld" 的组件,它可以在页面上显示一条简单的问候语。首先,在您的Vue.js项目中创建一个名为 "HelloWorld.vue" 的文件

<template>
  <div>
    <h1>{{ greeting }}</h1>
  </div>
</template>

<script>
export default {
  data() {
    return {
      greeting: 'Hello, World!'
    };
  }
};
</script>

接下来,在您的父组件中使用 "HelloWorld" 组件。假设您的父组件名为 "App",在App.vue文件中:

<template>
  <div>
    <hello-world></hello-world>
  </div>
</template>

<script>
import HelloWorld from './HelloWorld.vue';

export default {
  components: {
    HelloWorld
  }
};
</script>

在这个例子中,我们在App.vue文件中引入了HelloWorld.vue组件,并在components对象中声明了该组件。然后,在模板中使用了 <hello-world></hello-world> 标签来引用并渲染 HelloWorld 组件。

最后,确保将App.vue作为根组件在Vue实例中进行渲染。在main.js文件中:

import Vue from 'vue';
import App from './App.vue';

new Vue({
  render: h => h(App)
}).$mount('#app');

这样,当您运行Vue.js应用时,就会在页面上显示 "Hello, World!"。

四、vue-cli项目

vue-cli官方提供的一个脚手架,用于快速生成一个vue的项目模板;
  预先定义好的目录结构及基础代码,就好比咱们在创建Maven项目时可以选择创建一个骨架项目,这个估计项目就是脚手架,我们的开发更加的快速;

创建vue-cli项目:

vue init webpack myvue

说明:

  • Project name:项目名称,默认回车即可
  • Project description:项目描述,默认回车即可
  • Author:项目作者,默认回车即可
  • Install vue-router:是否安装vue-router,选择n不安装(后期需要再手动添加)
  • Use ESLint to lint your code:是否使用ESLint做代码检查,选择n不安装(后期需要再手动添加)
  • Set up unit tests:单元测试相关,选择n不安装(后期需要再手动添加)
  • Setupe2etests with Nightwatch:单元测试相关,选择n不安装(后期需要再手动添加)
  • Should we run npm install for you after the,project has been created:创建完成后直接初始化,选择n,我们手动执行;运行结果!

五、Axios异步通信(如何使用Axios)

1.什么是Axios

Axios 是一个基于 Promise 的 HTTP 客户端,用于发送 HTTP 请求。它可以在浏览器和 Node.js 环境中使用,并提供了一种简洁而强大的方式来与后端 API 进行通信。

Axios 具有以下特点和功能:

  • 1、支持浏览器和 Node.js:Axios 可以同时在浏览器和 Node.js 环境中使用,这使得它成为一个通用的 HTTP 客户端工具。
  • 2、支持 Promise:Axios 使用 Promise 来处理异步操作,这使得我们可以使用 then 和 catch 方法来处理请求的结果。
  • 3、提供简洁的 API:Axios 提供了一组简洁而直观的方法,例如 getpostputdelete等,使得发送不同类型的请求变得非常容易。
  • 4、自动转换数据:Axios 自动将响应数据转换为 JavaScript 对象,无需手动解析 JSON 数据。
  • 5、拦截请求和响应:Axios 提供了拦截器(interceptors)机制,可以在请求发送前和响应返回后对其进行拦截和处理。
  • 6、取消请求:Axios 支持取消请求的功能,可以在请求还未完成时取消请求,避免不必要的网络流量和资源浪费。

安装方法:

npm install axios

2、引入 Axios:

在需要使用的地方引入 Axios 模块:

import axios from 'axios';

3、发送 GET 请求:

使用 axios.get 方法发送一个 GET 请求,并处理返回的结果:

javascript
axios.get('/api/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

4、发送 POST 请求:

使用 axios.post 方法发送一个 POST 请求,并发送数据到服务器:

axios.post('/api/data', { name: 'John', age: 25 })
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

5、设置请求头:

可以使用 axios.defaults.headers 对象设置全局的请求头信息,或者在每个请求中单独设置请求头:

// 全局设置
axios.defaults.headers.common['Authorization'] = 'Bearer token';

// 单个请求设置
axios.get('/api/data', { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

6、拦截请求和响应:

Axios 提供了拦截器(interceptors)来在请求发送前和响应返回后对其进行拦截和处理。可以使用 axios.interceptors.requestaxios.interceptors.response 来设置请求和响应拦截器。

// 请求拦截器
axios.interceptors.request.use(config => {
  // 在发送请求之前做些什么
  return config;
}, error => {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 响应拦截器
axios.interceptors.response.use(response => {
  // 对响应数据做些什么
  return response;
}, error => {
  // 对响应错误做些什么
  return Promise.reject(error);
});

7、取消请求:

Axios 支持取消请求的功能,可以在请求还未完成时取消请求。可以使用 CancelToken 来创建一个取消令牌,并使用 cancel 方法来取消请求。

// 创建取消令牌
const source = axios.CancelToken.source();

// 发送请求并传入取消令牌
axios.get('/api/data', {
  cancelToken: source.token
})
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    if (axios.isCancel(error)) {
      console.log('请求已被取消', error.message);
    } else {
      console.error(error);
    }
  });

// 取消请求
source.cancel('请求取消的原因');

六、router路由

1.router路由是什么

Vue Router是Vue.js官方提供的路由管理器,用于构建单页面应用(SPA)。它通过将不同的组件映射到不同的URL,实现了前端路由的功能。

Vue Router的主要功能包括:

  • 路由导航:Vue Router允许你定义不同的路由,并在用户点击链接或执行程序化导航时进行路由跳转。通过使用路由导航功能,你可以在不刷新页面的情况下,动态地加载和切换不同的组件。

  • 嵌套路由:Vue Router支持嵌套路由,即一个路由可以包含子路由。这使得你可以更好地组织和管理你的应用程序结构,将不同的组件划分为更小、更模块化的部分。

  • 路由参数:Vue Router允许你定义动态路由参数,通过在路由路径中使用占位符来接收参数。这样,你可以根据不同的参数值,显示和处理不同的内容。

  • 路由守卫:Vue Router提供了路由守卫机制,可以在路由变化前后执行一些操作。你可以在路由跳转前进行权限验证、数据加载,也可以在路由跳转后进行一些清理操作。

  • 路由懒加载:Vue Router支持路由懒加载,即按需加载路由对应的组件。这样可以优化应用的性能,减少初始加载时的资源压力。

2.router路由的安装

 在项目中使用npm或yarn安装Vue Router,然后在main.js文件中导入和使用它:

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

Vue.use(VueRouter);

// 创建路由实例并定义路由配置
const router = new VueRouter({
  routes: [
    // 定义路由规则
    { path: '/', component: Home },
    { path: '/about', component: About },
    // ...
  ]
});

// 在Vue实例中使用路由
new Vue({
  router,
  render: h => h(App)
}).$mount('#app');

3.router路由使用

  1. 定义路由组件: 创建Vue组件,用于在不同的路由路径下进行渲染。在上面的代码示例中,HomeAbout就是路由组件。
    // Home.vue
    <template>
      <div>
        <h1>Home Page</h1>
        <!-- 页面内容 -->
      </div>
    </template>
    
    // About.vue
    <template>
      <div>
        <h1>About Page</h1>
        <!-- 页面内容 -->
      </div>
    </template>

  2. 配置路由规则: 在路由实例的routes选项中定义路由规则,指定URL路径对应的组件。
    javascript
    const router = new VueRouter({
      routes: [
        { path: '/', component: Home },    // 根路径
        { path: '/about', component: About },    // 关于页面
        // ...
      ]
    });

  3. 在模板中使用路由链接: 使用<router-link>标签在模板中创建路由链接,实现页面之间的导航。
    <!-- 在模板中使用路由链接 -->
    <router-link to="/">Home</router-link>
    <router-link to="/about">About</router-link>

  4. 在组件中使用路由视图: 使用<router-view>标签在组件中定义路由视图的位置,当路由路径匹配时,对应的组件将在此处渲染。
    <!-- 在组件模板中使用路由视图 -->
    <template>
      <div>
        <!-- ...其他组件内容... -->
        <router-view></router-view>
      </div>
    </template>

  5. 5.路由导航和参数获取: 在组件内部,可以使用$router对象进行路由导航,也可以通过$route对象获取当前路由的参数和信息。

    // 在组件方法中进行路由导航
    methods: {
      goToAboutPage() {
        this.$router.push('/about');
      }
    }
    
    // 访问当前路由的参数和信息
    mounted() {
      console.log(this.$route.params.id);    // 获取路由参数
      console.log(this.$route.query.page);   // 获取查询参数
    }

    以上是一些基本的路由使用示例,可以根据具体需求和业务逻辑进行进一步的配置和扩展。

七、实操项目


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值