Vue起步

学习vue需要先了解关于 HTML、CSS 和 JavaScript 的基础知识,和一些ECMAScript5标准特性。
首先了解下Vue的作者:
尤雨溪,Vue.js框架的作者,毕业于上海复旦附中,在美国完成大学学业,本科毕业于Colgate University。2014年2月,开源了一个前端开发库Vue.js。2016年9月3日,在南京的JSConf上,Vue作者尤雨溪正式宣布加盟阿里巴巴Weex团队担任技术顾问。

一、简介

核心目标

Vue(读音 /vjuː/,类似于 view) 的核心库只关注视图层,Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。其它如状态、路由、网络请求需要单独引入相应框架,这使得Vue不仅易于上手,还便于与第三方库或既有项目整合。

渐进式框架

Vue 是一套构建数据驱动的 web 界面的渐进式框架(可以自底向上逐层应用),表现为:

声明式渲染——组件系统——客户端路由——大数据状态管理——-构建工具

  • 可以在数据、逻辑的处理上使用它的特性和设计模式,如响应式数据绑定,在数据变化时视图自动更新;
  • 可以在原有大系统的上面,把一两个组件改用它实现;
  • 用它处理页面跳转(vue-router);
  • 单页状态管理实例(vuex);
  • 也可以整个用它全家桶开发整套项目;

二、初识Vue

DOM渲染

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统。
创建第一个Vue应用

<div id="app2">
  {{ message }}
</div>
var app = new Vue({
  el: '#app2',
  data: {
    message: 'Hello Vue!'
  }
})
  • el: '#app2' 设置Vue实例的DOM根节点;
  • data: {...} 设置当前Vue实例的变量名称和默认值;

看起来这跟渲染一个字符串模板非常类似,但是 Vue 在背后做了大量工作。Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析。
现在数据和 DOM 已经被建立了关联,new Vue()函数返回了一个<div id="app">元素所对应的一个虚拟DOM 渲染函数。结合响应系统,Vue通过与真实DOM系统比对来来渲染需要更新的子元素和数据。

基础语法
1.条件与循环

条件语法Demo
指令:v-if v-else-if v-else

<div id="app-3">
  <p v-if="seen">现在你看到我了</p>
</div>
var app3 = new Vue({
  el: '#app-3',
  data: {
    seen: true
  }
})

循环语法Demo
指令: 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: '学习 JavaScript' },
      { text: '学习 Vue' },
      { text: '整个牛项目' }
    ]
  }
})
2.处理事件 Demo

指令:v-on , 用 v-on 指令添加一个事件监听器,通过它调用在 Vue 实例中定义的方法。

<div id="app-5">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">逆转消息</button>
</div>
var app5 = new Vue({
  el: '#app-5',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: {
    reverseMessage: function () {
      //切割成数组再反转数组然后拼接
      this.message = this.message.split('').reverse().join('')
    }
  }
})

这个示例中更新了html(即Vue模板)的状态,但是没有在js代码中获取任何元素——所有的 DOM 操作都由 Vue 来处理,你编写的代码只需要关注逻辑层面即可。

3.处理用户输入 Demo

指令: v-model , 轻松实现表单输入和应用状态之间的双向绑定。

<div id="app-6">
  <p>{{ message }}</p>
  <input v-model="message">
</div>
var app6 = new Vue({
  el: '#app-6',
  data: {
    message: 'Hello Vue!'
  }
})
4.精髓-组件化 Demo

指令: Vue.component()
组件系统是 Vue 的一个重要概念,它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用。几乎任意类型的应用界面都可以抽象为一个组件树:

image

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

// 定义名为 todo-item 的新组件
Vue.component('todo-item', {
  template: '<li>这是个待办项</li>'
})

可以用它构建另一个组件模板:

<ol>
  <!-- 创建一个 todo-item 组件的实例 -->
  <todo-item></todo-item>
</ol>

这个场景就是一个列表组件和一个单元格组件,我们可以通过循环和传值来简洁的生成一个列表:Demo

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

