Vue学习笔记和代码记录
## 安装
* 直接引入链接:建议初学者使用;
* 通过node.js的NPM安装Vue;
* 通过node.js的NPM安装Vue-cli脚手架(推荐安装方式);
## 基础
### 数据类型
* 字符串:title: 'hello world';
* 数字:num:123;
* 数组:arrow: ['apple', 'banana','orange'];
* 对象:name: {firstName:'ming',lastName:'Li'};
* 布尔值:true/false;
### 模版数据绑定
* {{ xxx }}:模版解析;
* v-text:文本绑定;
* v-model:数据双向绑定;v-model.lazy:延迟对数据进行更新;
- v-model.number:对输入的数据字符串转为数字;
- v-model.trim:对数据进行裁剪,去除空格等
### 表单数据绑定
- checkbox:储存的数据类型是数组;
- radio:储存的数据类型是字符串;
- select:存储的数据类型是字符串;
### 标签属性
* v-bind:标签属性绑定,属于动态绑定,可以简写为:。绑定后的属性为变量,可以是字符串,数组或者是对象;
* v-if/v-if-else-if/v-else:条件渲染,如果成立则执行,不成立则注销;
* v-show:同样是条件渲染,不同的是不成立是隐藏而不是注销;
### 事件绑定
* 通过v-on:event="eventName"进行绑定,可简写为@:event="eventName";方法通过在methods里进行方法定义;
* 在v-on:event.midiflyer添加修改器;
* 自定义事件:v-on:diyEvent="eventName",通过$emit来触发自定义事件。`methods: {my-function () {this.$emit('diyEvent'), 参数}}`;
### 计算属性和数据监听
* 传值属性:props: ['xx','xx']。父子组件如果需要传值,必须要在props里进行定义;
* 事件属性:methods: {}。所有事件都在这里进行定义;很多情况下在执行事件时需要取消默认事件。function(e){e.preventDefault();};
* 计算属性:computed: {方法 () { return 方法 }};计算属性的优点:可以直接根据data的属性动态的更改(data中myValue的值变化会同步反映到计算属性里)(计算属性会缓存所依赖的那个值,直到那个值发生变化,否则不会重新取值)与方法调用的缺点:调用方法的时候才会更新,即使data中myValue的值没有变化,调用时依然会去重新取值。使用场景:在耗时、大量搜索的情况下使用,减少dom重复渲染的性能支出。
* 创建属性:created:function(){}。方法不需要手动调用,直接执行。
* 数据监听:watch: { 方法 () {}};
### 应用
#### 动态绑定class
* v-bind:class="{red:true}";
* v-bind:class={changeClass:changeClass};
* v-bind:class={active ? true : false}
## 组件
### 命名
* 不强制要求按照W3C规则进行命名,但最好遵循。例如:`my-template`;
* 不管组件是大驼峰还是小驼峰,在模版引用的时候一律要转为中横线的命名方式。例如:组件为`comName`,引用时为:`<com-name></com-name>`;在传递属性时名称也同样。
### 注册
* 全局注册:`Vue.component('my-template', {template: '...'});` html:`<my-template></my-template>`
* 局部注册:只在使用的场景进行注册。`var myTemplate = {template: '...'}; new Vue({..., components: {'my-template: myTemplate'}})`
### 模版解析
* 特殊标签下的模版需要注意,比如table、ol、ul、select等标签,使用`is`进行挂载。例如:`<table><tr is="my-tr"></tr></table>`;
* 推荐使用字符串模版:
+ `<script type="text/x-template">`;
+ javascript内联模版字符串;
+ vue组件;
* 组件中的data必须是函数。
### 组件组合
* 父组件通过prop进行向下传递;
* 子组件通过事件进行发送信息,子组件触发事件,父组件进行监听;
* 传值时要主要命名的选择和使用,使用props使用的驼峰式明显需要转变为对应的中横线式。`Vue.component('my-template', {props: ['myMessage'],template: '...'}); <my-template my-message="hello"></my-template>`
* 字面量语法和动态语法;
* slot插槽:父组件向子组件插入template模板,父子之间通过slot属性和name属性进行对应`<p slot="header">我是header</p><span slot="footer">我是footer</span>`;
* 动态组件:利用 `:is = ""` 进行组件的动态绑定,外层可以用内置组件keep-alive 来进行缓存;
### 总结
* 使用组件树设计项目,配置文件链接各个组件-命名转换,动态组件;
* 父组件向内传递属性-动态属性;
* 子组件向外发布事件;
* slot插槽传递模版 - 具名slot;
## 高级用法
### 动画:使用transition 内置组件,有css过渡和js过渡两种方式。
#### css过渡实现原理:给动画的不同阶段加上不同的class名称。
* 四个阶段:v-enter/v-enter-active/v-leave/v-leave-active;使用:`<transition name="fade"></transition>` .fade-enter/.fade-enter-active/.fade-leave/.fade-leave-active;
* 能够接受动画的元素有:v-show/v-if/动态组件加载;
* 通过mode="out-in"/"in-out"实现动画顺序;
* 对于多元素模版,如果使用的是同标签名,需要使用key来进行区分;
#### js过渡实现原理:通过定义不同的方法来实现动画。
不同方法名:
`
<transition
v-on:before-enter="beforeEnter"
v-on:enter="enter"
v-on:after-enter="afterEnter"
v-on:enter-cancelled="enterCancelled"
v-on:before-leave="beforeLeave"
v-on:leave="leave"
v-on:after-leave="afterLeave"
v-on:leave-cancelled="leaveCancelled">
...
</transition>
`
### 自定义指令
* 方法:主要有两种:局部定义和全局定义。
* 使用:inserted和bind是指令的两个配置属性,属性值是一个函数,所以用es6语法。讲inserted函数,,然后然后回到组件,处理el表示使用了指令的元素对象,还有一个binding对象,其中binding.value表示的是使用了指令元素的指令的值,可以是json,然后借这个json(里面放着css相关信息)所包含的数据来修改dom的样式。
### 插件
* vue-resource: 发送http请求
* vue-router: 前端路由
* 引入步骤:
+ 入口js文件 import from 插件
+ Vue.use(插件) 不过在模块环境中应当始终显式调用 Vue.use() :
## 相关概念
* MVC
* MVP
* MVVM
## 相关知识点
* Node.js
* NPM
* Mustache
* ECMAscript
* Javascript
* Ajax
## Vue全家桶
* vue.js
* vue-cli
* vue-router
* vue-axios
* vue-lazyload
## 打包工具
* Webpack
* Gulp
* Parcel
## 安装依赖
* Css-loader
* Sass-loader
* Vue-style-loader
* Superagent
## 踩坑
* 在开发过程中,如果修改了配置文件,需要重新启动,否则报错;
* 手写输入的拼写错误问题,一般会提示出来;
* 样式文件中的拼写错误,包括属性、值、图片名称,如果找不到也会报错,一般很难找到,所以出现报错的时候一定先要解决!!
* 使用webpack要进行loader依赖的安装;
* proxyTable 反向代理设置;
* 在组件中template节点下必须只有一个子节点;
* 如果采用webpack进行打包管理,如果数据中有需要在js里引用图片地址,需要使用`require()`的方式进行引用,否则不会被打包到静态文件目录里;
* 在组件使用时候先进行数据绑定;
* 在使用属性的时候一定记得要添加作用域,比如this;
* 在组件或者模版中使用sass或less文件,一定要在style标签上声明lang,否则报错没商量;
* 在组件开发过程中,如果需要传参一定记得定义并且在引用的地方调用;
## 参考资料
* [Vue官网](https://cn.vuejs.org/v2/guide/)
Vue学习笔记和代码记录的更多相关文章
- vue学习笔记-遗留问题记录
Node.js是什么?对node.js的理解 官网解释:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时. 这是一种通过JavaScript语言开发web服务端的东 ...
- Vue学习笔记-1
前言 本文不是Vue.js的教程,只是一边看官网Vue的教程文档一边记录并总结学习过程中遇到的一些问题和思考的笔记. 1.vue和avalon一样,都不支持VM初始时不存在的属性 而在Angular里 ...
- Vue学习笔记-2
前言 本文非vue教程,仅为学习vue过程中的个人理解与笔记,有说的不正确的地方欢迎指正讨论 1.computed计算属性函数中不能使用vm变量 在计算属性的函数中,不能使用Vue构造函数返回的vm变 ...
- vue学习笔记(八)组件校验&通信
前言 在上一章博客的内容中vue学习笔记(七)组件我们初步的认识了组件,并学会了如何定义局部组件和全局组件,上一篇内容仅仅只是对组件一个简单的入门,并没有深入的了解组件当中的其它机制,本篇博客将会带大 ...
- vue学习笔记(九)vue-cli中的组件通信
前言 在上一篇博客vue学习笔记(八)组件校验&通信中,我们学会了vue中组件的校验和父组件向子组件传递信息以及子组件通知父组件(父子组件通信),上一篇博客也提到那是对组件内容的刚刚开始,而本 ...
- vue学习笔记(十)路由
前言 在上一篇博客vue学习笔记(九)vue-cli中的组件通信内容中,我们学习组件通信的相关内容和进行了一些组件通信的小练习,相信大家已经掌握了vue-cli中的组件通信,而本篇博客将会带你更上一层 ...
- Vue学习笔记十三:Vue+Bootstrap+vue-resource从接口获取数据库数据
目录 前言 SpringBoot提供后端接口 Entity类 JPA操作接口 配置文件 数据库表自动映射,添加数据 写提供数据的接口 跨域问题 前端修改 效果图 待续 前言 Vue学习笔记九的列表案例 ...
- vue学习笔记(三)class和style绑定
前言 通过上一章的学习vue学习笔记(二)vue的生命周期和钩子函数,我们已经更近一步的知道了关于vue的一些知识,本篇博客将进一步探讨vue其它方面的内容,vue中关于class和style绑定,关 ...
- vue学习笔记(四)事件处理器
前言 在上一章vue学习笔记(三)class和style绑定的内容中,我们学习了如何在vue中绑定class和style,介绍了常用的绑定方法,class的数组绑定和对象绑定以及style的数组绑定和 ...
随机推荐
- Redis常用命令(key、string、List)
1.Key 1.keys * 查询所有数据 2.exists key名 判断key名是否存在 3.move key名 数据库号(0-15) 移动数据key名到相应的数据库 4.expire ...
- ACM团队周赛题解(1)
这次周赛题目拉了CF315和CF349两套题. 因为我代码模板较长,便只放出关键代码部分 #define ll long long #define MMT(s,a) memset(s, a, size ...
- 论文阅读 | DeepDrawing: A Deep Learning Approach to Graph Drawing
作者:Yong Wang, Zhihua Jin, Qianwen Wang, Weiwei Cui, Tengfei Ma and Huamin Qu 本文发表于VIS2019, 来自于香港科技大学 ...
- /bin/java: 没有那个文件或目录spark/bin/spark-class:行71: /usr/java/jdk1.8
1.检查java环境有没有问题 2.1没问题后检查文件的编码是否有问题
- Appium+python自动化(三十八) - Appium自动化测试框架综合实践 - 框架简介-助你冲击高薪,迎娶白富美(超详解)
简介 好久没有更新博客了,博友们是不是有点等不及了.不好意思啊,中秋节过后太忙了,这篇是好不容易抽点零碎时间写的.从这一篇开始小伙伴或者童鞋们,就跟随宏哥的脚步,一步步的从无到有,从0到1的搭建一个完 ...
- ASP.NET Core 3.0 : 二十四. 配置的Options模式
上一章讲到了配置的用法及内部处理机制,对于配置,ASP.NET Core还提供了一种Options模式.(ASP.NET Core 系列目录) 一.Options的使用 上一章有个配置的绑定的例子,可 ...
- SpringBootSecurity学习(01)网页版登录入门介绍
Web应用安全管理 Web应用的安全管理,主要包括两个方面的内容,一个是用户身份的认证,即用户登录的设计,二是用户授权,即一个用户在一个应用系统中能够执行哪些操作的权限管理.权限管理的设计一般使用角色 ...
- SpringSecurity原理剖析与权限系统设计
Spring Secutity和Apache Shiro是Java领域的两大主流开源安全框架,也是权限系统设计的主要技术选型.本文主要介绍Spring Secutity的实现原理,并基于Spring ...
- C语言入门-数组
今天十月一日,上午看阅兵激情澎湃,但是下午还是要继续写C语言,前面的这块很简单 int number[100]; scanf("%d" , &number[i]); 一.定 ...
- Cisco交换机、路由器,密码恢复
一.路由器密码恢复 1.重启路由器,同时按下ctrl + breack键中断IOS的加载,路由器进入ROM Monitor模式 2.将配置寄存器的值更改为 0x2142,表示在启动时忽略startup ...