Vue | 02 入门

news/2024/7/10 0:37:48 标签: Vue, frontend technology, framework

Vuejs_0">什么是Vue.js?

Vue(读/vjuː/)是一个用于构建用户界面的渐进式框架,不同于其它的大框架,Vue是被设计为自底向上适应的,核心库集中在视图层,容易使用以及和其它的库或已经存在的项目集成。另一方面,当和 modern tooling 和 supporting libraries 结合的时候,Vue完全能够为单网页应用提供支持。

如果你是一个有经验的前端开发人员,想要知道Vue和其他库的对比,移步 Comparison with Other Frameworks。

开始

官方假定你已经掌握了中级的HTML,CSS和JavaScript知识,如果你是新手,先看这个框架可能并不是一个好主意,你可以看完基础知识再回来,其他框架的经验会有帮助,但不是必须的。

最容易的方式是使用JSFiddle Hello World example尝试使用Vue.js。

声明式渲染

Vue允许我们在DOM通过模板语法声明的方式直接渲染数据

<div id="app">
	{{message}}
</div>
var app = new Vue({
    el: '#app'
    date:{
    	message: 'Hello Vue'
    }
})
Hello Vue

DOM元素虽然实时响应了数据,但他们之间并没有连接,也就是说你可以访问DOM元素改变message的值,值会实时改变。

元素属性绑定

<div id="app-2">
    <span v-bind:title="message">
      Hover your mouse over me for a few seconds to see my dynamically bound title!
    </span>
</div>
var app2 = new Vue({
    el: '#app-2',
    data:{
      messge:'You loaded this page on' + new 	   Date().toLocalString()    
    }
})
Hover your mouse over me for a few seconds to see my dynamically bound title!

v-bind:
v-表示由Vue提供,它会使用指定的交互行为去渲染DOM,这里的意思是使用message属性的最新值给到title

条件和循环

v-if根据条件渲染元素

<div id="app-3">
    <span v-if="seen">Now you see me</span>
</div>
var app3 = new Vue({
    el: '#app-3',
    data: {
        seen: true
    }
})

Now you seen me

Vue不仅可以绑定文本和属性,也可以绑定DOM的结构。当元素通过Vue被插入、删除、更新而时候,Vue提供了过渡效果。

v-for指令可以把一个数组数据显示为一个列表条目

<div id="app-4">
    <ol>
        <li v-for="todo in todos">
        {{ todo.text }}
        </li>
    </ol>
</div>
var app4 = new Vue({
    el: "#app-4",
    data: {
        todos: [
            { text: 'Learn JavaScript' },
            { text: 'Learn Vue' },
            { text: 'Build something awesome' }
        ]
    }
})
1.Learn JavaScript <br>
2.Learn Vue<br>
3.Build something awesome

处理用户输入

使用v-on指令去实现事件监听,在Vue实例里面调用methods

<div id="app-5">
    <p>{{ message }}</p>
    <button v-on:click="reverseMessage">
        REverse Message
    </button>
</div>
var app5 = new Vue({
    el: '#app-5',
    data:{
    	message:'Hello Vue.js!'
	},
	methods: {
      reverseMessage: function(){
        this.message = this.message.split('').reverse().join('')
      }
    }
})

v-on user-input

点击Reverse Message 按钮
v-model user-input reverse

Note:在这个方法里面会更新app的所有状态,无需触发DOM,所有DOM通过Vue管理,我们只需要集中写代码的逻辑。

v-model使我们输入框的值和app 状态间双向绑定

<div id="app-6">
    <p>
        {{ message }}
    </p>
    <input v-model="message">
</div>
var app6 = new Vue({
    el: '#app-6',
    data: {
        message: 'Hello Vue!'
    }
})

v-model hello <a class=Vue" />

组件组成

组件系统是Vue的另一个重要原则,它是一个抽奖概念,可以让我们把一些小的、自包含的、可复用的组件组成大的应用。

Vue,组件是一个被预定义的Vue实例,注册组件:

// Define a new component called todo-item
Vue.component('todo-item',{
    template: '<li>This is a todo</li>'
})
new Vue({
    el:'#app-8'
})

现在可以在另一个组件模板里使用它

<ol id="app-8">
    <!-- Create an instance of the todo-item component -->
    <todo-item></todo-item>
</ol>

上面这个文本是写死的,我们希望数据能够在父级作用域传递数据给子控件,我们修改我们的组件,给到一个prop

Vue.component('todo-item',{
    // The todo-item component now accepts a 
    // "prop", which is like a custom attribute.
    // This prop is called todo.
    props: ['todo']
    template: '<li>{{ todo.text }}</li>'
})

现在我们使用v-bind传递组件给todo属性。

