欢迎转载,转载请注明出处。

前言

  学习本系列Vue知识,需要结合本系列的一些demo。你可以查看我的 Github 或者直接下载 ZIP包 。

  建议学习本系列之前已经会一个其他的前端框架,了解计算属性,数据绑定,模板语言等。零基础的话,看本教程可能不太适合。

  上一篇文章已经讲了前六个demo。

七、Vue实例

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>vue-demos</title>
  6. <script src="../vue.js"></script>
  7. </head>
  8. <body>
  9. <!--
  10. Vue实例
  11. -->
  12. <div id="app">
  13. <p>{{ message }}</p>
  14. <button v-on:click="sayHello">sayHello</button>
  15. </div>
  16. <script>
  17. //每个 Vue应用都是通过构造函数 Vue 创建一个 Vue的根实例 启动的 var app = new Vue({});
  18. //在实例化 Vue 时,需要传入一个选项对象,它可以包含数据data、模板template、挂载元素el、方法methods、生命周期钩子等选项
  19. var app = new Vue({
  20. el: '#app',
  21. data: { //每个 Vue 实例都会代理其 data 对象里所有的属性
  22. message: 'Hello Vue' //app.message = app.data.message
  23. },
  24. methods: {
  25. sayHello: function(){
  26. alert('hello');
  27. }
  28. },
  29. created: function(){ //实例生命周期的不同阶段,如created、 mounted、 updated 、destroyed 。钩子的 this 指向调用它的 Vue 实例。一些用户可能会问 Vue.js 是否有“控制器”的概念?答案是,没有。组件的自定义逻辑可以分布在这些钩子中。
  30. // this 指向 vm 实例
  31. console.log(this.message + '实例被创建');
  32. }
  33. });
  34. </script>
  35. </body>
  36. </html>

八、注册全局组件

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>vue-demos</title>
  6. <script src="../vue.js"></script>
  7. </head>
  8. <body>
  9. <!--
  10. 全局组件
  11. 在Vue里,一个组件实质上是一个拥有预定义选项的一个Vue实例。
  12. 要注册一个全局组件,你可以使用 Vue.component(tagName, options)
  13. -->
  14. <div id="app">
  15. <!-- 引用组件 -->
  16. <my-component></my-component>
  17. </div>
  18. <script>
  19. // 注册组件。要确保在初始化根实例之前注册了组件
  20. Vue.component('my-component', {
  21. template: '<div>A custom component!</div>'
  22. });
  23. // 创建根实例
  24. var app = new Vue({
  25. el: '#app'
  26. });
  27. </script>
  28. </body>
  29. </html>

九、注册局部组件

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>vue-demos</title>
  6. <script src="../vue.js"></script>
  7. </head>
  8. <body>
  9. <!--
  10. 局部注册组件
  11. 不必在全局注册每个组件。通过使用组件实例选项注册,可以使组件仅在另一个实例/组件的作用域中可用
  12. -->
  13. <div id="app">
  14. <!-- 引用组件 -->
  15. <my-component></my-component>
  16. </div>
  17. <script>
  18. // 注册局部组件
  19. var Child = {
  20. template: '<div>A child component!</div>'
  21. }
  22. // 创建根实例.并调用局部组件
  23. var app = new Vue({
  24. el: '#app',
  25. components: {
  26. 'my-component': Child
  27. }
  28. });
  29. </script>
  30. </body>
  31. </html>

十、props传递数据

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>vue-demos</title>
  6. <script src="../vue.js"></script>
  7. </head>
  8. <body>
  9. <!--
  10. 父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息
  11. prop 是单向绑定的:当父组件的属性变化时,将传导给子组件。
  12. 父组件使用 props 把数据传给子组件,子组件需要显式地用 props 选项 声明 “prop”:
  13. -->
  14. <div id="app">
  15. <!-- 引用组件 -->
  16. <child message="hello!"></child>
  17. </div>
  18. <script>
  19. Vue.component('child', {
  20. // 声明父组件的属性,props。然后在本子组件中就可以使用这个属性。
  21. props: ['message'],
  22. template: '<span>{{ message }}</span>'
  23. })
  24.  
  25. var app = new Vue({
  26. el: '#app'
  27. });
  28. </script>
  29. </body>
  30. </html>

