Model 模型 通过监听器来监听view的变化,后台发生对应的变化
View 视图 通过指令来接收后台的变化,随之变化
ViewModel 视图模型
核心是数据的双向绑定
msi直接安装nodejs
npm常用命令
npm init -y
npm i -g vue //带g的是全局安装
npm uninstall vue
npm update vue
var和let,var是全局,let是块级(局部)
const常量类型 不能修改
解构表达式
var arr = [1,2,3];
var [a1,a2,a3] = arr;
var obj = {"name":"cdd"}
箭头函数
var obj = {
say:function(food){
console.log();
},
say1:food => {
console.log();
},
say2(food){
console.log();
}
}
promise 异步编程(axios)
模块化编程
export //可以导出任何东西
import //导入
是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
使用vue
/*
new Vue({})创建一个vue对象
el:挂载 可以通过id或者class
data:{
//可以写数据
msg:""
}
{{msg}}取出数据
*/
生命周期
最重要的两个钩子方法,created,mounted
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<script src="../node_modules/vue/dist/vue.js">script>
head>
<body>
<div id="app1">
<h1>{{5+5}}h1>
<h1>{{5+"v5"}}h1>
<h1>{{5+"5"}}h1>
<h1>{{"5"+"5"}}h1>
<h1>{{"5"-"5"}}h1>
<h1>{{5*5}}h1>
<h1>{{"a"-"b"}}h1>
<h1>{{"5"*"5"}}h1>
<h1>{{5/5}}h1>
{{show?"男":"女"}}
{{"大家好,你是MM还是GG"}}
<br/>
{{"大家好,你是MM还是GG".length}}
<br/>
{{message.substring(6)}}
<br/>
{{"dhajdad".substring(0,4).toUpperCase()}}
div>
<script>
var app1 = new Vue({
el: '#app1',
data: {
show:true,
message:"大家好,我是渣渣辉"
}
});
script>
body>
html>
v-text
将对应的值放进去,不能解析html标签,相当于innerText
v-html
将对应的值放入标签中,可以解析html标签,相当于innerHTML
v-for循环
元素/索引/键 in 数据源
v-bind绑定属性
<img v-bind:src="" />
<img :src="" />
v-model双向绑定
可以绑定到普通的表单元素inputValue
v-show是否展示
true展示,false隐藏,改变的是css中display的值,标签是还在的
v-if判断
true显示,false删除,不成立标签直接没了
v-else判断之外的其他情况
if之外的,使用else标签来操作
v-else-if
就类似if else-if else进行判断
v-on注册事件
v-on:click
简写:@click
计算属性本质是一个方法,但是必须返回结果
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<!--
computed一般是用来计算一些复杂的表达式 例如日期
-->
<div id="app">
{{birth}}
</div>
<script>
var app = new Vue({
el:"#app",
data : {
age:88,
birthday:1529032123201
},
computed:{
birth(){
return new Date(this.birthday).getFullYear()+"年"+new Date(this.birthday).getMonth() + "月"
+ new Date(this.birthday).getDay() + "日"
}
}
})
</script>
</body>
</html>
watch监控一个值的变化
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<script src="../node_modules/vue/dist/vue.js">script>
head>
<body>
<div id="app">
<input type="text" v-model="msg">
div>
<script>
var app = new Vue({
el:"#app",
data : {
age:88,
birthday:1529032123201,
msg:"wdnmd"
},
watch:{
msg(newV,oldV){
console.debug(newV);
console.debug(oldV);
}
}
})
script>
body>
html>
组件是用来完成特定功能的一个自定义的html标签
分类
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<script src="../node_modules/vue/dist/vue.js">script>
head>
<body>
<div id="app">
<xxx>xxx>
<yyy>yyy>
div>
<script>
Vue.component("xxx",{
template:"wdnmd
"
})
var configTemplate = {
template:"nsnmn
"
}
Vue.component("yyy",configTemplate);
var app = new Vue({
el:"#app",
data : {
}
})
script>
body>
html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<script src="../node_modules/vue/dist/vue.js">script>
head>
<body>
<template id="ttt">
<div>
<h1>777h1>
<h1>456h1>
div>
template>
<div id="app">
<xxx>xxx>
div>
<script type="text/template" id="gg">
<h1>uuuu</h1>
script>
<script>
// Vue.component("xxx",{
// template:"wdnmd
"
// })
//
// var configTemplate = {
// template:"nsnmn
"
// }
//
// Vue.component("yyy",configTemplate);
var app = new Vue({
el:"#app",
data : {
},
components:{
// xxx:{
// template:"666
"
// }
xxx:{
template:"#ttt"
}
// xxx:{
// template:"#gg"
// }
}
})
script>
body>
html>
3种模板写法
(1)直接在 组件写个template这个模块
template : "<h1>这是一个局部组件h1>"
(2)
<template id="mytemplate">
<h1>template标签中的html1111111h1>
template>
在组件里面引用 template
template : "#mytemplate"
(3)
<script type="text/template" id="mytemplate">
<h1>template标签中的html</h1>
script>
在组件里面引用 template
template : "#mytemplate"
(1)先安装
npm install vue-router
(2)引入文件
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<script src="../node_modules/vue/dist/vue.js">script>
<script src="../node_modules/vue-router/dist/vue-router.js">script>
head>
<body>
<div id="app">
<router-link to="/xxx">xxxrouter-link>
<router-link to="/yyy">yyyrouter-link>
<hr />
<router-view>router-view>
div>
<script>
var xxx = Vue.component("xxx",{
template:"wdnmd
"
})
var configTemplate = {
template:"nsnmn
"
}
var yyy = Vue.component("yyy",configTemplate);
var router = new VueRouter({
routes:[
{
path:"/xxx",
component:xxx
},{
path:"/yyy",
component:yyy
}
]
})
var app = new Vue({
el:"#app",
data : {
},
components:{
// xxx:{
// template:"666
"
// }
// xxx:{
// template:"#ttt"
// }
// xxx:{
// template:"#gg"
// }
},
router:router
})
script>
body>
html>
打包工具,把项目的所有资源,打包成小的资源。
作用
vue官方提供了一个快速构建项目的脚手架
步骤
(1)npm install -g @vue/cli
(2)vue create hello-world
(3)选中 VueProject(第二个)
(4) cd hello-world
yarn serve – 运行
yarn build – 编译(额外生成一些文件)
(5) npm run serve --运行