zoukankan      html  css  js  c++  java
  • Vue(二)Vue.js 与其他前端框架对比

    一、Vue.js 的性质

    Vue.js 聚焦于视图层,通过API 提供数据绑定的组件,是一个构建数据驱动的 Web 界面的库,不是一个前端框架。

    Vue.js ① 具有轻量级的特点,方便做数据绑定;② 自带一套指令(也可以自定义扩充)通过表达式的值控制DOM 的状态;③ 方便通过加载插件扩充功能。适用于富交互、状态机一类的前端 UI 界面。

    二、Vue.js 与 AngularJS、React、Knockout、Ractive.js、Polymer、Backbone.js、Riot 的区别

    Vue.js 与那些前端框架的区别
    前端框架 异同点

    AngularJS

    (Google)

    相同点:

    ① 支持指令(内置/自定义);

    ② 支持过滤器(内置/自定义);

    ③ 支持双向绑定;

    ④ 不支持底端浏览器(≤ IE8)。

    不同点:

    AngularJS 依赖对数据做脏检查,所以 watcher 越多速度越慢,而Vue.js 使用基于依赖追踪的 watcher,并且使用异步队列更新,所有数据都是独立触发。

    React

    (Facebook)

    相同点:

    ① React 采用特殊的JSX 语法,对文件内容有一些约定,需要编译后使用;

    ② 中心思想:一切都是组件,组件实例之间可以嵌套;

    ③ 提供何来的钩子函数,允许开发者定制化地处理需求;

    ④ 核心包不内置 AJAX、Router 等功能,通过插件等方式加载、扩展;

    ⑤ 组件开发中支持 mixins 的特性。

    不同点:

    ① React 依赖 Virtual DOM,会对渲染出的结果做脏检查,而 Vue.js 使用的是 DOM 模板;

    ② Vue.js 在模板中提供指令、过滤器用于操作 DOM。

    Knockout

    相同点:

    ① 用到了数据和 DOM 元素绑定,追求 UI 和数据关联,自动刷新;

    ② DOM 元素基于模板;

    ③ 支持依赖跟踪。

    不同点:

    ① Knockout 的所有可观测属性都需要手动用 obserable 方法来初始化,并且需要用函数调用的方式操作数据;

    ② Knockout 没有 ViewModel 之间作用域的继承。

    Ractive.js

    相同点:

    通过实例化一个(Ractive)类,传递元素、数据和模板;

    不同点:

    Ractive 用字符串模板,数据模型用 get 和 set 代码体积较大;

    Polymer

    相同点:

    ① 支持数据绑定;

    ② 约定了文件或元素的组织方式,Polymer 中把 template-script 放在一个文件里。

    不同点:

    ① Polymer 推崇 WebComponennt 标准化,依赖浏览器环境的支持,如果浏览器不支持,则需要加载相应的 Polyfill;

    ② Polymer 的代码体积大于 Vue.js

    Backbone.js

    不同点:

    ① Vue.js 专注于 View,而 Backbone 包含了 View、Collection、Model 及 Router;

    ② Vue.js 拥有数据绑定的特性,而 Backbone 需要手动通过事件操作 DOM。

    Riot

    相同点:

    ① 轻量级;

    ② 提供自定义的生命周期钩子,方便使用;

    ③ 与主流工具集成度比较高,支持与各种预编译工具集成;

    ④ 组件化思想,并且将 HTML、CSS、JS 集成在一个组件中;

    ⑤ 只更新变化了的元素。

    不同点:

    ① Riot 内置路由功能、设计支持 Virtual DOM;

    ② Riot 支持自定义标签,将标签内容放在 .tag 文件中,使用 script 特殊的 type="riot/tag" 加载编译器;

    ③ 推崇 Web Component 标准化;

    ④ Riot 支持服务端渲染;

    ⑤ 默认单向绑定。


    Vue.js 的安装与使用

    三种安装方式
    环境 安装方式
    直接通过 script 加载 CDN 文件 <script src="http://webapp.didistatic.com/static/webapp/shield/z/vue/vue/1.0.24/vue.miin.js"></script>
    基于 npm 管理依赖 $ npm i vue --save-dev
    基于 bower 管理依赖 $ bower i vue --save-dev

    Hello World

    <div id="my-navigator">
      <ul>
        <li v-for="tab in tabs">
          {{ tab.text }}
        </li>
      </ul>
    </div>
    
    new Vue({
      el: '#my-navigator',
      data: {
        tabs: [
          { text: '首页' },
          { text: '关于我们' }
        ]
      }
    })
  • 相关阅读:
    CodeForces 587A
    矩阵快速幂模板
    LCA模板
    Codeforces Round #226 (Div. 2 )
    Codeforces Round #225 (Div. 2)
    SGU132
    SRM 599 DIV 2
    POJ1038
    SGU223
    POJ1185
  • 原文地址:https://www.cnblogs.com/shilxfly/p/9437051.html
Copyright © 2011-2022 走看看