Vue.js——60分钟快速入门(转)

vue:Vue.js——60分钟快速入门

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box
        }

        html {
            font-size: 12px;
            font-family: Ubuntu, simHei, sans-serif;
            font-weight: 400
        }

        body {
            font-size: 1rem
        }

        table, td, th {
            border-collapse: collapse;
            border-spacing: 0
        }

        table {
            width: 100%
        }

        td, th {
            border: 1px solid #bcbcbc;
            padding: 5px 10px
        }

        th {
            background: #42b983;
            font-size: 1.2rem;
            font-weight: 400;
            color: #fff;
            cursor: pointer
        }

        tr:nth-of-type(odd) {
            background: #fff
        }

        tr:nth-of-type(even) {
            background: #eee
        }

        fieldset {
            border: 1px solid #BCBCBC;
            padding: 15px;
        }

        input {
            outline: none
        }

        input[type=text] {
            border: 1px solid #ccc;
            padding: .5rem .3rem;
        }

        input[type=text]:focus {
            border-color: #42b983;
        }

        button {
            outline: none;
            padding: 5px 8px;
            color: #fff;
            border: 1px solid #BCBCBC;
            border-radius: 3px;
            background-color: #009A61;
            cursor: pointer;
        }

        button:hover {
            opacity: 0.8;
        }

        #app {
            margin: 0 auto;
            max-width: 640px
        }

        .form-group {
            margin: 10px;
        }

        .form-group > label {
            display: inline-block;
            width: 10rem;
            text-align: right;
        }

        .form-group > input, .form-group > select {
            display: inline-block;
            height: 2.5rem;
            line-height: 2.5rem;
        }

        .text-center {
            text-align: center;
        }

        .pagination {
            display: inline-block;
            padding-left: 0;
            margin: 21px 0;
            border-radius: 3px;
        }

        .pagination > li {
            display: inline;
        }

        .pagination > li > a {
            position: relative;
            float: left;
            padding: 6px 12px;
            line-height: 1.5;
            text-decoration: none;
            color: #009a61;
            background-color: #fff;
            border: 1px solid #ddd;
            margin-left: -1px;
            list-style: none;
        }

        .pagination > li > a:hover {
            background-color: #eee;
        }

        .pagination .active {
            color: #fff;
            background-color: #009a61;
            border-left: none;
            border-right: none;
        }

        .pagination .active:hover {
            background: #009a61;
            cursor: default;
        }

        .pagination > li:first-child > a .p {
            border-bottom-left-radius: 3px;
            border-top-left-radius: 3px;
        }

        .pagination > li:last-child > a {
            border-bottom-right-radius: 3px;
            border-top-right-radius: 3px;
        }
    </style>
</head>
<body>
<!--这是我们的View-->
<div id="app">
    <p>{{ message }}</p>
    <input type="text" v-model="message" title="">
    <h3>Hello, Vue.js!</h3>
    <h3 v-if="yes">Yes!</h3>
    <h3 v-if="no">No!</h3>
    <h3 v-if="name.indexOf('jack') >= 0">Name: {{ name }}</h3>
    <!-- v-if 是条件渲染指令,它根据表达式的真假来删除和插入元素 -->
    <h1 v-if="age >= 30">Age: {{ age }}</h1>
    <h3 v-else>Age: {{ age }}</h3>
    <!-- v-show 指令的元素始终会被渲染到HTML,它只是简单地为元素设置CSS的style属性 -->
    <h1 v-show="age >= 20">Age: {{ age }}</h1>

    <br>
    <br>

    <table>
        <thead>
        <tr>
            <th>Name</th>
            <th>Age</th>
            <th>Sex</th>
        </tr>
        </thead>
        <tbody>
        <tr v-for="person in people">
            <td>{{ person.username }}</td>
            <td>{{ person.age }}</td>
            <td>{{ person.sex }}</td>
        </tr>
        </tbody>
    </table>

    <br>
    <br>

    <!-- v-bind指令可以缩写为一个冒号 -->
    <ul class="pagination">
        <!-- pageCount是一个整数,遍历时n从1开始 -->
        <li v-for="n in pageCount">
            <a href="javascript:void(0)" v-bind:class="activeNumber === n ? 'active' : ''">{{ n }}</a>
        </li>
    </ul>

    <br>
    <br>

    <!-- v-on指令可以缩写为@符号 -->
    <p>
        <!--click事件直接绑定一个方法-->
        <button v-on:click="greet">Greet</button>
    </p>
    <p>
        <!--click事件使用内联语句-->
        <button v-on:click="say('Hi')">Hi</button>
    </p>

    <br>
    <br>

    <fieldset>
        <legend>
            Create New Person
        </legend>
        <div class="form-group">
            <label>Name:</label>
            <input type="text" v-model="newPerson.username"/>
        </div>
        <div class="form-group">
            <label>Age:</label>
            <input type="text" v-model="newPerson.age"/>
        </div>
        <div class="form-group">
            <label>Sex:</label>
            <select v-model="newPerson.sex">
                <option value="Male">Male</option>
                <option value="Female">Female</option>
            </select>
        </div>
        <div class="form-group">
            <label></label>
            <button @click="createPerson">Create</button>
        </div>
    </fieldset>
    <table>
        <thead>
        <tr>
            <th>Name</th>
            <th>Age</th>
            <th>Sex</th>
            <th>Delete</th>
        </tr>
        </thead>
        <tbody>
        <tr v-for="(person,index) in people">
            <td>{{ person.username }}</td>
            <td>{{ person.age }}</td>
            <td>{{ person.sex }}</td>
            <td :class="'text-center'">
                <button @click="deletePerson(index)">Delete</button>
            </td>
        </tr>
        </tbody>
    </table>

    <br>
    <hr>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    // 这是我们的Model
    let exampleData = {
        message: 'Hello World!',
        yes: true,
        no: false,
        age: 28,
        name: 'keepfool',
        people: [{
            username: 'Jack',
            age: 30,
            sex: 'Male'
        }, {
            username: 'Bill',
            age: 26,
            sex: 'Male'
        }, {
            username: 'Tracy',
            age: 22,
            sex: 'Female'
        }, {
            username: 'Chris',
            age: 36,
            sex: 'Male'
        }],
        activeNumber: 1,
        pageCount: 10,
        newPerson: {
            name: '',
            age: 0,
            sex: 'Male'
        }
    };

    // 创建一个 Vue 实例或 "ViewModel"
    // 它连接 View 与 Model
    // 每个Vue实例都会代理其选项对象里的data属性
    var vm = new Vue({
        el: '#app',
        data: exampleData,
        // 在 `methods` 对象中定义方法
        methods: {
            greet: function () {
                // 方法内 `this` 指向 vm
                alert(this.message)
            },
            say: function (msg) {
                alert(msg)
            },
            createPerson: function () {
                this.people.push(this.newPerson);
                // 添加完newPerson对象后,重置newPerson对象
                this.newPerson = {username: '', age: 0, sex: 'Male'}
            },
            deletePerson: function (index) {
                // 删一个数组元素
                this.people.splice(index, 1);
            }
        }
    })
</script>
</html>

 推荐安装谷歌插件 vue-devtools 

原文地址:https://www.cnblogs.com/cshaptx4869/p/10718620.html