概述

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。

Vue的特点

  • 易用:已经会了 HTML、CSS、JavaScript?即刻阅读指南开始构建应用!
  • 灵活:不断繁荣的生态系统,可以在一个库和一套完整框架之间自如伸缩。
  • 高效:a. 20kB min+gzip 运行大小   b. 超快虚拟 DOM  c. 最省心的优化

Vue的引用

想要在程序中引用,可以采用如下方式:

 <!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

或者

 <!-- 生产环境版本,优化了尺寸和速度 -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>

声明式渲染

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统,如下所示:

以文件插值的方式绑定文本内容。写法如下:{{message}}。

el 表示Vue绑定的容器ID,data表示数据变量 。

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>一起学Vue</title>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
{{message}}
</div>
<script type="text/javascript">
var app=new Vue({
el:"#app",
data:{
message:'welcome to vue world!'
}
});
</script>
</body>
</html>

我们已经成功创建了第一个 Vue 应用!看起来这跟渲染一个字符串模板非常类似,但是 Vue 在背后做了大量工作。现在数据和 DOM 已经被建立了关联,所有东西都是响应式的。

注意:script必须放置在div的后面,如果放置head中,会提示找不到元素app。

v-bind绑定元素属性

除了文本插值,我们还可以像这样来绑定元素特性:以v-bind,进行绑定title,格式如下:v-bind:title="message"

 <span v-bind:title="message">鼠标悬停几秒钟查看此处动态绑定的提示信息!</span>

条件判断

v-if="sean"用于判断是否显示标签(通过DOM的新增或删除),
v-show="sean"用于判断是否显示标签(通过样式来实现,如:display: none;)

如下所示:sean表示data的一个变量,初始值为true

 <p v-if="sean"> {{message}} </p>
<p v-show="sean">{{message}}</p>

列表循环

v-for 用于展示数组内容,通过改变元素的值,并不能触发页面发生变化,只有通过变异方法实现。

 <ul>
<li v-for="(todo ,index) in todos">{{todo.text}}---{{index}}</li>
</ul>

todos也是data的一个变量,如下所示:

 data:{
message:'welcome to vue world!',
sean:true,
todos:[{text:'学习java script'},{text:'学习html'},{text:'学习java'}],
groceryList: [
{ id: 0, text: '蔬菜' },
{ id: 1, text: '奶酪' },
{ id: 2, text: '随便其它什么人吃的东西' }
]
}

在控制台里,输入 app4.todos.push({ text: '新项目' }),你会发现列表最后添加了一个新项目。

绑定事件

v-on:click 用于绑定单击事件,如下所示:

 <button v-on:click="handleClick" >点击一下</button>

其中handleClick是vue中的一个自定义事件,如下所示:

 methods:{
handleClick:function(){
this.todos.push({text:'学习C#'});
}
}

表单输入

Vue 还提供了 v-model 指令,它能轻松实现表单输入和应用状态之间的双向绑定。

如下所示:

 <input type="text" v-model="message" />

自定义组件

在 Vue 里,一个组件本质上是一个拥有预定义选项的一个 Vue 实例。在 Vue 中注册组件很简单,如下所示:

props表示变量列表,其中‘todo’为变量名称,在使用时v-bind:todo="item"关联起来即可。

 Vue.component('todo-item1',{
//todo-item1,现在接收一个prop的自定义属性,prop名为todo
props:['todo'],
template:'<li>{{todo.text}}---{{todo.id}}</li>'
});

使用时如下所示:

 <ol>
<todo-item1 v-for="item in groceryList" v-bind:todo="item" v-bind:key="item.id"></todo-item1>
</ol>

其中groceryList 是定义的一个对象数组。

学习手册

最好的学习就是官网的指导手册,本例中涉及的代码如下所示:

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>一起学Vue</title>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-18
描述:以文件插值的方式绑定文本内容
-->
{{message}}
<br />
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-18
描述:以v-bind,进行绑定title,格式如下:v-bind:title="message"
-->
<span v-bind:title="message">鼠标悬停几秒钟查看此处动态绑定的提示信息!</span>
<br />
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-18
描述:v-if="sean"用于判断是否显示标签(通过DOM的新增或删除),
v-show="sean"用于判断是否显示标签(通过样式来实现,如:display: none;)
-->
<p v-if="sean"> {{message}} </p>
<p v-show="sean">{{message}}</p>
<br />
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-18
描述:v-for 用于展示数组内容,通过改变元素的值,并不能触发页面发生变化,只有通过变异方法实现,
如:push,pop,splice,
-->
<ul>
<li v-for="(todo ,index) in todos">
{{todo.text}}---{{index}}
</li>
</ul>
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-18
描述:v-on:click 用于绑定单击事件
-->
<button v-on:click="handleClick" >点击一下</button>
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-18
描述:v-model 实现表单输入和应用状态之间的双向绑定
-->
<input type="text" v-model="message" />
<br />
<ul>
<to-item></to-item>
</ul>
<ol>
<todo-item1 v-for="item in groceryList" v-bind:todo="item" v-bind:key="item.id"> </todo-item1>
</ol>
</div>
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-18
描述:script必须放置在div的后面,如果放置head中,会提示找不到元素app
-->
<script type="text/javascript">
//声明一个简单的组件
Vue.component('to-item',{
template:'<li>这是待办项</li>'
});
Vue.component('todo-item1',{
//todo-item1,现在接收一个prop的自定义属性,prop名为todo
props:['todo'],
template:'<li>{{todo.text}}---{{todo.id}}</li>'
})
var app=new Vue({
el:"#app",
data:{
message:'welcome to vue world!',
sean:true,
todos:[{text:'学习java script'},{text:'学习html'},{text:'学习java'}],
groceryList: [
{ id: 0, text: '蔬菜' },
{ id: 1, text: '奶酪' },
{ id: 2, text: '随便其它什么人吃的东西' }
]
},
methods:{
handleClick:function(){
this.todos.push({text:'学习C#'});
}
} }); </script>
</body>
</html>

