vue基础入门的那些事

vue.js 轻量级的MVVM框架
数据驱动+组件化的开发

一、基本指令
1、

v-if是条件渲染指令,它根据表达式的真假来删除和插入元素,它的基本语法如下:
v-if="expression"

2、

v-show根据表达式的真假来删除和插入元素
v-if="expression"

3、

可以用v-else指令为v-ifv-show添加一个“else块”。
v-else元素必须立即跟在v-ifv-show元素的后面——否则它不能被识别。
v-ifv-else连用时,不执行else时,else里面的HTML不渲染
v-showv-else连用时,不执行else时,else里面的HTML渲染,只是display:none隐藏了

4、

v-for="item in items" items是一个数组,item是当前被遍历的数组元素。
总是key配合v-for使用

<ul>
       <li v-for="todo in todos" :key="todo.id">
           {{ todo.text }}
       </li>
   </ul>

5、

v-bind 指令可以在其名称后面带一个参数,中间放一个冒号隔开,这个参数通常是HTML元素的
特性(attribute--专门用来绑定属性),例如:v-bind:width=""
v-bind:argument="expression"
简写形式如下:
:argument="expression"
另外可以绑定类名
用法1:
:class="[className1,className2,className3]" 其中,className1、2、3是数据 放在data中的
用法2:
:class="{className1:true,className2:false}" 其中,className1、2是真正的类名
用法3:
:class="json" json是data里面的json
可以绑定style
:style="[c]" c是json形式的数据
:style="[c,d]" c和d都是json形式的数据,多个样式的写法
:style="json" json是data中的数据

6、

v-on指令用于给监听DOM事件,它的用语法和v-bind是类似的,例如监听<a>元素的点击事件:
<a v-on:click="doSomething">
v-on 有简写形式,如下:
<a @click="doSomething">
<colgroup><col style="width: 614px;"></colgroup>

阻止冒泡:
@click="doSomething($event)"
1、ev.cncelBubble=true
2、@click.stop
阻止默认事件:
@contextmenu="doSomething($event)"
1、ev.preventDefault()
2、@contextmenu.prevent
键盘事件:
@keydown
@keyup
1)keydown.left/right/up/down
2)keydown.键值码

7、模板

{{msg}} 数据更新模板变化----->v-text="msg" 后面的方法可以防止闪烁
{{*msg}} 数据只绑定一次
{{{msg}}} 将HTML转译输出----->v-html="msg" 后面的方法可以防止闪烁,前面的方法v2.0已经删掉了

8、过滤器:过滤模板数据 系统提供一些过滤器:

{{msg| filterA}}

{{msg| filterA | filterB}}

9、v-cloak 防止闪烁( 加载慢的时候出现{{}}标记 )

 用法:在style里面 [v-cloak]{ display:none }

 一般当到比较大的盒子属性里面

10、track-by="$index"
当v-for循环添加重复数据添加不上时,可以用这个

    <div id="box">
        <input type="button" value="添加" @click="add">
        <ul><li v-for="val in arr" track-by="$index"> {{val}} </li></ul>
    </div>
    <script>
        var vm=new Vue({
            data:{ arr:['apple','pear','orange'] },
            methods:{
                add:function(){ this.arr.push('tomato'); }
            }
        }).$mount('#box');
    </script>

二、交互

1、get
获取一个普通文本数据:

        this.$http.get('a.txt').then(function(res){
            alert(res.data);
        },function(res){
            alert(res.status);
        });
        给服务发送数据:√
        this.$http.get('get.php',{
            a:1,
            b:2 
        }).then(function(res){
            alert(res.data);
        },function(res){
            alert(res.status);
        });

2、post

 this.$http.post('post.php',{
        a:1,
        b:20
    },{
        emulateJSON:true
    }).then(function(res){
        alert(res.data);
    },function(res){
        alert(res.status);
    });

3、jsonp

三、项目实践
1、简介

vue-cli脚手架 搭建基本代码框架,写好基本的代码(包括:目录结构、本地调试、代码部署、热加载、单元测试)
vue-router 官方插件管理路由
vue-resource ajax通信
webpack 构建工具
es6 + eslint eslint:es6代码风格检查工具

2、启动项目

