vue2.0从入门到入坑

1.接触vue

从原生js、jq到接触vue,刚开始感觉真的非常不习惯,写html的时候,我就不习惯标签上大量的class,这下到vue,感觉更爆炸了,标签上全是指令,甚至还有逻辑,一度感到很暴躁,但是,深入接触之后,才发现vue的魅力。
为什么感觉反差很大呢?因为以前用js、jq都是直接操作DOM来进行一系列的操作,基本上写js、jq最多的就是document.getElementById()或者$()这样的选择元素了,但是vue基本上不需要你进行各种各样的DOM操作,因为vue是以数据驱动的,基本上所有的页面上的改变都是基于数据的变化,不过偶尔也需要去操作DOM,刚开始不怎么了解数据驱动,但是接触了之后,发现数据驱动真的是太美妙了啊,根本不需要进行DOM的操作,只需要对数据进行操作,页面就会发生响应,感觉就像打开了新世界的大门一样。

2.vue的安装

# 全局安装 vue-cli
$ npm install --global vue-cli
# 创建一个基于 webpack 模板的新项目
$ vue init webpack my-project
# 安装依赖,走你
$ cd my-project
$ npm install
$ npm run dev

这是官网的命令行安装工具.
安装之后目录是这样的:
vue2.0从入门到入坑_第1张图片
build和config都是webpack的配置文件,node_modules是项目的各种依赖包,src一般用来放项目的css、js、vue等文件。

我的文件目录是这样的:
vue2.0从入门到入坑_第2张图片
resource用来放置psd、标注图,src下的common用来放置需要被引入的字体图标、js、scss文件,components来放置单文件组件.

下面来介绍各种文件的作用:

  1. .babelrc是用来对es6语法进行转义.
  2. .gitignore是不需要被git上传的文件.
  3. package.json 项目的描述目录,里面包括了项目的开发依赖和运行依赖
  4. .editorconfig是代码书写格式

Vue的基本语法

1 . 插值

<span>{{ msg }}span>

msg可以是data中的值,也可以是计算属性返回的值.在插值中也可以写简单的表达式.

2 . v-bind 指令

这个指令在vue中用的非常多,所以经常简写为:,一般用来绑定属性,比如class,可以这样写:

:class="msg">// msg为data中的值或者为计算属性

也可以这样写:

:class="{active: isActive}">

这样class的值就由isActive决定,如果isActive为true,则class为active

甚至可以写一个表达式:

:class="{active: isActive===1}">

3 .计算属性

计算属性一般都是像下面这样:

computed: {
    say() {
        return 'fzz' + this.msg;
    }
}

写在computed之内,并且要返回一个值,这样就可以在插值中或者v-bind指令中调用.

4 .v-on

这个指令和addEventListener类似,可以用来监听事件,一般用@来简写,比如:

<span @click="do">span>

这样当点击span之后就会调用do方法

另外,@click后面还可以带参数,比如:

<span @click.stop="do">span>

这样click事件就不会冒泡,其他的参数还有prevent,once等等

5.methods

methods在组件中可以用来定义一些方法:

methods: {
    hello() {
        alert('hello');
    }
}

方法一般是在事件中被调用,不过也可以在v-show,v-if等指令中调用.

6 .v-if,v-show

v-if可以根据条件来判断是否渲染这个元素,v-show则是元素已经被渲染,通过style.display来控制是否显示这个元素.

<span v-if="active">span>
<span v-show="active">span>

也可以在后面写表达式或者计算属性

if="1===2">
if="flag">

computed: {
    flag() {
        return this.msg === 'haha';
    }
}

7.filters过滤

过滤器一般用来对{{ }}中的值进行过滤,例如

<span>{{ msg | upper }}span>
filters: {
    upper(msg) {
        return msg.toString().toUpperCase();
    }
}

upper中的msg代表被过滤的值.

8.v-for遍历

v-for可以对数据进行遍历,从而渲染元素,例如:

<ul>
    <li v-for="item in items">li>
ul>
data() {
    return {
        items: [1,2,3]
    }
}

也可以这样:

  • item in 10>li> ul>

这样可以渲染出10个li

还可以这样:

<template v-for="item in items">
    <h2>curryh2>
    <p>curry is very cool!p>
template>
data() {
    return{
        items: [1,2,3]
    };
}

这样用template充当容器,最后渲染出的结果并不会包含template元素

以上就是vue的基本语法了

你可能感兴趣的:(vue)