Vue入门2

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

前言

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

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

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

七、Vue实例

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

八、注册全局组件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>vue-demos</title>
        <script src="../vue.js"></script>
    </head>
    <body>
        <!--
            全局组件
            在Vue里,一个组件实质上是一个拥有预定义选项的一个Vue实例。
            要注册一个全局组件,你可以使用 Vue.component(tagName, options)
        -->
        <div id="app">
            <!-- 引用组件 -->
            <my-component></my-component>
        </div>
        <script>
            // 注册组件。要确保在初始化根实例之前注册了组件
            Vue.component(‘my-component‘, {
                template: ‘<div>A custom component!</div>‘
            });
            // 创建根实例
            var app = new Vue({
                el: ‘#app‘
            });
        </script>
    </body>
</html>

九、注册局部组件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>vue-demos</title>
        <script src="../vue.js"></script>
    </head>
    <body>
        <!--
            局部注册组件
            不必在全局注册每个组件。通过使用组件实例选项注册,可以使组件仅在另一个实例/组件的作用域中可用
        -->
        <div id="app">
            <!-- 引用组件 -->
            <my-component></my-component>
        </div>
        <script>
            // 注册局部组件
            var Child = {
                template: ‘<div>A child component!</div>‘
            }
            // 创建根实例.并调用局部组件
            var app = new Vue({
                el: ‘#app‘,
                components: {
                    ‘my-component‘: Child
                }
            });
        </script>
    </body>
</html>

十、props传递数据

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>vue-demos</title>
        <script src="../vue.js"></script>
    </head>
    <body>
        <!--
            父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息
            prop 是单向绑定的:当父组件的属性变化时,将传导给子组件。
            父组件使用 props 把数据传给子组件,子组件需要显式地用 props 选项 声明 “prop”:
        -->
        <div id="app">
            <!-- 引用组件 -->
            <child message="hello!"></child>
        </div>
        <script>
            Vue.component(‘child‘, {
                // 声明父组件的属性,props。然后在本子组件中就可以使用这个属性。
                props: [‘message‘],
                template: ‘<span>{{ message }}</span>‘
            })

            var app = new Vue({
                el: ‘#app‘
            });
        </script>
    </body>
</html>

十一、自定义事件events

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>vue-demos</title>
        <script src="../vue.js"></script>
    </head>
    <body>
        <!--
            父组件使用 props 把数据传给子组件,但如果子组件要把数据传递回去,那就是自定义事件!
            自定义事件也是使用v-on绑定。
            使用 $on(eventName) 监听事件
            使用 $emit(eventName) 触发事件

            本例在app实例里定义了事件changeMsg().在子组件中去触发这个事件。从而实现子组件的数据传递到父组件
        -->

        <div id="app">
            <p>Message: {{message}}</p>
            <child></child>
        </div>

        <template id="temp">
            <div>
                <input v-model="msg" placeholder="please input your message!" />
                <button @click="test(msg)">change message</button>
            </div>
        </template>

        <script>
            Vue.component(‘child‘, {
                //指定模板为id为"temp"标签
                template: "#temp",
                //定义模板中初始化的值,data应该是一个函数
                data: function() {
                    return {
                        msg: "hello",
                    }
                },
                methods: {
                    //当点击按钮时会触发的事件(这个事件中会调用自定义的事件)
                    test: function(msg){
                        console.log(‘be click‘ + msg);
                        app.$emit(‘changeMsg‘, msg);
                    }
                }

            })

            var app = new Vue({
                el: ‘#app‘,
                //初始化messages数组
                data: {
                    message: ‘hello‘,
                }
            });

            //自定义事件
            app.$on(‘changeMsg‘, function (msg) {
                console.log(‘我是自定义事件‘)
                app.message = msg;
            })
        </script>
    </body>
</html>

时间: 2024-10-18 13:03:30

Vue入门2的相关文章

Vue入门之Vuex实战

引言 Vue组件化做的确实非常彻底,它独有的vue单文件组件也是做的非常有特色.组件化的同时带来的是:组件之间的数据共享和通信的难题. 尤其Vue组件设计的就是,父组件通过子组件的prop进行传递数据,而且数据传递是单向的.也就是说:父组件可以把数据传递给子组件,但是 反之则不同.如下图所示: 单向数据流动 单方向的数据流动带来了非常简洁和清晰的数据流,纯展示性或者独立性较强的模块的开发确实非常方便和省事. 但是复杂的页面逻辑,组件之间的数据共享处理就会需要通过事件总线的方式解决或者使用Vue的

