说明:
入门学习,不建议使用vue脚手架,导入外部cdn即可
可以收藏此网站:BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务
收录了各种免费的cdn:
首先,vue有两个部分:
1.html:
2.需要有一个Vue对象
new Vue({
el://作用:标注该对象绑定在哪个div上
date:{}//作用:提供数据,存放的是键值对形式
methods:{}//作用:定义方法
})
说明:用在html的被vue绑定的元素中,通过差值表达式来获取vue对象中的属性和方法
用法:
{{name}}//差值表达式
补充:表达式不能用在html标签中作为属性
v-model:可以通过v-model属性与vue对象进行绑定
用法:
new Vue({
data:{
name:'java'
}
})
v-on:通过具体的事件名,来绑定vue中定义的函数
//事件可以定义为click,input...
new Vue({
methods:{
m1:function(){
console.log("莫荒")
}
})
在绑定的函数中,可以使用event内置参数对象.该对象表示当前事件,可以通过event.target.value获取当前事件对象值
//事件可以定义为click,input...
new Vue({
methods:{
m1:function(event){
console.log(event.target.value)
}
})
v-on:还可以简写为@
例如上述的v-on:input可以写为@input
v-bind:
作用:如果需要在html标签的属性内容中引用vue的属性,可以使用该标签
用法:
new Vue({
data:{
link:"https://blog.csdn.net/Ms_future?type=blog"
}
})
v-bind:可以简写为:
例如上述的b-bind:href可以写为:href
v-once:
作用:此标签中的差值表达式只获取一次数据,之后不会再发生变化
用法:
{{title}}
v-html:
作用:将vue中的属性值作为html的元素来使用
用法:
new Vue({
data:'莫荒>'
})
v-text:
作用:将vue中的属性值作为纯文本
用法:
new Vue({
data:'莫荒>'
})
说明:
简单的说,计算属性就是一个能够将计算结果缓存起来的属性(将行为转化为了静态的属性)
用法:
{{m1}}//调用的是一个属性,如果是:m1(),会报错,并且每次调用该属性值不会变化
new Vue({
computed:{
m1:function(){
return new Date();
}
}
})
作用:
一些常用的函数,可以缓存起来,在调用时直接使用缓存中的过程,以此来提高效率
说明:
watch用于监控参数的变化,并调用函数.有newVal,oldVal两个参数
用法:
{{title}}
new Vue({
el:'app',
data:{
title:'hello'
},
watch:{
title:function(newValue,oldUvalue){
console.log(newValue);
console.log(oldValue);
}
}
})
通过给html元素的class属性绑定vue中的属性值,得到样式的动态绑定
new Vue({
el:'app',
data:{
temp:true
}
})
通过computed返回一个对象,对象里放着多个键值对
new Vue({
el:'app',
data:{
temp:true
},
computed:{
myStyle:function(){
return{
red:this.temp,
myWidth:this.temp
}
}
}
})
vue高效的核心,就是虚拟的dom和diff算法,vue不通过修改dom树来达到修改的效果,而是直接在页面上修改元素,此时这个元素就是一个虚拟dom
而修改虚拟dom就是通过diff算法,计算出虚拟的dom修改后和修改前的区别,然后再虚拟dom的基础上进行修改,也因此提高了效率
hello
hello1
world
new Vue({
data:{
temp:flase
}
})
用法和v-if一致,但是v-show改变的是元素的样式,而v-if是直接让元素消失和直接添加元素,效率上v-show更高
- {{a}}
=============================
- {{i}}---{{a}}
//i为数组下标
new Vue({
data:{
args:[1,2,3,4,5,6]
}
})
如果遍历的是对象
- {{i}}---{{k}}---{{v}}
new Vue({
el:'app',
data:{
student:{
name:'莫荒',
age:18
}
}
})
读取对象数据的顺序是:value key index
组件化,也就是可以将vue对象作为一个组件,被反复的使用
想要实现组件化,需要在页面中注册组件:关于注册组件的方式有两种,分别是:全局注册 本地注册
1.注册组件:(全局)
调用Vue的静态方法:Vue.component("组件名",{vue对象})
2.使用组件
在被 vue绑定了的html元素才能使用组件
//调用自定义的组件
Vue.component("m1",{
//template是将内容展示到页面的,但注意只能有一个根元素
template:"{{title}}",
data:function(){//注意data与之前的vue对象不同,使用的是方法,不是单纯的花括号
return{
title:"hello vue"
}
},
methods:{
btn:function(){
alert("hello");
}
}
});
new vue({//一定是要绑定了html元素,才能使用到定义的组件
el:'app'
})
3.本地注册(局部注册)
new Vue({
el:'app1',
components:{
"m2":{
template:"{{title}}",
data:function(){//注意data与之前的vue对象不同,使用的是方法,不是单纯的花括号
return{
title:"hello vue"
}
},
methods:{
btn:function(){
alert("hello");
}
}
}
}
})
本地注册只能在el指定绑定了的html元素中调用
全局注册可以在任一绑定了的html元素中调用
一个vue对象会经历初始化,创建,绑定,更新,销毁等阶段,不同的阶段,都会有对应的生命周期钩子函数被调用
new Vue({
el:"app",
beforeCreate:function(){},//创建实例之前执行的钩子事件
created:function(){},//创建实例后执行的钩子事件
beforeMount:function(){},//将编译完成的html挂载到对应虚拟dom时触发的钩子,此时页面并没有内容
mounted:function(){},编译好的html挂载到页面完成后执行的事件钩子,此钩子函数中一般会做一些ajax请求获取数据进行数据初始化,mounted在整个实例中只执行一次
beforeUpdate:function(){},//更新之前的钩子
updated:function(){},//更新之后的钩子
beforeDestroy:function(){},//实例销毁之前执行的钩子
destroyed:function(){}//实例销毁完成执行的钩子
})
至此vue的基本语法和基本概念的学习就结束了
vue-cli里存放了很多常用的项目骨架,直接拿来用就可以搭建出一个拥有比较成熟的项目结构的项目
安装node.js
想要使用vue-cli,首先需要安装node.js下载 | Node.js 中文网,无脑安装,安装后可以在cmd中输入node -v查看版本
node.js可以为前端运行提供环境
安装vue-cli
在cmd中输入命令:npm install vue-cli -g
安装完成后可以输入命令vue -V查看版本
如果你的是这样的报错:
'vue' 不是内部或外部命令,也不是可运行的程序或批处理文件。
那么就是没有在电脑中配置环境
输入命令找到npm 的配置路径npm config list
问题解决
cmd中输入vue list命令可以查看官方已经提供的模板
自定义一个目录,跳转到该目录下载模板,输入vue init webpack-simple myvuedemo01命令下载模板
下载完成后一路回车即可
可以看到目录多了一个文件
cmd进入该文件输入命令npm install安装相关依赖,也可输入cnpm install 安装镜像会快些
如果有node-gyp相关的报错,那就输入命令 npm install -g node-gyp安装node-gyp
再次安装相关依赖
安装完成后就可以启动服务了!
输入命令npm run dev即可启动服务
无论前端页面内容有多复杂,index.html都只有十一行
myvuedemo
实际的内容已经打包在/dist/build.js中
main.js文件是整个vue项目的入口js
import Vue from 'vue'
import App from './App. vue'//导入了App.vue组件
new Vue ( {
el: '#app',//让当前vue对象绑定页面上的id是app的那个div
render: h => h(App)//让App.vue的内容展现在该div中
})
App.vue这种以.vue为扩展名的文件,实际上就是一个vue对象,也称为Vue组件
由三大部分组成:
1.首先new一个vue组件
{{title}}
2.然后在mian.js中注册
...
import Header from './components/Header.vue'
Vue.component('MyHeader':Header);
...
3.最后就可以在主页面(App.vue)中调用注册的组件
1.同上,首先new一个vue组件,这里省略
2.在主页面(App.vue)注册组件并使用
关键字段:props,内置其他组件传递的属性值
props有两种写法
1.props:['参数名'...]
2.props:{
type:String//参数类型
required:true,//是否为必要参数
default:'XX'//默认值
}
定义子组件:
商品列表...
{{MyTitle}}
定义父组件
MyContent>
...
我们就可以读取到参数并赋给属性
1.通过html中的路由链接进行跳转
2.通过js实现路由跳转
methods: {
btnfn : function () {
this. $router. push("url");}
}
如果vue组件中的style标签没有带上 scoped属性,那么这个style 的样式将会作用在整个页面中,加上 scoped,让样式只作用在当前组件中。.
Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库
官网:Element - The world's most popular Vue UI framework
安装:
引入:
在main.js中导入
...
//引入ElementUI模块
import ElementUI form 'element-ui';
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
现在就可以使用element的相关组件,各种组件可以去官网上翻阅
在静态路由表中添加如下代码:
...
{
path:'/Logout'//url
redirect:'/Login'//重定向的位置
},
...
然后在组件方法中定义
...
methods:{
logout:function(){
this.$router.push("/Logout")
}
}
...
组件中调用
退出
vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。
路由和侧边栏:
整个项目的侧边栏是通过路由表动态生成的,可以调整路由表中的内容来改变侧边栏的内容
vue整体的学习在这里就告一段落!