• Vue.js(一)


    引入 vue.js

    对于制作原型或学习,你可以这样使用最新版本:
    
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    
    对于生产环境,我们推荐链接到一个明确的版本号和构建文件,以避免新版本造成的不可预期的破坏:
    
    	<script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script>
    

    Vue 介绍

    前端主要负责 MVC 中的 V(视图)这一层,主要工作就是和界面打交道,来制作前端页面效果。
    
    
    Vue.js 是一套构建用户界面的渐进式框架,只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。
    

    Node(后端)中的 MVC 与 前端中的 MVVM 之间的区别

    MVC 是后端的分层开发概念。
    
    MVVM 是前端视图层的概念,主要关注于视图层分离:
    	MVVM 把前端的视图层,分为了三部分 Model , View , VM(ViewModel)
    

    Vue项目搭建

    一、安装node.js与npm包管理器
    
    二、vue-cli脚手架来搭建
    	
    	安装vue-cli脚手:
    		cnpm install -g vue-cli
    
    	搭建Vue项目:需要切换到工作空间
    		vue init webpack [项目名称]
    
    三、在src目录下编写代码
    
    四、安装项目依赖:cnpm install
    
    五、执行 npm run dev 命令,启动项目(热加载)
    

    Vue基本使用

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Vue</title>
    
      <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    
    <body>
    <div id="app">
      <p>{{msg}}</p>
    </div>
    </body>
    
    <script>
      /**
       * 创建Vue实例
       *
       * app对象即是 MVVM 中的 VM 调度者
       */
      var app = new Vue({
        el: '#app',  //控制的区域
        data: {  //保存的数据
          msg: '你好,明天!'
        },
        methods:{	//方法
          method(){
            this.msg="再见,昨天。"
          }
        }
      });
    </script>
    </html>
    

    插值表达式

    v-cloak:解决插值表达式闪烁的问题
    
      <style>
        [v-cloak]{
          display: none;
        }
      </style>
    
      <p v-cloak>开头{{msg}}结尾</p>
    
    
    <h4 v-text="msg"></h4>
    
    	默认 v-text 是没有闪烁问题的,v-text会覆盖元素中原本的内容
    
    
    <p v-html="msg"></p>	//msg: '<h1>你好,明天!</h1>'
    
    	会将 msg 中的 html 元素解析,而不是直接打印。
    

    v-bind(属性绑定)

    使用:
    	v-bind:
    
    缩写:
    	:
    
    示例(""中的内容会当做JS代码解释执行):
    	:title="msg + ',这是追加的内容'"
    	v-bind:title="msg + ',这是追加的内容'"
    

    v-on(事件绑定)

    缩写:
    	@
    
    使用:
    	v-on:click="method"
    
    
    修饰符:
    	.stop - 调用 event.stopPropagation()。	//阻止冒泡:@click.stop="method"
    	.prevent - 调用 event.preventDefault()。	//阻止默认事件
    	.capture - 添加事件侦听器时使用事件捕捉模式。
    	.self - 只当事件在该元素本身(比如不是子元素)触发时触发回调。
    	.once - 只触发一次回调。
    

    v-model(双向绑定)

    使用(只能在表单元素中触发:input,select,checkbox,textarea):
    	<input type="text" v-model="msg">
    

    []表示数组,{}表示对象

    class样式(属性绑定)

    样式:
    
      <style>
        .red {
          color: red;
        }
    
        .thin {
          font-weight: 200;
        }
    
        .active {
          letter-spacing: 0.5em;
        }
      </style>
    

    1.直接传递一个数组

    <h1 :class="['red', 'thin']">这是一个邪恶的H1</h1>
    

    2.数组中使用三元表达式

    <h1 :class="['red', 'thin', flag?'active':'']">这是一个邪恶的H1</h1>
    

    3.数组中嵌套对象

    <h1 :class="['red', 'thin', {'active': flag}]">这是一个邪恶的H1</h1>
    

    4.直接使用对象

    <h1 :class="{red:true, thin:true}">这是一个邪恶的H1</h1>
    

    内联样式

    1.直接在元素上通过 :style 的形式,书写样式对象

    <h1 :style="{color: 'red', 'font-size': '40px'}">这是一个善良的H1</h1>
    

    2.将样式对象,定义到 data 中,并直接引用到 :style
    在data上定义样式:

    data: {
        Style1: { color: 'red', 'font-size': '40px'}
    }
    

    在元素中,通过属性绑定的形式,将样式对象应用到元素中:

    <h1 :style="Style1">这是一个善良的H1</h1>
    

    3.在 :style 中通过数组,引用多个 data 上的样式对象
    在data上定义样式:

    data: {
            Style1: { color: 'red', 'font-size': '40px'},
            Style2: { fontStyle: 'italic' }
    }
    

    在元素中,通过属性绑定的形式,将样式对象应用到元素中:

    <h1 :style="[Style1, Style2]">这是一个善良的H1</h1>
    

    Vue指令之 v-for 和 key 属性

    数组:
          data: {
            list: [1, 2, 3, 4, 5, 6]
          }
    
          data: {
            list: [
              { age: 1, name: 'zs1' },
              { age: 2, name: 'zs2' },
              { age: 3, name: 'zs3' },
              { age: 4, name: 'zs4' }
            ]
          }
    
          data: {
            user: {
              id: 1,
              name: '托尼·屎大颗',
              gender: '男'
            }
          }
    

    1.迭代数组

    <p v-for="(item, i) in list">索引:{{i}} --- 每一项:{{item}}</p>
    
    <ul>
      <li v-for="(user, i) in list">索引:{{i}} --- 姓名:{{user.name}} --- 年龄:{{user.age}}</li>
    </ul>
    

    2.迭代对象中的属性

    <!-- 循环遍历对象身上的属性 -->
    <div v-for="(val, key, i) in userInfo">值:{{val}} --- 键:{{key}} --- 索引:{{i}}</div>
    

    3.迭代数字

    <p v-for="i in 10">这是第 {{i}} 个P标签</p>
    

    key属性:保证数据的唯一性(v-for 循环的时候,key 属性只能使用 number或者string)

        <div>
          <label>Id:
            <input type="text" v-model="id">
          </label>
    
          <label>Name:
            <input type="text" v-model="name">
          </label>
    
          <input type="button" value="添加" @click="add">
        </div>
    
        <p v-for="item in list" :key="item.id">
          <input type="checkbox">{{item.id}} --- {{item.name}}
        </p>
    
    
        data: {
         id: '',
          name: '',
          list: [
            { id: 4, name: '韩非' },
            { id: 5, name: '荀子' }
          ]
        },
        methods: {
          add() {	//添加方法
            this.list.unshift({ id: this.id, name: this.name })
          }
        }
    

    Vue指令之 v-if 和 v-show

    v-if 的特点:每次都会重新删除或创建元素。
    v-show 的特点: 每次不会重新进行DOM的删除和创建操作,只是切换了元素的 display:none 样式。
    
      <input type="button" value="toggle" @click="flag=!flag">
      <p v-if="flag">aaaaaaaa</p>
      <p v-show="flag">bbbbbb</p>
    
  • 相关阅读:
    MYSQL57密码策略修改
    dataSource' defined in class path resource [org/springframework/boot/autocon
    ubuntu14.04 red5
    hadoop中修改端口号
    FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to controller/192.168.1.183:9000. Exiting. java.io.IOExcep
    hadoop ssh 问题WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
    openstack安装dashboard后访问horizon出错 End of script output before headers: django.wsgi
    sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) Cannot add a NOT NULL column with default value NULL [SQL: u'ALTER TABLE address_scopes ADD COLUMN ip_version INTEGER NOT NULL']
    mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
    OpenStack安装keyston 错误BError: (pymysql.err.InternalError) (1071, u‘Specified key was too long; max key length is 767 bytes‘) [SQL: u‘ CREATE TABLE migrate_ver
  • 原文地址:https://www.cnblogs.com/loveer/p/11844658.html
Copyright © 2020-2023  润新知