1、node -v检查有没有安装node,没有的话,安装
2、npm install -g vue-cli 安装脚手架
3、vue 查看有哪些指令(可以直接跳到第4步)
4、vue list 查看可用模板
5、vue init webpack my-project 通过模板创建项目(my-project名字随便取)
6、ls 查看当前目录下文件是否创建成功
7、cd xxx(创建的目录名) 进入当前目录
8、npm install 创建依赖的代码库node_modules
9、npm run dev 启动项目
10、本地浏览器会新打开一个窗口,地址是:localhost:8080

3、目录介绍

1、build和config目录 都是webpack配置相关的东西
2、node_modules目录 npm install 安装的依赖代码库
3、src目录 存放项目源码
4、static目录 存放第三方静态资源的
----------------------分割线 上面是目录 下面是文件------------------------
5、.babelrc文件 将es6代码转成es5代码
6、.editorconfig 编辑器的配置
7、.eslintignore 忽略语法检查的目录文件
8、.eslintrc.js eslint的配置
9、.gitignore git会忽略的代码,不会提交到代码库当中
10、index.html 入口html文件
11、package.json 项目的配置文件

4、一些重要函数

i.钩子函数(1.0和2.0有差异) ----相当于回调函数,一个挂东西的地方,可以写自己的代码,执行相应的操作

beforeCreate  组件实例刚刚被创建,属性都没有
created       实例已经创建完成,属性已经绑定
beforeMount   模板编译之前
mounted       模板编译之后,代替之前ready
beforeUpdate  组件更新之前
updated       组件更新完毕
beforeDestroy 组件销毁前
destroyed     组件销毁后
Image.png

ii.计算属性的使用: 主要是用来缓存,只要依赖的属性没有发生变化,computed里面的计算属性就不会重新计算。

computed:{
    b:function(){    //默认调用get
        return 值
    }
}
--------------------------
computed:{ //完整形式
    b:{
        get:
        set:
    }
}
* computed里面可以放置一些业务逻辑代码,一定记得return    注意区别 methods

5、vue实例的简单方法

var vm=new Vue({
     el:'#box',
     data:{
         a:1 
     },
     aa:11
});


i.vm.$el就是dom元素

vm.$el.style.background='red';

ii.vm.$data 就是上面的data对象

iii.手动挂载

vm.$mount('#box');可以替代第一行的代码

var vm=new Vue({

     data:{

         a:1

     },

     aa:11

}).$mount('#box');

iv.访问自定义属性————vm.$options

console.log(vm.$options.aa);

v.查看现在数据的状态

vm.$log();

6、vue过渡(动画)

本质:css3的animation和transtion

7、组件

<div id="box">
    <aaa></aaa>
</div>

i.全局组件

var Aaa=Bue.extend({

     data(){

        return{

          msg:'这是标题'

        }

      },

      template:'<h3>{{msg}}</h3>'

});

Vue.component('aaa',Aaa);

组件里面放数据:

    data必须是函数的形式,函数必须返回一个对象(json)

ii.局部组件

   放到某个组件内部

var vm=new Vue({

    el:'#box',

    data:{

        bSign:true

    },

    components:{ //局部组件

        aaa:Aaa

    }

});

8、vue-loader

简单的目录结构:
|-index.html
|-main.js 入口文件
|-App.vue vue文件
|-package.json 工程文件(项目依赖、名称、配置)
|-webpack.config.js webpack的配置文件

8、vue-cli (vue 脚手架)————提供好基本项目结构

基本使用流程:

1、安装npm install vue-cli -g
验证是否已经安装vue --version
2、生成项目模板
vue init <模板名> 本地文件夹名
3、进入到生成的目录里面
执行npm install
4、npm run dev

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

推荐阅读更多精彩内容

  • 下载安装搭建环境 可以选npm安装,或者简单下载一个开发版的vue.js文件 浏览器打开加载有vue的文档时,控制...
    冥冥2017阅读 6,037评论 0 42
  • 目录 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 UI组件 element★13489 ...
    余生社会阅读 19,747评论 7 233
  • Vue是现在最流行的前端框架之一,而且相对于其他两个框架React和Angular来说也更加易学,而且它的作者是国...
    乐百川阅读 3,459评论 0 9
  • 早上七点二十分,刚刚喝过一杯咖啡,在听《Dreamer》这首歌。 五点半醒来,坐在还有些昏暗的客厅里,电脑屏幕散着...
    仲璞阅读 162评论 0 0
  • 今天和一个聊过几次天的人,一起出去骑自行车,满是不舒服,别扭,和他没有太多聊得来的话题,确还要看他努力找话题,打破...
    可是我也会有雨天阅读 157评论 0 0