Vue.js 笔记

  Vue.js简介:

   Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。  Vue 只关注视图层, 采用自底向上增量开发的设计。  Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。  vue不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与单文件组件和 Vue 生态系统支持的库结合使用时,Vue 也完全能够为复杂的单页应用程序提供驱动

 Vue初始引入CDN:

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

还可以下载 vue.js直接引入:

<!-- 生产环境版本,优化了尺寸和速度 -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>

npm:

1)获得npm 下载 node.js(javaScript 运行环境) 进官网 下载安装 下一步

  

2,node.js中有一个包管理器 npm ,node.js安装好以后 自动会有 npm,

3,将淘宝镜像引入

  $ npm install -g cnpm --registry=https://registry.npm.taobao.org

4,下载vue (通过cnpm)

  cnpm install vue

5,创建文件夹进入文件夹路径执行

cnpm init -y

cnpm i vue

实例化Vue对象:

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

 

var vm = new Vue({
  el:"#app" 跟容器 data:{
nmae:"gqk"
} })

 数据方法 

var vm = new Vue({
  el:"#app"     跟容器
   data:{
   nmae:"gqk",
methods:{
greet:function(time){
return "good Morning!"+time+" "+this.name
}
  } } })

 数据的双向绑定: v-model

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <h1>{{ message }}</h1>
    <h1>{{ message }}</h1>
    <h1>{{ message }}</h1>
    <h1>{{ message }}</h1>
    <p>{{ message }}</p>
    <div>
      <span>{{ message }}</span>
    </div>
    <!-- 
      v-model 是 Vue 提供的一个特殊的属性,在 Vue 中被称之为指令
      它的作用就是:双向绑定表单控件
      什么是叫双向数据绑定?
      当数据发生改变, DOM 会自动更新
      当表单控件的值发生改变,数据也会自动得到更新
     -->
    <input type="text" v-model="message">
  </div>
  <script src="node_modules/vue/dist/vue.js"></script>
  <script>
    const app = new Vue({
      // 不要作用到 body 和 html 节点上
      el: '#app',
      data: {
        message: 'Hello Vue.js!'
      }
    })
  </script>
</body>
</html>

  姓名展示:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="app">
    姓氏:<input type="text" value="李" v-model="firstname">
    <br>
    名字:<input type="text" value="鹏周" v-model="lastname">
    <br>
    <p>{{ firstname + lastname }}</p>
    <p>{{ lastname }}</p>
  </div>
  <script src="node_modules/vue/dist/vue.js"></script>
  <script>
    // jQuery 提高了 DOM 操作的效率
    // Vue 极大的解放了 DOM 操作
    //    (Vue 全部把 DOM 操作都给你屏蔽了)
    // Vue 的核心思想就是:数据驱动视图
    new Vue({
      el: '#app',
      data: {
        firstname: '',
        lastname: ''
      }
    })
  </script>
</body>
</html>

  数字自动增长:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>

<body>
  <div id="app">
    <input type="number" v-model="number">
    <!-- <button οnclick="handleIncrement()">点击+1</button> -->
    <!-- 如果函数语句简单可以直接内联写 -->
    <!-- <button v-on:click="number++">点击+1</button>
    <!-- 如果函数语句比较多,建议把处理写到 JavaScript 中 -->
    <button v-on:click="handleIncrement">点击+1</button>
  </div>
  <script src="node_modules/vue/dist/vue.js"></script>
  <script>
    // Document.get('dsa').on('cli')
    const app = new Vue({
      el: '#app',
      data: {
        number: 1
      },
      // 注意:方法写到 data 中可以,但是函数内部的 this 是 Window
      // 所以我们都建议把方法写到 methods 选项中
      methods: {
        handleIncrement: function () {
          // console.log(app.number)
          // 在通过 v-on 注册的方法中我们可以直接通过 this 来访问 data 中的数据成员
          this.number++
        }
      }
    })

    // function handleIncrement() {
    //   // console.log('111') 
    //   app.number++
    // }
  </script>
</body>

</html>

  计算购物车案例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>

