vue——介绍和使用

1、vue介绍

  vue官网说:Vue.js(读音 /vjuː/,相似于 view) 是一套构建用户界面的渐进式的JavaScript框架。与其余重量级框架不一样的是,Vue 采用自底向上增量开发的设计。 javascript

一、渐进式的JavaScript框架

          Angular    React          Vue
做者      google公司  facebook公司   尤雨溪
组织方式   MVC        模块化          模块化
数据绑定   双向绑定    单向绑定        双向绑定
模板能力   强大        自由           自由
自由度    较小         大             较大
路由      静态路由     动态路由       动态路由

二、前端框架和库的区别

(1)功能上的不一样

  jquery库:包含DOM(操做DOM)+请求,就是一块功能的实现。html

  art-template库:模板引擎渲染,高性能的渲染DOM。前端

  框架:大而全的概念,简易的DOM体验+请求处理+模板引擎。vue

  在KFC的世界来看的话,库就是一个小套餐,框架就是全家桶。java

(2)代码上的不一样

  通常使用库的代码,是调用某个函数或者使用抛出来的对象,咱们本身处理库中的代码。node

  通常使用框架,框架自己提供好的成套的工具帮咱们运行咱们编写好的代码。jquery

(3)框架的使用

  1)初始化自身的一些行为;git

  2)执行你所编写的代码;github

  3)释放一些资源。ajax

三、关于渐进式和自底向上增量开发

  咱们来看一下知乎的回答:知乎回答

  总的来讲,它给你提供足够的optional,但并不主张不少required。

  咱们常说:作减法比作加法难。我以为一个框架若是是“渐进式”的,就意味着,它自己承担了较难的作减法的部分,而留给它的使用者较简单的作加法的部分。

  就是说,在咱们用一个工具的时候,并非为了用其中的某一个部分,而想办法无视或者裁剪掉其余部分(作减法),而是上手就能够用上它的大多数功能,再在须要的时候引入它的官方或第三方插件(作加法)。

2、vuejs的优势

1.易用

  已经会了 HTML、CSS、JavaScript?即刻阅读指南开始构建应用!

2.灵活

  不断繁荣的生态系统,能够在一个库和一套完整框架之间自如伸缩。

3.高效

  20kB min+gzip 运行大小
      超快虚拟 DOM (虚拟dom的渲染速度要比咱们真实的dom渲染速度快)
      最省心的优化

  虚拟的DOM的核心思想是:对复杂的文档DOM结构,提供一种方便的工具,进行最小化地DOM操做。这句话,也许过于抽象,却基本概况了虚拟DOM的设计思想

  (1) 提供一种方便的工具,使得开发效率获得保证

  (2) 保证最小化的DOM操做,使得执行效率获得保证

3、vue的使用

一、安装

(1)兼容性

  Vue 不支持 IE8 及如下版本,由于 Vue 使用了 IE8 没法模拟的 ECMAScript 5 特性。但它支持全部兼容 ECMAScript 5 的浏览器

(2)Vue Devtools插件

  在使用 Vue 时,推荐在浏览器上安装 Vue Devtools。它容许你在一个更友好的界面中审查和调试 Vue 应用。

(3)直接用<script>引入(推荐新手使用)

  直接下载并用 <script> 标签引入,Vue 会被注册为一个全局变量。

  下载能够选择去npm下载或者去vue官网下载并引入:

  