十一、自定义事件events

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>vue-demos</title>
  6. <script src="../vue.js"></script>
  7. </head>
  8. <body>
  9. <!--
  10. 父组件使用 props 把数据传给子组件,但如果子组件要把数据传递回去,那就是自定义事件!
  11. 自定义事件也是使用v-on绑定。
  12. 使用 $on(eventName) 监听事件
  13. 使用 $emit(eventName) 触发事件
  14.  
  15. 本例在app实例里定义了事件changeMsg().在子组件中去触发这个事件。从而实现子组件的数据传递到父组件
  16. -->
  17.  
  18. <div id="app">
  19. <p>Message: {{message}}</p>
  20. <child></child>
  21. </div>
  22.  
  23. <template id="temp">
  24. <div>
  25. <input v-model="msg" placeholder="please input your message!" />
  26. <button @click="test(msg)">change message</button>
  27. </div>
  28. </template>
  29.  
  30. <script>
  31. Vue.component('child', {
  32. //指定模板为id为"temp"标签
  33. template: "#temp",
  34. //定义模板中初始化的值,data应该是一个函数
  35. data: function() {
  36. return {
  37. msg: "hello",
  38. }
  39. },
  40. methods: {
  41. //当点击按钮时会触发的事件(这个事件中会调用自定义的事件)
  42. test: function(msg){
  43. console.log('be click' + msg);
  44. app.$emit('changeMsg', msg);
  45. }
  46. }
  47.  
  48. })
  49.  
  50. var app = new Vue({
  51. el: '#app',
  52. //初始化messages数组
  53. data: {
  54. message: 'hello',
  55. }
  56. });
  57.  
  58. //自定义事件
  59. app.$on('changeMsg', function (msg) {
  60. console.log('我是自定义事件')
  61. app.message = msg;
  62. })
  63. </script>
  64. </body>
  65. </html>

Vue入门2的更多相关文章

  1. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  2. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  3. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  4. vue入门学习(基础篇)

    vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...

  5. VUE 入门笔记

    前端的MVVM概念今年来也算是如火如荼,了解完 MVVM的概念,也该找个去尝试下 首先我先试了下 国内小而美的 VUE 试着照着文档敲出入门文件,内容都在注释里 <!doctype html&g ...

  6. Vue 入门指南 JS

    Vue 入门指南 章节导航 英文:http://vuejs.org/guide/index.html 介绍 vue.js 是用来构建web应用接口的一个库 技术上,Vue.js 重点集中在MVVM模式 ...

  7. Vue学习记录第一篇——Vue入门基础

    前面的话 Vue中文文档写得很好,界面清爽,内容翔实.但文档毕竟不是教程,文档一上来出现了大量的新概念,对于新手而言,并不友好.个人还是比较喜欢类似于<JS高级程序设计>的风格,从浅入深, ...

  8. parcel+vue入门

    一.parcel简单使用 npm install -D parcel-bundler npm init -y (-y表示yes,跳过项目初始化提问阶段,直接生成package.json 文件.) Pa ...

  9. Vue入门基础

    前面的话 Vue中文文档写得很好,界面清爽,内容翔实.但文档毕竟不是教程,文档一上来出现了大量的新概念,对于新手而言,并不友好.个人还是比较喜欢类似于<JS高级程序设计>的风格,从浅入深, ...

  10. 学习Vue 入门到实战——学习笔记

    闲聊: 自从进了现在的公司,小颖就再没怎么接触vue了,最近不太忙,所以想再学习下vue,就看了看vue相关视频,顺便做个笔记嘻嘻. 视频地址:Vue 入门到实战1.Vue 入门到实战2 学习内容: ...

随机推荐

  1. [MongoDB] mongodb与php

    windows上安装mongodb的php扩展 下载地址https://s3.amazonaws.com/drivers.mongodb.org/php/index.html 找到对应的php版本的d ...

  2. 【RabbitMQ】1、RabbitMQ的几种典型使用场景

    RabbitMQ主页:https://www.rabbitmq.com/ AMQP AMQP协议是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现.它主要包括以下组件: 1.Serve ...

  3. __repr__与__str__

    首先我们来举个例子,定义一个长方行类Cuboid,长为x,宽为y,高为z class Cuboid: def __init__(self, x = 3, y = 1, z = 2): self.x = ...

  4. JavaScript:作用域与作用域链

    1.什么是作用域(scope)? 简单来讲,作用域(scope)就是变量访问规则的有效范围. 作用域外,无法引用作用域内的变量: 离开作用域后,作用域的变量的内存空间会被清除,比如执行完函数或者关闭浏 ...

  5. Django使用多个数据库

    一.定义数据库 使用Django的多个数据库的第一步是告诉Django将使用的数据库服务器. 这是使用DATABASES设置完成的. 此设置将数据库别名映射到该特定连接的设置字典,该数据库别名是一种在 ...

  6. CentOS7下 将django工程部署到Apache2.4上

    因为需要写一个网站,考虑到也没写过其他的语言,就直接采用了python,说起python的框架,就是大名鼎鼎的Django啦. 工程所采用的版本是python 2.7,django 是1.8,wind ...

  7. 用JavaScript写弹窗

    每个弹窗的标识var x =0; var idzt = new Array(); var Window = function(config){ ID不重复 idzt[x] = "zhuti& ...

  8. JMeter4.0的界面汉化

    1.安装好之后 2.界面汉化 options->choose language->chinese(simplified) 3.汉化完成

  9. Android长按事件和点击事件 冲突问题

    长按点击的时候默认会触发点击事件,android系统是优先点击的,并且没有返回值:而长按事件是有返回值的,如果返回false,两个事件都会有响应,如果返回true则只响应长按事件.

  10. [Android] 仿照 Last App Switcher 写的小程序

      在Android众多工具类app中,Last App Switcher绝对算是一个让人用过就不会卸载的工具.LAS这个应用,它的功能很简单,就是通过一个浮动按钮实现在两个应用之间一键切换,但是非常 ...