Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。是一个用于创建用户界面的开源JavaScript框架,也是一个创建单页面应用的Web应用框架。Vue所关注的核心是MVC模式中的视图层,同时,它也能方便地获取数据更新,并通过组件内部特定的方法实现视图与模型的交互。Vue.js 最核心的功能有两个,一是响应式的数据绑定系统,二是组件系统 —— [ 维基百科 ]
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统。数据和 DOM 已经被建立了关联,所有东西都是响应式的。 —— [ 维基百科 ]
组件系统是 Vue 的重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用。
—— [ 维基百科 ]
数据绑定,响应式更新HTML特性
<template>
<span v-bind:title="message">
鼠标悬停几秒钟查看此处动态绑定的提示信息!
span>
template>
<script>
export default {
name: 'app',
data () {
return {
message: '页面加载于 ' + new Date().toLocaleString(),
}
}
}
script>
给DOM双向绑定数据
<template>
<p>{{ message }}p>
<input v-model="message">
template>
监听DOM事件
<template>
<p>{{ message }}p>
<button v-on:click="reverseMessage">逆转消息button>
template>
<script>
export default {
name: 'app',
data () {
return {
message: 'This is a new Vue.js Project",
}
},
methods:{
reverseMessage: function () {
this.message = this.message.split('').reverse().join('')
}
}
}
script>
根据条件渲染div、class etc.
<template>
<p v-if="seen">现在你看到我了p>
template>
根据条件展示元素的选项,实现功能类似v-if
<template>
<p v-show="ok">Hello!p>
template>
当seen和ok都true时,审查页面元素时两个<p>标签均可见
如果将seen的值设为false,页面审查元素时会发现,此时v-if根据条件将所对应的<p>标签的内容删除了。
如果将ok的值设为false,页面审查元素时会发现,此时v-show根据条件将所对应的<p>标签的内容隐藏了,并没有将对应的标签进行删除。
总结v-if和v-show的区别,v-if 删除/添加页面的Dom元素,所以v-if 有更高的切换消耗。v-show 控制的隐藏出现,只是将css属性设为了display:none 或block。因此,如果需要频繁切换的需求场景v-show比较合适,反之v-if 较好。
根据一组数据,进行列表渲染
<template>
<ol>
<li v-for="todo in todos">
{{ todo.text }}
li>
ol>
template>
<script>
export default {
name: 'app',
data () {
return {
todos: [
{ text: '学习 JavaScript' },
{ text: '学习 Vue' },
{ text: '整个项目' }
],
}
}
}
script>
<template>
<div id="app">
<Child message="父组件向子组件传值">Child>
div>
template>
<script>
import child from './components/child'
export default {
name: 'App',
data() {
return {
}
}
components :{
child
}
}
script>
<template>
<div>
<h2>child子组件部分h2>
<p>{{message}}p>
div>
template>
<script>
export default{
props:["message"],
}
script>
<template>
<div id="app">
<child :message="parentMsg" v-on:listenToChildEvent="showChildMessage">child>
div>
template>
<script>
import child from './components/child'
export default {
name: 'App',
data() {
return {
parentMsg : "父组件的值会变化"
}
}
components :{
child
},
methods: {
showChildMessage(data){
alert(data)
}
}
}
script>
<template>
<div>
<h2>child子组件部分h2>
<button v-on:click="sendMsgToParent">向父组件传值button>
div>
template>
<script>
export default{
methods:{
sendMsgToParent(){
this.$emit("listenToChildEvent","this message is from child")
}
}
}
script>
创建一个单页面应用需要用到Vue的功能。
其中1,2,3,6均由JavaScript实现,4,5由html实现。
<template>
<div>
<h1>Homeh1>
<p>{{msg}}p>
div>
template>
<script>
export default{
data(){
return {
msg : "Hello,vue router!"
}
}
}
script>
<template>
<div>
<h1>Abouth1>
<p>This is the tutorial about vue-router.p>
div>
template>
Vue router = new VueRouter()
import Home from '@/components/home'
import About from '@/components/about'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/home',
name:'home',
components:{
main: Home
}
},
{
path:'/about',
name:'about',
components:{
main: About
}
}
<template>
<router-link to="home">router-link>
<router-link to="about">router-link>
template>
<router-view>router-view>
当用户点击v-link指令元素时,vue-router首先会去查找v-link指令的路由映射,然后根据路由映射找到匹配的组件,最后将组件渲染到<router-view>标签。
https://keepfool.github.io/vue-tutorials/06.Router/basic/basic_01.html#!/home
https://download.csdn.net/download/double_hui/10587431
[1]: https://cn.vuejs.org/v2/guide/custom-directive.html
[2]: https://www.cnblogs.com/avon/p/5943008.html