(4)cdn引入

  咱们推荐连接到一个你能够手动更新的指定版本号:

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>

  能够在 cdn.jsdelivr.net/npm/vue 浏览 NPM 包的源代码。

  Vue 也能够在 unpkg 和 cdnjs 上获取 (cdnjs 的版本更新可能略滞后)。

  确认了解不一样构建版本并在你发布的站点中使用生产环境版本,把 vue.js 换成 vue.min.js。这是一个更小的构建,能够带来比开发环境下更快的速度体验。(开发环境使用vue.js,生产环境使用vue.min.js

二、引入vue.js文件

  这里是开发环境,所以选用vue.js。

<body>
    <!--1.先引包-->
    <!--<script src="js/vue.js"></script>-->
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
    <script type="text/javascript">

    </script>
</body>

  引入vue.js文件后,Vue被注册为一个全局的变量,是一个构造函数。在网站控制台查看:

  

4、使用Vue实例化对象

一、建立vue实例对象

  每一个 Vue 应用都是经过用 Vue 函数建立一个新的 Vue 实例开始的:

<body>
    <div id="app">
        <h3>{{title}}</h3>
        <p>{{msg}}</p>
    </div>
<script src="js/vue.js"></script>
<script>
    // 建立vue实例对象
    var app = new Vue({
        el: "#app",    // 元素
        // 全部的数据都放在数据属性里
        data: {
            title: "土豆",
            msg: "路飞"
        }
    })
</script>
</body>

  输出结果:

  

  已经简单的建立了第一个vue应用。渲染的数据的方式咱们也叫声明式的渲染。如今数据和 DOM 已经被创建了关联,全部东西都是响应式的。咱们要怎么确认呢?打开你的浏览器的 JavaScript 控制台 (就在这个页面打开),并修改 app.msg 的值,你将看到上例相应地更新。

二、模板语法

  {{}}模板语法:主要做用是插值不只能够插变量,只要你能想到的插入均可以(if-else不能够)。

<body>
    <div id="app">
        <h3>{{msg}}</h3>
        <!--字符串拼接-->
        <h3>{{msg + 'hello'}}</h3>
        <!--三目运算符-->
        <h3>{{1>2?"真的":"假的"}}</h3>
        <!--能够插入字符串-->
        <h4>{{'helloworld'.split('').reverse().join('')}}</h4>
        <!--不能使用if-else-->
        <!--{{}}模板语法的设计,只是为了简单的运算-->
    </div>

    <!--1.先引包-->
    <!--<script src="js/vue.js"></script>-->
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
    <script type="text/javascript">
        // 2.建立vue实例化对象
        new Vue({
            el: '#app',  // 目的地
            data:{       // data属性能够是函数或对象
                msg: 'hello Vue'   // 数据属性
            }
        })
    </script>
</body> 

  显示效果:

  

注意:

  1)data属性能够是一个函数也能够是一个对象。msg是数据属性。依靠数据驱动视图(模板语法),将数据(msg)渲染到DOM(标签也就是view)中。

  2)模板语法中不能使用if-else

  3)Vue实例化对象后,这个对象中属性前面都有前缀 $,主要是为了跟咱们自定义的属性区分。

三、app.$el对象问题

(1)app.$el对象等价于对应标签全部内容

<body>
    <div id="app">
        <h3>{{msg}}</h3>
        <!--字符串拼接-->
        <h3>{{msg + 'hello'}}</h3>
        <!--三目运算符-->
        <h3>{{1>2?"真的":"假的"}}</h3>
    </div>

    <!--1.先引包-->
    <!--<script src="js/vue.js"></script>-->
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
    <script type="text/javascript">
        // 2.建立vue实例化对象
        var app = new Vue({    // 这样定义,实例化有返回值
            el: '#app',  // 目的地
            data:{       // data属性能够是函数或对象
                msg: 'hello Vue',   // 数据属性
            }
        });
        console.log(app);
        console.log(app.$el);
        console.log(app.$el === document.getElementById('app'));
    </script>
</body>

  显示效果:

  

(2)el和template的优先级问题

  template的优先级要高于el,具体状况以下所示:

  1)当代码只定义了el和模板语法时:

<body>
    <div id="app">
        <h3>{{msg}}</h3>
    </div>
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
    <script type="text/javascript">
        new Vue({
            el: '#app',
            data: {
                msg: 'hello指令系统',
            },
            //template:`<h4>{{msg}}</h4>>`
        })
    </script>
</body>

  模板在app标签下,效果以下所示:

  

  2)当代码也定义了template时:

<body>
    <div id="app">
        <h3>{{msg}}</h3>
    </div>
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
    <script type="text/javascript">
        new Vue({
            el: '#app',
            data: {
                msg: 'hello指令系统',
            },
            template:`<h4>{{msg}}</h4>>`
        })
    </script>
</body>

  msg没有渲染到el中,以下图所示:

   

四、Vue应用的组成结构

  一个 Vue 应用由一个经过 new Vue 建立的根 Vue 实例,以及可选的嵌套的、可复用的组件树组成。举个例子,一个 todo 应用的组件树能够是这样的:

根实例
└─ TodoList
   ├─ TodoItem
   │  ├─ DeleteTodoButton
   │  └─ EditTodoButton
   └─ TodoListFooter
      ├─ ClearTodosButton
      └─ TodoListStatistics
相关文章
相关标签/搜索