Vue2知识点

注意:笔记内容来自网络

1Vue指令

指令是指:带有v-前缀的特殊标签属性

1.1 v-html

  • v-html(类似 innerHTML)

    • 使用语法:<p v-html="intro">hello</p>,意思是将 intro 值渲染到 p 标签中

    • 类似 innerHTML,使用该语法,会覆盖 p 标签原有内容

    • 类似 innerHTML,使用该语法,能够将HTML标签的样式呈现出来。

举例:

 展示:

1.2 v-show与v-if

1.3 v-else和v-else-if 

1.4 v-on 

 方式一:内联语句方式

 方式二:配置methods方式

 1.5 v-bind

将表达式的值赋值给属性

 举例:

1.6 v-for

常常用来遍历数组

 

 1.7 v-model

1.8 指令修饰符 

2 v-bind控制样式

3 计算属性

<div id="app">
    <h3>小黑的礼物清单</h3>
    <table>
      <tr>
        <th>名字</th>
        <th>数量</th>
      </tr>
      <tr v-for="(item, index) in list" :key="item.id">
        <td>{
   
   { item.name }}</td>
        <td>{
   
   { item.num }}个</td>
      </tr>
    </table>

    <!-- 目标:统计求和,求得礼物总数 -->
    <p>礼物总数:{
   
   { totalCount }} 个</p>
  </div>
  <script src="./vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        // 现有的数据
        list: [
          { id: 1, name: '篮球', num: 2 },
          { id: 2, name: '玩具', num: 2 },
          { id: 3, name: '铅笔', num: 5 },
        ]
      },
      computed: {
        // 计算属性,计算礼物总数
        totalCount() {
         return this.list.reduce((sum, item) => sum + item.num, 0)}
          
      }
    })
  </script>

this.list.reduce((sum, item) => sum + item.num, 0)}代码解释:这是遍历数组,对里面数据求和,其中0表示初始值,sum表示每次计算的值,item表示数组的每一项。

computed与methods区别?

computed具有缓存特性,可以提升性能。

 假设页面中多处需要计算数值,如果采用计算属性,只要计算一次值,如果采用methods的话需要,计算多次。

计算属性的完整写法

4 字符串从常用操作

字符串常用操作

5 watch侦听器

 

简单写法

 

完整写法

 

 6 vue的生命周期

 7 图表设计

以创建饼图为例:(不同图片可以率有区别,具体可以参考文档)

步骤一:下载 - Apache ECharts

 

步骤二:在项目中导入echarts.js

步骤三:设计容器来显示图表

步骤四:创建vue实例,在mounted钩子中导入代码。

var myChart = echarts.init(document.getElementById('main'));
     option = {
  backgroundColor: '#2c343c',
  title: {
    text: 'Customized Pie',
    left: 'center',
    top: 20,
    textStyle: {
      color: '#ccc'
    }
  },
  tooltip: {
    trigger: 'item'
  },
  visualMap: {
    show: false,
    min: 80,
    max: 600,
    inRange: {
      colorLightness: [0, 1]
    }
  },
  series: [
    {
      name: 'Access From',
      type: 'pie',
      radius: '55%',
      center: ['50%', '50%'],
      data: [
        { value: 335, name: 'qq' },
        { value: 310, name: 'Email' },
        { value: 274, name: 'Union Ads' },
        { value: 235, name: 'Video Ads' },
        { value: 400, name: 'Search Engine' }
      ].sort(function (a, b) {
        return a.value - b.value;
      }),
      roseType: 'radius',
      label: {
        color: 'rgba(255, 255, 255, 0.3)'
      },
      labelLine: {
        lineStyle: {
          color: 'rgba(255, 255, 255, 0.3)'
        },
        smooth: 0.2,
        length: 10,
        length2: 20
      },
      itemStyle: {
        color: '#c23531',
        shadowBlur: 200,
        shadowColor: 'rgba(0, 0, 0, 0.5)'
      },
      animationType: 'scale',
      animationEasing: 'elasticOut',
      animationDelay: function (idx) {
        return Math.random() * 200;
      }
    }
  ]
};
                myChart.setOption(option);
            }

 步骤五:更新图表(只需要更改data数据,图表就会跟着改变)

 // 更新图表
            this.myChart.setOption({
              // 数据项
              series: [
                {
                  // data: [
                  //   { value: 1048, name: '球鞋' },
                  //   { value: 735, name: '防晒霜' }
                  // ]
                  data: this.list.map(item => ({ value: item.price, name: item.name}))
                }
              ]
            })

总代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../echarts.min.js"></script>
    <script src="../vue.js"></script>
</head>
<body>
    <div id="main" style="width: 800px;height:400px;"></div>
    <script>
        var app = new Vue({
            el: '#main',
            
   mounted() {
    var myChart = echarts.init(document.getElementById('main'));
     option = {
  backgroundColor: '#2c343c',
  title: {
    text: 'Customized Pie',
    left: 'center',
    top: 20,
    textStyle: {
      color: '#ccc'
    }
  },
  tooltip: {
    trigger: 'item'
  },
  visualMap: {
    show: false,
    min: 80,
    max: 600,
    inRange: {
      colorLightness: [0, 1]
    }
  },
  series: [
    {
      name: 'Access From',
      type: 'pie',
      radius: '55%',
      center: ['50%', '50%'],
      data: [
        { value: 335, name: 'qq' },
        { value: 310, name: 'Email' },
        { value: 274, name: 'Union Ads' },
        { value: 235, name: 'Video Ads' },
        { value: 400, name: 'Search Engine' }
      ].sort(function (a, b) {
        return a.value - b.value;
      }),
      roseType: 'radius',
      label: {
        color: 'rgba(255, 255, 255, 0.3)'
      },
      labelLine: {
        lineStyle: {
          color: 'rgba(255, 255, 255, 0.3)'
        },
        smooth: 0.2,
        length: 10,
        length2: 20
      },
      itemStyle: {
        color: '#c23531',
        shadowBlur: 200,
        shadowColor: 'rgba(0, 0, 0, 0.5)'
      },
      animationType: 'scale',
      animationEasing: 'elasticOut',
      animationDelay: function (idx) {
        return Math.random() * 200;
      }
    }
  ]
};
                myChart.setOption(option);
            }
        })
    </script>

