1、vue

  • 简介
    Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动复杂的单页应用。vue是国人开发的,文档对国人还是很友好的,很多东西可以直接去官网找。

  • 优缺点

    • Vue.js是一套构建用户界面的框架,只关注视图层,易上手,有配套的第三方类库。
    • 提高开发效率,帮助减少不必要的dom操作;双向数据绑定,通过框架提供的指令,前端只需要关注业务逻辑,不再关心dom如何渲染。
    • 一套完整的解决方案,对项目侵入性大,中途需要跟换框架则需要重构整个项目

2、环境安装

  • nodejs安装:https://nodejs.org/en/
  • npm安装淘宝镜像:npm install -g cnpm –registry=https://registry.npm.taobao.org
  • 安装webpack:cnpm install webpack -g
  • 安装vue-cli。npm install –global vue-cli
  • 环境安装:cnpm install
  • 运行Vue项目:npm run serve

3、前端的MVVM

前端视图层的概念,主要把每个页面分成了M(Model)、V(View)、VM(VM ViewModel)。VM是其中核心,M和V间的调度者。前端中使用MVVM思想,主要让开发更方便,MVVM提供了数据的双向绑定(由VM提供)。

  • M:保存的是每个页面中单独的数据(比如要渲染页面表格,ajax请求到后台的你个数组,此数据即为M)。
  • V:每个页面的html结构。
  • VM:一个调度者,分割了M和V,M和V不直接关联,通过中间的VM。V想要保存数据到M,都要有VM做中间处理;V想要渲染页面,需要调用VM,VM从M中取数据。

4、常用指令

vue指令都是以v-xxx开头的,vue指令都可以作为标签属性直接使用。

  • v-text
    更新标签的文本内容,如果包含dom标签会当做字符串直接显示。

    1
    <p v-text="msg"></p>
  • v-html
    如果内容包含dom标签,可以渲染成相应的组件。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var vue = new Vue({
    el:"#app",
    data:{
    info:"worlds",
    ht:"<tr><th>hello</th></tr><tr><th>你好</th></tr>"
    },
    methods:{
    add(msg){
    vue.info = msg;
    }
    }
    });

    <table v-html="ht"></table>
  • v-show
    可以控制组件是否显示,是display的封装,组件一直在dom树节点上

    1
    <p v-show="false">world</p>
  • v-if v-else-if v-else
    显示与隐藏,隐藏的话将不在dom树节点显示

    1
    2
    3
    <p v-if="info == 'world'">世界</p>
    <p v-else-if="info == 'hello'">你好</p>
    <p v-else>拜拜</p>
  • v-for
    循环创建节点

    1
    <p v-for="i in 100">world world</p>
  • v-model
    数据双向绑定,可以通过修改dom组件中的文本值,修改js脚本中的变量值,只对表单元素有效果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    var vue = new Vue({
    el:"#app",
    data:{
    msg:"",
    info:"你好"
    },
    methods:{
    setText(){
    vue.info = this.msg;
    }
    }
    });


    <div id="app">
    <p v-text="info"></p>
    <p v-html="info"></p>
    <p><input type="text" v-model="msg"><button @click="setText()">点击</button></p>
    </div>
  • v-on
    相当于@为按钮绑定点击事件

    1
    2
    <button v-on:click="setText">点击</button>
    <button @click="setText()">