Vue入门

一. 简介Vue

官方文档地址:https://cn.vuejs.org/index.html

Vue.js为渐进式JavaScript框架
Vue框架为MVVM框架, 即数据源与控件双向绑定, 在实际项目中频繁操作DOM节点, 仅仅只需要控制数据源数据即可,不用考虑页面渲染.

二. Vue的基本知识

  1. Vue 2.x 框架的常用点(模板语法, 条件渲染, 列表渲染)
    简介Vue的Hello Word应用
    模板语法, v-bind属性绑定, 事件绑定
    条件渲染, 列表渲染, Class与Style的绑定

  2. Vue 2.x 核心技术(vue-router, vuex)
    Vue-cli工具, Vue代码规范
    Vue组件的调试方法
    Vue-router, vuex

  3. 集成Vue2.x
    介绍workflow工作流
    单页面Demo(动态表单,列表动态展示)
    使用Cli工具,开发常见的应用组件

三. Vue开发环境

IDE: WebStrom Or VS Code
Node.js: Node环境, NPM环境 (NVM, 多版本Node环境管理)
测试环境: Chrome, Vue.js
工程环境: Vue.js

终端输入:
npm install vue-cli
完成之后 输入
vue --version
进行查看是否安装成功Vue环境

四. 创建第一个Vue项目

代码如下

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" media="screen" href="main.css" />
    <script src="main.js"></script>
    <style>
        .bg {
            color: cyan;
            font-size: 30px;
            font-weight: 200;
            background: magenta;
        }
    </style>
    <script src="https://cdn.bootcss.com/vue/2.6.3/vue.min.js"></script>
</head>

<body>
    <div id="aa" class="bg">
        <div class="a">{{msg}}</div>
        <div class="a">{{msg}}</div>
    </div>
    <script>
        new Vue({
            el: '#aa',
            data: {
                msg: "This is Vue"
            }
        })
    </script>

</body>

</html>

模板语法:
Vue的文件结构(template, script, style);
在标签中可使用插值语法{{msg}}, 数据, 以及JS表达式,

模板语法包含插值, 指令(指令缩写);
v-on:click 可以简写为@click
v-if
:href

计算属性与监听器
计算属性: computed
数据联动, 当计算属性中的所有的数据均发生变化的时候,响应此方法.
能监听多个变量,但是该变量必须是在Vue中的实例里.

computed: {
    msg1: function() {
        return 'computed' + this.msg;
    }
},

监听器: watch
仅仅是监听设备中的所有监听Vue中的属性值, 类似于iOS中的KVO.
异步场景
通常只监听一个变量

// 监听并观察data的属性数据变化,当方式变化的时候, 属性变化新,旧值
watch: {
    msg: function(newVal, oldVal) {
        console.log(newVal);
        console.log(oldVal);
    }
},

条件渲染
v-if,
v-else,
v-else-if,
v-show,

// v-if, v-else, v-else-if, v-show之后的为JS表达式
<div v-if="count > 10">{{msg2}}</div>
<div v-else="count < 5">{{msg3}}</div>
<div v-show="count == 10">Count的值为{{count}}</div>

列表渲染
v-for

// list为数据源, item为遍历的数据元素, :key则是标记了此条数据的Tag值
<div v-for="(item, index) in list" :key="index">
    <div>{{item}}</div>
</div>

v-for与v-if结合使用

<div v-for="(item, index) in list" :key="index" v-bind:style="styleTest">
    姓名为:{{item.name}} 年龄为:{{item.age}}
</div>

v-for的高阶用法

Class与Style绑定

// 可以简写去掉v-bind
<div v-for="(item, index) in list" :key="index" :style="styleTest">
    姓名为:{{item.name}} 年龄为:{{item.age}}
</div>
// Class要绑定多个样式使用[]进行加类的操作
<div class="['aa', 'bb']"></div>

Vue-cli工具
快速创建Vue工程

// 在终端中进入到指定的文件夹目录
// 使用vue create demo 进行创建对应的Vue工程
// 完成之后进入demo文件夹下
// 使用 npm run serve进行运行此项目

// 或者使用vue ui进行创建新的Vue工程项目

工程化项目的目录

// 使用vue ui来进行创建Vue工程;
// 使用vue ui工具可以对Vue项目来进行编译运行在浏览器中

五. Vue组件化思想

