vuejs个人总结
Posted A宝之星
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vuejs个人总结相关的知识,希望对你有一定的参考价值。
Vue是前端现在最牛逼的框架之一,易用,灵活,高效
2009 angularjs
2013 react
2014 vue
PC端项目
网站,后台管理系统
移动端项目
移动web webApp,原生应用
但是它不兼容IE8及以下
有没有遇到过浏览器兼容性问题,怎么解决?
PC端项目,如果要兼容ie8及以下,用jquery1.x版本
后台管理系统,提示升级
如果是IE9+ 网站&后台管理系统,强烈建议Vue,简单,用的人多
IE9(H5+C3),css3前缀需要加,可以使用 考拉 工具
移动端项目
基本上不需要考虑浏览兼容问题,css3前缀还是需要加
MVVM
M:model 模型/数据
V:View 视图,负责呈现
VM:View-Model相当于controller,
好处:可以达到页面的复用,实现视图和模型的解耦
Vue中如何体现MVVM的
目标:在界面上显示"Hello Vue"
1.导入vue.js (npm i cnpm -g运行命令可以使用国内网络下载库)
下载到本地:npm/cnpm i vue -D/-S(-D开发环境,-S 生产环境)
在项目的根目录,使用npm init -y(默认) 生成一个package.json
当从gitHub更新代码时执行npm install就会自动下载第三方包
2.在body中,建立一个id=app的div,然后在里面使用插值表达式来写代码
3.在script中,创建好view-model
VM和model要写在js中,其中model要写在VM里面,data就相当于model
模型中的属性名称要和视图中的保持一致
指令
作用:简化DOM操作,或是不需要操作Dom就可以更新视图
插值表达式 语法:{{ }},除了插值表达式指令外,都是以v-开头的
v-开头的插值表达式都是用在标签里面的
v-text&v-html
v-text:显示值在view上
v-html:会把html解析出来并显示
v-on
和注册事件有关,语法: v-on:事件类型="函数名称"
1.如果处理的函数没有形参,函数名称后面可以没有()
2.原生的事件类型都支持
3.还支持事件修饰符
4.v-on:可以简写成@
v-bind
单向数据绑定,当视图的某些标签不是写死的,数据来源于模型,就可以用v-bind来绑定
1.当绑定了以后,模型发生了更改,视图也会重新渲染
2.vbind:可以简写成:
v-model
双向数据绑定,视图更改,对应的模型也会更改. 模型更改,对应的的视图也会更改
语法:作用在表单元素的标签
<表单元素 v-model='模型中的属性名称'></表单元素>
v-if&v-show
条件渲染
语法:<span v-if="模型值/boolean类型"></span>
<span v-show="模型值/boolean类型"></span>
开发中如何抉择?如果频繁切换用v-show,切换的比较少用v-if
v-for
循环遍历
语法:<被遍历的元素 v-for="item in 模型中的那个数组"></被遍历的元素>
使用v-for的遍历我们每一个元素的时候,需要给它加一个唯一的标识符key="值"
如果遍历的元素没有唯一标识符,可以巧妙的复用索引
//----------------------------------------------分割线----------------------------------------------//
MVVM的优点:
1.解耦
2.达到视图的复用
Vue是如何体现mvvm的
View: body中写一个id=app的div,div中再vue指令相关代码
View-Model&Model:js中写new Vue({})它就VM,里面再写Model的代码(就是data属性)
如何实现动画
1.自己写c3样式
2.可以利用外部的css库(https://daneden.github.io/animate.css/)
animate.css的使用
>1.导入css文件
>2.在我们需要的标签加入class就可以了
3.需要精细化的动画自己写js(jquery)
Vue 实现动画
动画的元素必须包裹在transition组件里面,
要想运行,必须在v-if,v-show中才能运行
在Vue中规定,一个完整的动画分为进入和离开两个阶段,有6个类名
v-enter 进入的初始状态
v-enter-active 进入的过渡状态
v-enter-to 进入的结束状态
v-leave 离开的初始状态
v-leave-active 离开的过渡状态
v-leave-to 离开的结束状态
计算属性&Watch
都能监控data中属性值的变化,然后可以根据变化做事情
应用场景:
计算属性: 在购物车中根据端口的价格和数量动态计算总金额,只要其中一个发更改,计算属性就会重
新执行
watch: 监控路由的变化,刷新页面
组件:
封装好的一段代码,可以在其它的地方使用
单文件组件,就是.vue结尾的文件,css,html,js写在一个文件里面
//----------------------------------------------分割线----------------------------------------------//
created是Vue提供的生命周期钩子(函数)之一,它会在恰当的时机,Vue会自动调用.
是在我们组件对象创建出来之后调用,且只会调用一次
过滤器:对模型中的数据,进行过滤处理,都需要接收一个过滤之前的原始数据,返回过滤之后的数据
局部过滤器,只能在它所在的组件中使用
语法:和data,生命周期钩子,methods是同级的,见代码
在需要使用的地方,使用 | 过滤器名称,原始数据会默认传给过滤器函数的第一个参数
filters:{
//过滤器函数
dateFormat(input){
// '2018-03-12-12T02:56:19.097z' ===> 2018-03-13-12
var date = new Date(input);
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
return year + '/'+month+'/'+day;
}
},
第二种实现方式:
全局过滤器,所有的组件中都可以使用
使用Vue.filter()定义全局过滤器,如果过滤器名称一样,局部过滤器的优先级高于全局过滤器
const&let
const用来定义常量,常量必须定义是赋值,并且以后不能更改
let用来定义变量,支持块级作用域,和变量提升
箭头函数
只是写起来和es5不一样,调用是一模一样的
基本写法: const add = (x,y)=>{return x+y}
怪异写法1: const add = (x,y)=>x+y; (方法体只有一句就这样写,自动return)
怪异写法2: const printName=name=>console.log(name) (主要针对只有一个形参时可以省略括号)
VUE中发送网络请求
vue-resource的使用
GET:
this.$http.get(url).then(response=>{
},err=>{})
POST:
this.$http.post(url,{请求体}).then(response=>{
},err=>{})
JSONP:
this.$http.jsonp(url).then(response=>{
},err=>{})
axios的使用(不是基于vue,和vue没有关系)
从reponse中获取值,靠response.data
路由
实现单页面应用
先导入vue.js.再导入vue-router.js
代码步骤:
1.html写可以触发的链接 <router-link to="这个要和和路由规则中写的一致"></router-link>
2.路由占位符 <router-view></router-view>
3.js中定义好组件 var 组件1 = Vue.extend({})
4.创建路由对象,设置路由规则
const router = new VueRouter({
routes:[
{ path: '/', redirect: '/goodsList' },
{path:'/goodsList',component:goodsListComponent},
{path:'/newsList',component:newsListComponent}
]
})
5.把上面创建好的路由对象注入到根实例中,这样整个应用才有路由功能
var vm = new Vue({
router
}).$mount('#app')
安装webpack
cnpm info webpack 查看webpack的所有版本信息
cnpm i webpack@3.11.0 -g 安装指定版本
以上是关于vuejs个人总结的主要内容,如果未能解决你的问题,请参考以下文章