备注

一首清新小诗,点散午后的烦忧。

山居秋暝
作者:王维 (唐)

空山新雨后,天气晚来秋。
明月松间照,清泉石上流。
竹喧归浣女,莲动下渔舟。
随意春芳歇,王孙自可留。

一起学Vue之入门篇的更多相关文章

  1. 一起学SpringMVC之入门篇

    本文属于SpringMVC的入门篇,属于基础知识,仅供学习分享使用,如有不足之处,还请指正. 什么是SpringMVC ? SpringMVC是一个基于Spring的MVC框架,继承了Spring的优 ...

  2. 1、Vue 实战-入门篇

    先决条件:需要 Node.js . npm 基础. 如果没有基础看先看下面简单的两点介绍. 1.npm 命令介绍. 1.所有命令  -h 可以查看.也可以从官网查 docs,结果如下. --help ...

  3. 一起学Vue:入门

    Why-为什么需要Vue? 前端开发存在的问题? 其一,需求变化频率更高 产品功能迭代前端肯定需要跟着调整. 提意见的人多,前端嘛谁都能看得见,所以,谁都可以指手画脚提一点意见.产品经理.项目经理.老 ...

  4. 边走边学Nodejs (基础入门篇)

    1.什么是Node.js Nodejs ,或者node, 是一个基于ChromeJavaScript执行时建立的平台.用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非堵 ...

  5. 一起学MyBatis之入门篇(2)

    概述 本文主要讲解MyBatis中类型转换的功能,其实在MyBatis中,提供了默认的数据类型之间的转换,但只是基本数据类型的转换,如果跨类型进行转换,则需要自定义转换类,如java中是boolean ...

  6. 一起学MyBatis之入门篇

    概述 本文以一个简单的小例子,简述在Java项目开发中MyBatis的基本用法,属于入门级文章,仅供学习分享使用,如有不足之处,还请指正. 什么是MyBatis? MyBatis 是一款优秀的持久层框 ...

  7. 2、Vue实战-配置篇-npm配置

    引言: 如果刚开始使用 vue 并不了解 nodejs.npm 相关知识可以看我上一篇的实践,快速入门了解实战知识树. Vue实战-入门篇 上篇反思: 1.新的关注点:开发 vue 模板.如何使用本地 ...

  8. 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发

    每天记录一点:NetCore获得配置文件 appsettings.json   用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...

  9. .NET Core实战项目之CMS 第六章 入门篇-Vue的快速入门及其使用

    写在前面 上面文章我给大家介绍了Dapper这个ORM框架的简单使用,大伙会用了嘛!本来今天这篇文章是要讲Vue的快速入门的,原因是想在后面的文章中使用Vue进行这个CMS系统的后台管理界面的实现.但 ...

随机推荐

  1. 【NOIP2017】【Luogu P3956】【SPFA】棋盘

    Luogu P3956 本题是一道简单的SPFA 具体看程序 #include<iostream> #include<cstdio> using namespace std; ...

  2. 使用Cap解决.Netcore分布式事务

    一.什么是Cap    CAP 是一个基于 .NET Standard 的 C# 库,它是一种处理分布式事务的解决方案,同样具有 EventBus 的功能,它具有轻量级.易使用.高性能等特点. 在我们 ...

  3. Airtest介绍与脚本入门

    前言 通过阅读本小节教程,你将了解以下内容: 一个Airtest脚本例子的详细解析 如何在Python脚本中调用Airtest接口 图片语句的参数介绍 Airtest介绍 Airtest是一款基于Py ...

  4. djanao请求生命周期

    djanao请求生命周期 浏览器发送请求到服务端 服务端的wsgi服务器接收到来自浏览器的请求, 对request做一些预处理, 把浏览器的请求信息(请求方式, 请求头, socket信息等)都封装在 ...

  5. ios注册通知NSNotificationCenter(一)

    作用:NSNotificationCenter是专门供程序中不同类间的消息通信而设置的. 注册通知:即要在什么地方接受消息 [[NSNotificationCenter defaultCenter]  ...

  6. 2019-2020-6 20199317《Linux内核原理与分析》第六周作业

    第5章  系统调用的三层机制(下) 1  给MenuOS增加命令         首先进入LinuxKernel目录下,用rm -rf menu强制删除当前的menu目录,然后用git clone重新 ...

  7. ansible源码安装、普通用户实现批量控制

    一.ansible简介 ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行 ...

  8. WebMagic 实现爬虫入门教程

    本示例实现某电影网站最新片源名称列表及详情页下载地址的抓取. webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发. WebMagic 特点: 完全 ...

  9. 不给糖果就捣乱,用Python绘制有趣的万圣节南瓜怪【华为云分享】

    关于万圣节 万圣节又叫诸圣节,在每年的11月1日,是西方的传统节日:而万圣节前夜的10月31日是这个节日最热闹的时刻.在中文里,常常把万圣节前夜(Halloween)讹译为万圣节(All Saints ...

  10. mysql的两阶段协议(封锁定理,虫洞事务)

    我们都知道数据库的事务具有ACID的四个属性:原子性,一致性,隔离性和持久性.然后在多线程操作的情况下,如果不能保证事务的隔离性,就会造成数据的修改丢失(事务2覆盖了事务1的修改结果).读到脏数据(事 ...