Vue.js基础知识汇总


Posted in Javascript onApril 27, 2016

介绍

vue.js 是用来构建web应用接口的一个库

技术上,Vue.js 重点集中在MVVM模式的ViewModel层,它连接视图和数据绑定模型通过两种方式。实际的DOM操作和输出格式被抽象的方式到指令(Directives)和过滤器(Filters)

在哲学领域内,尽量让MVVM数据绑定API尽可能简单。模块化和可组合性也是重要的设计考虑。vue不是一个全面的框架,它被设计成简单的和灵活的。你可以用它快速原型,或混合和匹配与其他库定义前端堆栈。

Vue。js的API是参考了AngularJS、KnockoutJS Ractive.js Rivets.js。尽管有相似之处,我相信Vue.js提供一个有价值能够让你在现在的一些现有框架中舍取其价值

即使你已经熟悉其中的一些术语,建议您通过以下概念的概述,因为你的这些术语的概念可能在Vue.js的下文中有所不同

概念概述

ViewModel

一个对象,同步模型和视图. 在Vue.js中,ViewModels是实例化的Vue的构造器或者是它的子类

var vm = new Vue({ /* options */ })

这是主要的对象,你会与作为开发人员在使用Vue.js交互。更多细节请参阅Class: Vue.

View

用户看到的实际HTML / DOM

vm.$el // The View

当使用Vue.js时候,除了自己自定义的指令你几乎不会触碰到DOM的操作,当数据更新后视图的更新将会自动的触发,视图的更新可以很精确的到每一个testNode节点,他们也批处理和异步执行从而提供更好的性能。

Model

这是一个略微修改的Javascript对象

vm.$data // The Model

在Vue.js中,模型只是简单的Javascript对象,数据对象,你能够操控他们的属性和视图模型,观察他们的从而能获取通知后更改。Vue.js在data对象胡总用ES5的 getter/setter 把属性转化了,它允许直接操作而不需要脏检查。

data对象在适当的时候会产生突变,所以修改它与通过引用修改vm.$data是一样的效果。这也方便了多个ViewModel实例观察同一块数据。

技术细节请看Instantiation Options: data.

Directives

私有的HTML属性是告诉Vue.js做一些关于DOM的处理

<div v-text="message"></div>

这里的div元素有一个v-text的指令,值是message.意思是告诉Vue.js 保持这个div节点的内容与viewMode中的message属性同步

指令可以封装任意DOM操作。例如v-attr 操作一个属性元素,v-repeat克隆基于数组的一个元素,v-on附加事件监听,我们稍后讨论.

Mustache Bindings

您还可以使用mustache-style绑定,在文本和属性。他们翻译成v-text v-attr指令。例如:

<div id="person-{{id}}">Hello {{name}}!</div>

虽然方便,但有几件事你需要注意的:

如果设置一个image的src属性的时候,会发送一个HTTP请求,所以当模板是第一次解析出现404,此时用v-attr比较好

当解析HTML的时候,Internet Explorer将会删除无效的内部style属性,所以我们想要支持IE绑定内联的CSS 我就总是用v-style

在v-html内部,非转义的HTML你能用三个大括号{{{像这样}}}处理,但是这样会有潜在的XSS攻击,能打开windows,所以建议是绝对安全的数据全的时候才这样做,或者通过自定义管道过滤器清理不可信的HTML

Filters

在更新视图之前可以用函数来处理这个原始的数据。他们正在用一个“管道”指令或绑定:

<div>{{message | capitalize}}</div>

现在在div的文本内容要更新之前,这个message的值将会通过capitalize函数处理。详细请看Filters in Depth.

Components

在Vue.js,一个组件是一个简单的视图模型构造函数,通过Vue.component(ID, constructor)注册。通过一个关联的ID,可以嵌套另外的视图模型的模板的v-component指令。这种简单的机制使声明视图模型的重用和组合方式类似于Web组件,而不需要最新的浏览器或重型polyfills。通过将应用程序分解成更小的组件,其结果是一个高度解耦和可维护的代码库。更多细节,请参阅Composing ViewModels.

A Quick Example

<div id="demo">
  <h1>{{title | uppercase}}</h1>
  <ul>
    <li
      v-repeat="todos"
      v-on="click: done = !done"
      class="{{done ? 'done' : ''}}">
      {{content}}
    </li>
  </ul>
</div>
var demo = new Vue({
  el: '#demo',
  data: {
    title: 'todos',
    todos: [
      {
        done: true,
        content: 'Learn JavaScript'
      },
      {
        done: false,
        content: 'Learn vue.js'
      }
    ]
  }
})

粗略翻译,有错误请指出

Javascript 相关文章推荐
用js实现的页面关键字密度查询代码
Dec 27 Javascript
两个select之间option的互相添加操作(jquery实现)
Nov 12 Javascript
JQuery 操作select标签实现代码
May 14 Javascript
JavaScript 变量作用域分析
Jul 04 Javascript
php实例分享之实现显示网站运行时间
May 20 Javascript
JS实现可调整倒计时间代码分享
Aug 18 Javascript
jQuery实现简洁的导航菜单效果
Nov 23 Javascript
AngularJS ng-template寄宿方式用法分析
Nov 07 Javascript
webpack学习笔记之优化缓存、合并、懒加载
Aug 24 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 Javascript
Vue项目引发的「过滤器」使用教程
Mar 12 Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 Javascript
JS onkeypress兼容性写法详解
Apr 27 #Javascript
使用vue.js开发时一些注意事项
Apr 27 #Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 #Javascript
Function.prototype.apply()与Function.prototype.call()小结
Apr 27 #Javascript
常用原生JS兼容性写法汇总
Apr 27 #Javascript
JS组件Bootstrap实现弹出框效果代码
Apr 26 #Javascript
跨域资源共享 CORS 详解
Apr 26 #Javascript
You might like
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
PHP 常用函数库和一些实用小技巧
2009/01/01 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
django ajax json的实例代码
2018/05/29 Python
python实现五子棋小游戏
2020/03/25 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
Python数学形态学实例分析
2019/09/06 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
eBay奥地利站:eBay.at
2019/07/24 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
承诺书的格式范文
2014/03/28 职场文书
总经理岗位职责
2015/02/04 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
vue+iview实现手机号分段输入框
2022/03/25 Vue.js
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python
服务器间如何实现文件共享
2022/05/20 Servers