zoukankan      html  css  js  c++  java
  • vue-cli开发todoList

    vue官网:https://cn.vuejs.org/

    接着上一篇,使用vue-cli创建项目后,然后用vscode打开项目,vscode感觉跟其他的IDE不同,它对项目的管理较松散,更多是靠各类插件去完成工作。下图是vscode打开vue-cli创建的项目的项目结构截图:

      其实从这个结构上可以看出,主页面就是index.html位于项目根目录下,src目录下就是程序员需要关注的目录,在这下面有一个main.js ,根据使用其他语言的经验,显然这个文件就是程序的入口。

    import Vue from 'vue'
    import App from './App'
    
    Vue.config.productionTip = false
    
    /* eslint-disable no-new */
    new Vue({
      el: '#app',
      components: { App },
      template: '<App/>'
    })

    果然,里面创建了一个Vue的实例,也就是整个程序的一个主组件, 从代码上可知这个组件名字是App组件,当前目录下的App.vue就是该组件的代码, 这个代码包含三部分:

    1. 模板部分<template></template>

        决定要展示和渲染的内容

    2 .逻辑部分 <script></script>

        js 交互处理的代码

    3. 样式部分 <style></style>

    <template>
      <div id="app">
        <todo-list/>
      </div>
    </template>
    
    <script>
    import TodoList from './components/TodoList'
    
    export default {
      name: 'App',
      components: {
        'todo-list': TodoList
      }
    }
    </script>
    
    <style>
    #app {
      
    }
    </style>

    为了亲自体验下,所以先把这三部分默义生成的代码删除, 按照todoList的需求写了一个最简单的Demo:

    1. 编写一个TodoList组件,在src/components目录下创建一个TodoList.vue文件

    <template>
      <div>
        <div>
          <input value="" v-model="inputValue"/>
          <button  @click="handleAddItem">添加</button>
        </div>
        <div>
          <ul>
            <li @click="handleDelItem(index)" v-for="(item,index) of items"  :key = "index">{{item}}</li>
          </ul>
        </div>
      </div>
    </template>
    
    <script>
    export default {
      name: 'TodoList',
      props: [],
      data(){
         return {
           inputValue:'',
           items:[]
         }
      },
      methods:{
         handleAddItem(){
           this.items.push(this.inputValue)
           this.inputValue = ''
         },
         handleDelItem(index){
           this.items.splice(index,1)
         }
      }
      
    }
    </script>
    
    <!-- Add "scoped" attribute to limit CSS to this component only -->
    <style scoped>
    
    </style>

    指令说明:v-bind 简写为:    v-on 简写为 @

    所有的todolist的功能都在该组件内部实现了,下面是App组件对该组件的使用:

    <template>
      <div id="app">
        <todo-list/>
      </div>
    </template>
    
    <script>
    import TodoList from './components/TodoList'
    
    export default {
      name: 'App',
      components: {
        'todo-list': TodoList
      }
    }
    </script>
    
    <style>
    #app {
      
    }
    </style>

    这里说一个知识点:

    export default {
     data(){
         return {
           inputValue:'',
           items:[]
         }
      }
    }
    这个exprot default中的data 为可不写如下方式:
    export default {
      data: {
         inputValue:'',
         items:[]
      }
    }
    这是因为return方式有点象是java中的new 的方式,每次返回的是新初始化的对象值,而 data对象的方式有点象java中static的方式,会返回对象上次被修改后的情况。

    执行 npm run dev ,显示效果如下:

    点击添加按钮可以把文本框的内容添加到下面列表中,双击列表的其中一项可以把它从列表中删除

    第一个vue的小案例,在此记录一下,可以帮着日后一步步深入去理解vue

  • 相关阅读:
    UML图示与代码对照
    http连接
    http 连接失败重连机制
    httpclient失败重连机制
    mybatis <!-- useGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中 -->
    30分钟学会如何使用Shiro(转)
    散列算法与加密算法
    存储过程的优缺点
    mybatis批量更新两种方式:1.修改值全部一样 2.修改每条记录值不一样
    xml解析工具mashaller javaee自带解析类
  • 原文地址:https://www.cnblogs.com/hzhuxin/p/14819523.html
Copyright © 2011-2022 走看看