用script的方式创造一个vue项目
在官网下载vue.js,以如图所示的方式部署
image.png
创建第一个vue应用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
<!-- 输出 {{ 变量 }} -->
{{ message }} {{ name }}
</div>
<script type="text/javascript">
var app = new Vue({
el:'#app',
data:{
message:'hello vue',
name: 'haha'
}
});
</script>
</body>
</html>
- 想让vue工作,必须创建一个vue实例,而且要传入一个配置对象
- root容器里的代码依然符合html规范,只不过混入了一些特殊的vue语法
- root容器里的代码被称为vue模板
- vue实例和容器是一一对应的
- 真实开发中只有一个vue实例,并且会配合着组件一起使用
- {{ xxx }}中的xxx要写js表达式,且xxx可以自动读取到data中的所有属性
- 一旦data中的数据发生改变,那么模板中用到该数据的地方也会自动更新
注意区分js表达式和js代码(语句)
- 表达式:一个表达式会生成一个值,可以放在任何一个需要值的地方
- a
- a+b
- demo(1)
- x === y ? 'a' : 'b'
- js代码
- if(){}
- for(){}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
<!-- 准备好一个容器 -->
<div id="root">
<h1>im {{ name }}</h1><br>
<h1>my age is {{ age }}</h1>
</div>
</div>
<script type="text/javascript">
Vue.config.productionTip = false //阻止vue在启动是生成生产提示
//创建vue实例
const x = new Vue({
el :'#root', // el用于指定当前vue实例为那个容器服务,值通常为css选择器字符串
data:{ //data 用于存储数据 数据供el所指定的容器去使用 值先先写成一个对象
name:'madison',
age:22
}
})
//配置对象
// axios({
// url:''
// })
</script>
</body>
</html>
vue模板语法
vue 模板语法有2大类:
- 插值语法
- 功能:用于解析标签体内容。
- 写法:{{ xxx }}。xxx是js表达式,且可以直按读取到data中的所有属性
- 指令语法
- 功能:用于解析标签(包括:标签属性、标签体内容、绑定事件...)
- 举例:v-bind:href="xxx” 或 简写为 :href="xxx",xxx同样要写is衣达式。 且可以直接读取到data中的所有属性。
- 备注:vue中有很多的指令,且形式都是:V-??,此处我们是拿v-bind举个例子。
<!-- 准备好一个容器 -->
<div class="root">
<h1>插值语法</h1>
<h1>hi {{ name }}</h1>
<h1>指令语法</h1>
<!-- v-bind: 可简写成 : -->
<a v-bind:href="url">click to study</a>
<a v-bind:href="url" :x="hello">click to study</a>
</div>
<script type="text/javascript">
Vue.config.productionTip = false //阻止vue在启动是生成生产提示
//创建vue实例
const x = new Vue({
el :'.root', // el用于指定当前vue实例为那个容器服务,值通常为css选择器字符串
data:{ //data 用于存储数据 数据供el所指定的容器去使用 值先先写成一个对象
name:'madison',
url:'https://www.bilibili.com/',
hello:'hi'
}
})
数据绑定
<div id="root">
单向数据绑定 <input type="text" :value="name"><br>
双向数据绑定 <input type="text" v-model:value="name">
</div>
<script type="text/javascript">
Vue.config.productionTip = false //阻止vue在启动是生成生产提示
//创建vue实例
const x = new Vue({
el :'#root',
data:{
name:'madison'
}
})
image.png
image.png
v-model只能用在表单类元素
image.png
v-model:value="name"可简写成 v-model="name"
el和data的两种写法
- el
<div id="root">
<h1>hello {{ name }}</h1>
</div>
<script type="text/javascript">
Vue.config.productionTip = false
const v = new Vue({
data:{
name:'Madison'
}
})
console.log(v)
v.$mount('#root')// 指向容器
</script>
另一种是之前的写法
- data
//data的两种写法
new Vue({
el:'#root',
//data的第一种写法,对象式
// data:{
// name: 'dkw'
// }
//data的第二种写法,函数式
data:function () {//不能写成箭头函数,因为箭头函数的this是全局变量,window
console.log('@@@',this) //此处this是vue实例对象
return{
name:'dkw'
}
}
})
image.png
网友评论