</body>
</html>

8 工程化开发

 

 

 9 普通组件注册与使用        

 9.1局部注册

 9.2局部注册组件使用

 9.3 全局注册

 9.4 全局注册组件使用

在任意组件上都可以直接使用。

9.5注册方式选择

10 组件样式冲突解决

解决方法: 在style标签加上scoped

 11 data选项必须是一个函数

 12 组件之间通信

 

12.1 父子通信

 12.1.1 父传子

12.1.2 子传父

12.1.3 props详解

 

 

 12.2 非父子之间通信

12.2.1 事件总线方式

步骤一:创建一个大家都可以访问的事件总线 

步骤二:设置接收方(监听方) 

步骤是:设置发送方

 12.2.2 provide-inject方式

provide:提供

inject:添加

 13 ref与$refs    

   14 $nextTick

 15 自定义指令

   

全局注册应该定义在main.js中,局部注册定义在需要用到的组件中 

16插槽 

 16.1 默认插槽

 

 16.2插槽的后备内容

16.3 具名插槽

 

 16.4作用域插槽

17 路由基本使用 

 

18 路由模块封装 

        

步骤一:在src下创建router文件夹,然后在router下创建.js文件。

 步骤二:在main.js导入

 19 router-link

20 声明式导航跳转传参 

20.1 方式一

在函数中调用需要多加一个this

20.2 方式二

20.3 两种方式区别

21 路由重定向 

21.1 404 重定向

 22 路由模式

23 编程式导航-基本跳转 

23.1 方式一

23.2 方式二 

23.3 传参

23.3.1 方式一

 

23.3.2 方式二

 

 24 配置二级路由

25 返回到上一个路由

 26 缓存组件        

 

 27 VueCli 自定义创建项目

 

 28 ESlint代码规范及手动修复

ESLint:是一个代码检查工具,用来检查你的代码是否符合指定的规则(你和你的团队可以自行约定一套规则)。在创建项目时,我们使用的是 JavaScript Standard Style 代码风格的规则。

建议把:JavaScript Standard Style 看一遍,然后在写的时候, 遇到错误就查询解决。

手动修复

根据错误提示来一项一项手动修正。

如果你不认识命令行中的语法报错是什么意思,你可以根据错误代码(func-call-spacing, space-in-parens,.....)去 ESLint 规则列表中查找其具体含义。

打开 ESLint 规则表,使用页面搜索(Ctrl + F)这个代码,查找对该规则的一个释义。

29 通过eslint插件来实现自动修正

 

30 Vuex

 

30 vuex 的使用 - 创建仓库

3 创建仓库 store/index.js

// 导入 vue
import Vue from 'vue'
// 导入 vuex
import Vuex from 'vuex'
// vuex也是vue的插件, 需要use一下, 进行插件的安装初始化
Vue.use(Vuex)

// 创建仓库 store
const store = new Vuex.Store()

// 导出仓库
export default store

4 在 main.js 中导入挂载到 Vue 实例上

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

Vue.config.productionTip = false

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

30.1核心概念 - state 状态

30.1.1通过$store访问

 30.1.2通过辅助函数 - mapState获取 state中的数据

        

30.2 开启严格模式

 

30.3 核心概念-mutations

 

30.4带参数的 mutations

 

30.5 辅助函数- mapMutations

 

31核心概念 - actions

 31.1辅助函数 -mapActions

32 核心概念 - getters

 33 小结

34核心概念 - module

 

 34.1 获取模块内的state数据

34.2 获取模块内的getters数据

 34.3获取模块内的mutations方法

 34.4获取模块内的actions方法

 34.5 小结

35 企业规范目录

36 vant组件库 

组件库网址:Vant 2 - 轻量、可靠的移动端组件库 (vant-ui.github.io)

 vue2的话移动端会选择vant2,vue3会选择vant4.

36.1安装与导入

Vant 2 - 轻量、可靠的移动端组件库 (vant-ui.github.io)

 可以进行全局导入,与按需导入,但是推荐按需导入,这样文件大小比较小,加载速度比较快。

全部导入

 按需导入

当然一般我们不会把按需导入直接注册在main.js,我们会进行文件抽离。

 37 基于postcss插件实现项目vw适配

Vant 2 - 轻量、可靠的移动端组件库 (vant-ui.github.io)

步骤一:安装插件

步骤二:添加配置 

在根目录下创建postcss.config.js,注意不是src

// postcss.config.js
module.exports = {
  plugins: {
    'postcss-px-to-viewport': {
      viewportWidth: 375,
    },
  },
};

猜你喜欢

转载自blog.csdn.net/m0_75165868/article/details/142309578