<div id="app-7">
    <ol>
        <!-- 现在我们提供给todo-item一个todo对象,它的内容是动态的。我们也需要提供给每一个组件一个“key”,稍后解释 -->
        <todo-item 
                   v-for="item in groceryList"
                   v-bind:todo="item"
                   v-bind:key="item.id">
        </todo-item>
    </ol>
</div>
Vue.component('todo-item',{
    props: ['todo'],
    template: '<li>{{ todo.text }}</li>'
})

var app7 = new Vue({
    el: '#app-7',
    data: {
        groceryList: [
            { id: 0, text: 'Vegetables' },
            { id: 1, text: 'Cheese' },
            { id: 2, text: 'Whatever else humans are supposed to eat' }
        ]
    }
})
1.Vegetables<br>
2.Cheese<br>
3.Whatever else humans are supposed to eat

这一次,我们把component分成两个小单元,子控件通过props解耦了,我们在不影响父控件的基础上把他变得更为复杂。

为了更大的应用场景,我们通常需要把整个应用内的组件分离,后面会讨论,我们先虚拟一个例子:

<div id="app">
    <app-nav></app-nav>
    <app-view>
    	<app-sidebar></app-sidebar>
        <app-conent></app-conent>
    </app-view>
</div>

关于自定义元素

你可能注意到了Vue的组件和自定义元素非常相似,它们是 Web Components Spec的一部分,因为Vue的组件语法是在spec之后的大致模仿。Vue组件实现了Slot API和is的特有属性。然而,它们是不同的:

  1. The Web Component Spec已经被最终确定,但是并没有被每一种浏览器实现。Safari 10.1+,Chrome 54+ 和Firefox 63+ 天然支持 web 组件,相比之下,Vue components 并不要求任何填充物就可以在所有浏览器下工作(IE9 以上)。如果需要,Vue组件也能够被写在原生自定义组件里。
  2. Vue组件提供了一些原生自定义元素没有提供的重要功能,最值得注意的是跨组件数据流,自定义事件通信和构建工具集成。

http://www.niftyadmin.cn/n/1035794.html

相关文章

第一行代码第七章——探究内容提供器

目录7.1 内容提供器简介7.2 运行权限7.2.1 Android权限机制详解7.2.2 在程序运行时申请权限7.3 访问其他程序中的数据7.3.1 ContentResolver的基本用法7.1 内容提供器简介 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能。它提供了一套完整的机…

Vue | 03 实例

创建一个Vue实例 每一个Vue应用都需要从使用Vue函数创建一个Vue实例开始&#xff1a; var vm new Vue({//options })虽然和 MVVM pattern 不太相关&#xff0c;Vue的设计部分来自于它的灵感&#xff0c;例如习惯上&#xff0c;我们常常使用vm&#xff08;ViewModel的简写&am…

设计模式 单例

目录概念&#xff1a;常见应用场景优缺点&#xff1a;实现方式&#xff1a;1.饿汉式实现2.懒汉式实现3.双重检测琐式&#xff08;一般不用&#xff09;4.静态内部类的实现&#xff08;懒加载&#xff09;5.枚举实现方式概念&#xff1a; 单例&#xff1a;保证一个类&#xff0…

设计模式 工厂模式

目录工厂模式概念&#xff1a;1.详细分类简单工厂模式工厂方法模式抽象工厂2.简单工厂&#xff1a;工厂模式概念&#xff1a; 实现了创建者和调用者的分离 1.详细分类 简单工厂模式 用来生产同一等级结构中的任意产品&#xff08;对于增加的新产品&#xff0c;需要修改已有…

Vue | 04 模板语法

内容提要&#xff1a; 如何在HTML中插入值&#xff08;包括插入纯文本、生成原生HTML、属性绑定v-bind、JavaScript表达式的使用&#xff09;指令&#xff08;指令的表示方式、参数与修饰符的含义、写法、用法&#xff09;速记&#xff08;速记的意义、使用场景、v-bind和v-on…

通过position属性实现文本在页面中的任意位置

页面文本根据需求需要实现位置的自由设置&#xff0c;需要使用属性position来实现&#xff0c;Demo代码如下所示&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>position文本定位</title> <style…

二.自定义View 基础知识attr

知识点整理1.attr1.1 概念2.attr 作用3.attr 使用方式2.attr的简单创建3.format 数据类型具体参考4.attr 的使用前言&#xff1a;自定义view是android自定义控件的核心之一&#xff0c;那么在学习自定义view之前&#xff0c;我们先来了解下自定义view的自定义属性的attr的用法。…

一.自定义View 基础知识

知识点整理1.自定义View基础1.1 View的分类1.2 View类简介1.2.1 自定义view的基本方式1.2.2 自定义控件分类1.3 AttributeSet与自定义属性1.4 View视图结构1.5 Android坐标系1.6 Android 中颜色相关内容1.自定义View基础 1.1 View的分类 类别解释特点单一视图即一个View&…