vue入门(二)----模板与计算属性

其实这部分内容我也是参考的官网:http://cn.vuejs.org/v2/guide/syntax.html,但是我还是想把自己不懂的知识记录一下,加深印象,也可以帮助自己以后查阅.所谓勤能补拙. 首先我们说一下模板,其实如果看过第一节vue入门----组件,我们会知道更好更科学的办法是通过创建组件的方式,这种方式允许我们任意进行组件的嵌套.而通过模板的方式的话,个人觉得效果并没有组件好.行,开始切入正题,现在我们首先通过一下几点来进行学习(其实是按照官网的顺序记录自己不懂的知识点). 1.

Vue 入门指南 JS

Vue 入门指南 章节导航 英文:http://vuejs.org/guide/index.html 介绍 vue.js 是用来构建web应用接口的一个库 技术上,Vue.js 重点集中在MVVM模式的ViewModel层,它连接视图和数据绑定模型通过两种方式.实际的DOM操作和输出格式被抽象的方式到指令(Directives)和过滤器(Filters) 在哲学领域内,尽量让MVVM数据绑定API尽可能简单.模块化和可组合性也是重要的设计考虑.vue不是一个全面的框架,它被设计成简单的和灵活的.

Vue入门环境搭建

vue这个新的工具,确实能够提高效率,在经历的一段时间的摧残之后,终于能够有一个系统的认识了,下面就今天的收获做一个总结,也是vue入门的精髓: 1.要使用vue来开发前端框架,首先要有环境,这个环境要借助于node,所以要先安装node,借助于node里面的npm来安装需要的依赖等等. 这里有一个小技巧:如果在cmd中直接使用npm来安装的一些工具的话会比较慢,所以我们使用淘宝的npm镜像: 输入npm install -g cnpm –registry=https://registry.np

Vue入门系列(五)Vue实例详解与生命周期

[入门系列] [本文转自] http://www.cnblogs.com/fly_dragon Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着.销毁等过程进行js控制. 5.1. Vue实例初始化的选项配置对象详解 前面我们已经用了很多次 new Vue({...})的代码,而且Vue初始化的选项都已经用了data.methods.el.comp

vue入门——基本概念

1. 挂载点,模板,实例的关系? 首先附上一个基本demo: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <title>vue 入门</title> 6 <script src="./vue.js"></script> 7 </head>

parcel+vue入门

一.parcel简单使用 npm install -D parcel-bundler npm init -y (-y表示yes,跳过项目初始化提问阶段,直接生成package.json 文件.) Parcel 可以使用任何类型的文件作为入口,但是最好还是使用 HTML 或 JavaScript 文件.如果在 HTML 中使用相对路径引入主要的 JavaScript 文件,Parcel 也将会对它进行处理将其替换为相对于输出文件的 URL 地址. 接下来,创建一个 index.html 和 ind

Vue入门篇

一  ES6语法 1  ECMAScript 1995年,网景工程师Brendan Eich 花了10天时间设计了JavaScript语言. 1996年,微软发布了JScript,其实是JavaScript的逆向工程实现. 1997年,为了统一各种不同script脚本语言,ECMA(欧洲计算机制造商协会)以JavaScript为基础,制定了ECMAscript标准规范.JavaScript和JScript都是ECMAScript的标准实现者,随后各大浏览器厂商纷纷实现了ECMAScript标准.

Vue入门教程

Vue入门基础基础 TypeScript 为 JavaScript 带来静态类型检查,让 JavaScript 编写中大型应用的时候可以应用工具来避免部分错误. Vue 很早就支持 TypeScript,但配置起来比较麻烦,幸好有了 Vue CLI 3.0.安装好 vue-cli 之后,使用 vue create 项目名称 来创建项目,vue 脚本手架自动创建以项目名称命名的目录. vue-cli 3 生成的项目结构比较科学,尤其是通过 components 和 views 将作为控件的组件和作

Vue 入门之概念

Vue 简介 Vue 是一个前端的双向绑定类的框架,发音[读音 /vju?/, 类似于 [view].新的 Vue 版本参考了 React 的部分设计,当然也有自己独特的地方,比如 Vue 的单文件组件开发方式都很有创新,另外 Vue 自身的一些绑定的语法.用法等都非常精炼,很容易上手,而且第三方的插件都非常丰富,社区非常活跃,最新的文档都有中文版本.而且 Vue 配合官方的和第三方的库可以实现单文件的组件化开发.SPA 等现代化前端开发.详情请参考Vue 官网 Vue 的入门 demo Vue