<body>
  <div id="app">
    <div>
      <label for="">商品价格</label>
      <input type="number" v-model="price">
    </div>
    <div>
      <label for="">商品数量</label>
      <button v-on:click="count = count - 1 < 0 ? 0 : count - 1">-</button><span>{{ count }}</span>
      <button v-on:click="handleCountClick">+</button>
    </div>
    <div>
      总价格:<strong>{{ price * count }}</strong>
    </div>
  </div>
  <script src="node_modules/vue/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        price: 5,
        count: 2
      },
      // methods 中的方法不要使用箭头函数,否则绑定的是 Window
      // EcmaScript 6 为对象成员方法提供了一种简写的方式
      methods: {
        // 下面的写法等价于 handleCountClick: function () {}
        // 该语法没有任何特性,只是纯粹的简写了
        handleCountClick () {
          this.count++
        }
      }
    })
  </script>
</body>

</html>

  

 简易计算器:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>

<body>
  <div id="app">
    <input type="number" v-model="num1">
    <select v-model="operation">
      <option >+</option>
      <option >-</option>
      <option >*</option>
      <option >/</option>
    </select>
    <input type="number" v-model="num2">
    <button v-on:click="jisuan(num1,num2,operation)">=</button> <!--<strong v-if="operation=='+'">{{parseInt(num1)+parseInt(num2)}}</strong>
    <strong v-else-if="operation=='-'">{{parseInt(num1)-parseInt(num2)}}</strong>
    <strong v-else-if="operation=='*'">{{parseInt(num1)*parseInt(num2)}}</strong>
    <strong v-else="operation=='/'">{{parseInt(num1)/parseInt(num2)}}</strong>-->
    <p>{{result}}</p>
  </div>
  <script src="node_modules/vue/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        operation: '',
        num1:'',
        num2:"",
        result:""
      },
      methods:{
      	jisuan:function(num1,num2,operation){
      		if(operation=="+"){
      				this.result = parseInt(num1)+parseInt(num2);
      		}else if(operation=="-"){
      			this.result = parseInt(num1)-parseInt(num2);
      		}
      	
      	}
      }
    })
  </script>
</body>

</html>

  

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    .done {
      text-decoration: line-through;
      color: #ccc;
    }
  </style>
</head>
<body>
  <div id="app">
    <h1>Todo</h1>
    <p>{{ todos.filter(item => !item.done).length }} of {{ todos.length }} remaning [archive]</p>
    <p v-for="(item, index) in todos">
      <!-- 
        checkbox 双向绑定了 item.done
        当 checkbox 改变的时候,会影响数据 item.done 也跟着改变
        当 item.done 变了,会影响所有使用了这个 item.done 的绑定
       -->
      <input type="checkbox" v-model="item.done">
      <!-- 
        v-bind 可以用来动态绑定属性值
        class 给了一个对象:
          对象的 key 就是类名
          对象的 value 是布尔值

          当布尔值为 true 的时候,作用这个 key 样式
          当布尔值为 false 的时候,去除这个 key 样式
       -->
      <span v-bind:class="{done: item.done}">{{ item.title }}</span>
      <button @click="handleRemoveTodoClick(index)">X</button>
    </p>
    <input type="text" v-model="todoText" @keydown.enter="handleAddTodoClick">
    <button @click="handleAddTodoClick">Add</button>
  </div>
  <script src="node_modules/vue/dist/vue.js"></script>
  <script>
    const todos = [
      {
        id: 1,
        title: '吃饭',
        done: true
      },
      {
        id: 2,
        title: '睡觉',
        done: false
      },
      {
        id: 3,
        title: '写代码',
        done: true
      },
    ]

    const app = new Vue({
      el: '#app',
      data: {
        todos,
        todoText: ''
      },
      methods: {
        handleAddTodoClick () {
          // 得到 文本框的内容
          // 把内容 push 到 todos 中
          const todoText = this.todoText.trim()

          // 非空校验
          if (!todoText.length) {
            return
          }

          const todos = this.todos

          // 数据驱动视图,数据改变,视图改变
          todos.push({
            id: todos[todos.length - 1].id + 1,
            title: todoText,
            done: false
          })

          // 添加 todo 完成,清空文本框
          // 数据驱动视图,数据改变,视图变化
          this.todoText = ''
        },

        handleRemoveTodoClick (index) {
          this.todos.splice(index, 1)
        }
      }
    })


  </script>
</body>
</html>

  

 

 

 

 

 

 

 

 

    

 

  

转载于:https://www.cnblogs.com/520gqk/p/9573173.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值