组件化顾名思义, 为组件是独立的,组件可复用的,整体化的组件.
组件化的目的: 实现功能模块的复用,
高执行效率,
开发单页面复杂应用,可以将复杂的业务逻辑进行拆分

如何拆分复杂的业务逻辑
组件的代码不超过300行,
复用原则,
业务复杂性原则,

vue-router:
使用vue create命令进行创建Vue工程
vue组件创建

<template>
  <div>This is a component</div>
</template>

<script>

    export default {
    
    };
</script>

<style scoped>

</style>

在vue-router文件中进行相对应的组件配置:

    {
      path: '/new',
      name: 'new',
      component: newPage,
    },

最终在App.vue中进行配置点击链接跳转组件

<router-link to="/new">New</router-link>

组件间的状态管理
Vuex
多组件的混合使用,多页面,复杂业务(vue-router)
组件间的传参,消息,事件管理(props, emit/on, bus)
vuex单向数据流概念,
view->actions->state->view

vuex使用场景:
多个试图依赖于同一状态(例:菜单导航);
来自不同试图的行为需要变更同一状态(例:评论弹幕);

Vuex是为Vue.js开发的状态管理模式,特点是组件状态集中管理;并且组件的状态改变遵循统一的规则;

使用vue-cli工具创建的Vue工程中,勾选使用Vuex后会在工程目录中生成一个store.js的文件;

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

Vue.use(Vuex);

export default new Vuex.Store({
  // 管理属性值
  state: {
    count: 0,

  },
  // 修改属性值方式
  mutations: {

    // 无参数修改Store属性值方法,建议先持有当前Vuex中的state使用临时变量进行修改
    increase(state) {
      const tmpState = state;
      tmpState.count += 1;
    },

    // 含参数修改Store属性值方法
    sub(state, value) {
      const tmpState = state;
      tmpState.count -= value;
    },

  },
  actions: {

  },
});

Vuex的简单实用

// 在组件中使用
import store from '@/store'; // 引入Store头文件
// 使用以下代码进行调用(increase则为store中mutations定义的方法名)
store.commit('increase');

Chrome中使用Vue插件进行Debug查看Vuex中的状态:


查看Vuex状态

六. Vue项目Debug

console.error('This is error log');   // 错误日志输出
console.log('This is normal log');    // 普通日志输出
debugger;                             // 加入断点
alert('This is alert dialog');        // 弹框显示
// 断点后可以直接调用方法
call() {
  console.log('Call Method');
},
// 绑定Window全局变量之后进行Debug 
// 页面开始挂载的时候的生命周期方法
mounted() {
    window.vue = this;
},

七.Vue项目参考

使用Chrome查看相对应的web页面的源码, 以及CSS样式


调试工具进行查看

调试小技巧
Chrome中调试查看DOM结构;
Header, Body里面看js/css引用, 搜索相对应的js库;
查看sources, network中的js, 使用反编译或者Debug进行调试;

八.Vue项目的集成

使用Scss进行CSS样式的编写

<style lang="scss">
.head {
  font-size: 40px;
  color: steelblue;
}
.cellNormal {
    height: 40px;
    font-size: 40px;
    background-color: cyan;
    &.active {
        color: magenta;
    }
}
.cellHighLigth {
    background-color: blue;
}
</style>

九. Vue项目打包部署

// 进入到Vue项目中使用如下命令进行打包
npm run build

注: 在Vue项目中需要配置webpack打包工具的配置,可以事先创建一个vue.config文件进行相对应的打包配置;
参考文档: https://cli.vuejs.org/zh/
文档中的webpack打包有相关的配置信息

静态网页发布:

// 进入工程,使用以下命令
npm run build
// 执行完此命令之后, 会生成一个dist文件夹,将文件夹中的内容放到Server中根目录下
// 即可完成部署
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容

  • 基础知识: vue的生命周期: beforeCreate/created、 beforeMount/mounted...
    Jackson_yee_阅读 360评论 0 0
  • 1. Vue概述 1.1 Vue介绍 Vue 是一套用于构建用户界面的渐进式框架。 1.2 Vue核心思想 双向数...
    nimw阅读 537评论 0 4
  • 从上周三到这周五,我用了9天入门vue,做了一个todolist,这速度着实不算快,但是对于一个编程新手来说却也是...
    madpluto阅读 3,358评论 1 9
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,124评论 0 6
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 4,986评论 0 29