三、Vue全家桶:Vue、VueRouter、Vuex、axios

  • Vue.js主要聚焦于UI,提供了用于组件的整套生命周期函数、事件和数据传递机制、模板渲染机制。
  • VueRouter.js 是Vue.js 官方的路由管理器,提供了基于组件的路由配置、路由参数传递、视图过渡效果、导航控制等功能。
  • Vuex.js 是Vue应用的统一状态状态管理工具,Vuex 的状态存储是响应式的,而且改变状态的唯一途径就是显式地提交 (commit) mutation。
  • axios.js Vue官方推荐的网络请求工具,官方曾经提供过vue-resource工具,但是现在不推荐使用了。简单说axios.js就是一个同时支持浏览器和 node.js 的 http 请求客户端的网络请求库,基于 xhr 封装,使用 ES 规范的 Promise 来实现。

四、应用范围

1. 大型web项目,包括移动端和PC端、后台管理系统
  • 传统的web项目在扩展的过程中html文件会越来越复杂和冗余,脚本也会越来越多,从而产生加载速度、渲染效率、代码维护等方面的瓶颈问题。
  • 而且开发中反复编写和粘贴相同的代码极其枯燥,也容易产生错误。而React、Angular的产生正是大厂们在实际开发中根据自身技术和需求而设计完成的框架,这些框架紧跟ECMAScript标准,融合一些先进的开发思想和设计模式,很好的避免了上述大型项目中会遇到的瓶颈问题。
  • Vue和React、Angular都提供了组件化、动态绑定这些前端开发最亟需的功能,同时还提供了大量其他新颖且实用的特性,比如:按需加载、页面路由、路由拦截、统一状态管理等等,这使得使用这些框架开发大型项目相比于传统的开发模式大大简化了代码。众多优点不再一一举例。
2. 使用weex开发移动端跨平台应用程序
  • 虽然weex是不限于特定框架的,但目前主要还是以 Vue.js 和 Rax 作为其内置的前端框架。
  • Weex 致力于使开发者能使用同一套代码来构建 Android、iOS 和 Web 应用。具体来讲,在集成了 WeexSDK 之后,你可以使用 JavaScript 和现代流行的前端框架来开发移动应用。
  • Weex 在 iOS 和 Android 上都实现了一个渲染引擎,并提供了一套基础的内置组件。基于这些组件,可以用 js 封装更多的上层组件。尽管 Weex 中的组件看起来很像 HTML 标签,但你无法使用所有 HTML 标签,只能使用内置组件和自定义组件。
3. 使用vue-electron开发PC端跨平台应用程序
  • Electron提供了一个Nodejs的运行时来作为桌面程序的解释器,同时使用web页面来作为应用的GUI。本质上,electron 就是一个带了 Chrome 浏览器的壳子。
  • electron-vue 则是一个结合 vue-cli 与 electron 的项目,主要避免了使用 vue 手动建立起 electron 应用程序,很方便。
4. 作为学习其它框架和技术的跳板
  • Vue是中国人开发的,中文文档内容完整逻辑清晰,学习曲线也比React平缓很多,所以在国内应用的很广泛。
  • 移动端、后端招聘要求越来越多要求掌握至少一种前端框架。
  • 学习Vue对于学习跨平台开发、小程序都有一个打基础的作用。

参考链接

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • 基于Vue的一些资料 内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 element★...
    尝了又尝阅读 1,140评论 0 1
  • # 传智播客vue 学习## 1. 什么是 Vue.js* Vue 开发手机 APP 需要借助于 Weex* Vu...
    再见天才阅读 3,525评论 0 6
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    你猜_3214阅读 11,035评论 0 118
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    王喂马_阅读 6,441评论 1 77
  • 通过这几天的实训,感觉和学校完全不一样,项目经理的讲课方式也是受大家的喜欢,收获了很多,一方面学习到了许多以前没学...
    瞿佳佳阅读 326评论 2 1