Vue2.x——基础教程
简介
Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件 。Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动复杂的单页应用【来源于百度百科】。VUE官网
个人理解就是VUE 简单易用,完全靠数据驱动的一个轻量级前端框架。结合它的脚手架VUE-CLI及Webpack 可以快速搭建一个可以快速搭建大型单页应用Demo,不利于SEO。不过可以借助Nuxt,快速实现服务端渲染,解决SEO的问题。【个人观点,欢迎留言指正】
安装
- 1、可以简单的采用引入Vue.js方式使用,但不建议这样做。
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
- 2、采用npm方式安装(推荐用法,本教程主要基于此方式)
# 升级或安装 cnpmnpm install cnpm -g
# 安装最新稳定版 VUE
$ cnpm install vue
# 全局安装 vue-cli
$ cnpm install --global vue-cli
# 基于 webpack 模板创建一个的新项目
$ vue init webpack vue-demo
#会提示你进行一些配置,可以直接默认回车
#初始化完成进入该项目下,启动项目
$ cd vue-demo
$ cnpm install
$ cnpm run dev
#会有输出 Project is running at http://localhost:8080/,你可通过这个地址访问你的项目了。
运行结果如图:
所有页面是采用.vue文件编写,文件一般分为三部分:模板,js,样式。
<template> <div id="app">
<img src="./assets/logo.png">
<router-view/>
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
常用模板语法
1、文本数据绑定
使用 {{…}}(双大括号)绑定文本数据。
<div id="app"> <p>{{ message }}</p>
</div>
2、HTML文本绑定
使用 v-html 指令用于输出 html 代码。
<div id="app"> <div v-html="message"></div>
</div>
<script>
new Vue({
el: '#app',
data: {
message: '<p>HTML数据绑定</p>'
}
})
</script>
3、HTML标签属性绑定
使用 v-bind 指令给HTML标签绑定属性值。
<div id="app"> <div v-bind:class="{'iclass': isAdd}">
v-bind 指令给HTML标签绑定属性
</div>
div v-bind:id="dynamicId"></div>
<button v-bind:disabled="isDisabled">Button</button>
</div>
<script>
new Vue({
el: '#app',
data: {
iclass: ' ',
dynamicId:'',
isDisabled:true
}
})
</script>
4、 JavaScript 表达式
数据绑定,Vue支持 JavaScript 表达式,但是只能单个表达式。
<!-- 有效表达式 -->{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
<div v-bind:id="'list-' + id"></div>
<!-- 无效(错误)表达式 -->
{{ var a = 1 }}
{{ if (ok) { return message } }}
5、 常用的指令
# v-if 条件成立则会将该元素加入到DOM中渲染,对应的有v-else、v-else-if<p v-if="condition">v-if成立</p>
# v-show 不管初始条件是什么,元素总是会被渲染,简单地基于 CSS 进行切换是否显示。
<p v-show="condition">v-show成立</p>
#一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。
因此,如果需要非常频繁地切换,则使用 v-show 较好;
如果在运行时条件很少改变,则使用 v-if 较好。
# v-bind:[attributeName] 动态绑定属性值
<a v-bind:href="url"></a>
<!-- 缩写 -->
<a :href="url"></a>
#v-on:[eventName] 动态绑定事件
<a v-on:click="doSomething"></a>
<!-- 缩写 -->
<a @click="doSomething"></a>
6、双向绑定 v-model
v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。
<div id="app"> <p>{{ message }}</p>
<input v-model="message">
</div>
<script>
new Vue({
el: '#app',
data: {
message: 'Runoob!'
}
})
</script>
7、过滤器
当你需要对数据做些格式化操作时候,vue可以允许你自定义 过滤器。格式如下:
<!-- 在两个大括号中 -->{{ message | capitalize }}
<!-- 在 v-bind 指令中 -->
<div v-bind:id="rawId | formatId"></div>
<!-- 实例 -->
<div id="app">
{{ message | capitalize }}
</div>
<script>
new Vue({
el: '#app',
data: {
message: 'runoob'
},
filters: {
capitalize: function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
}
}
})
</script>
8、迭代器v-for
用 v-for 指令可用于遍历数组,对象及数字甚至是组建。
<!-- 遍历数组示例 --><!-- 遍历数组元素-->
<ul id="v-for-arr">
<li v-for="item in items">
{{ item.name}}
</li>
</ul>
<!-- 遍历数组元素并获取下标-->
<ul id="v-for-arr">
<li v-for="(item, index) in items">
{{ index}} - {{ item.name}}
</li>
</ul>
var vForArr = new Vue({
el: '#v-for-arr',
data: {
items: [
{ name:vue' },
{ name: 'java' }
]
}
})
<!-- 遍历对象的属性值-->
<ul id="v-for-object" >
<li v-for="value in object">
{{ value }}
</li>
</ul>
<!-- 遍历对象的属性名和值-->
<div v-for="(value, name) in object">
{{ name }}: {{ value }}
</div>
<!-- 遍历对象的属性名和值及下标-->
<div v-for="(value, name, index) in object">
{{ index }} - {{ name }}: {{ value }}
</div>
new Vue({
el: '#v-for-object',
data: {
object: {
id: '1',
name: 'forObject'
}
}
})
<!-- 遍历取整数-->
<div>
<span v-for="n in 10">{{ n }} </span>
</div>
组件注册
Prop
插槽
动画过度
以上是 Vue2.x——基础教程 的全部内容, 来源链接: utcz.com/z/376163.html