zoukankan      html  css  js  c++  java
  • Web前端

    <!-- id标识vue作用的范围 -->
    <div id="app">
        <!-- {{}} 插值表达式,绑定vue中的data数据 -->
        {{ message }}
    </div>
    <script src="vue.min.js"></script>
    <script>
        // 创建一个vue对象
        new Vue({
            el: '#app',//绑定vue作用的范围
            data: {//定义页面中显示的模型数据
                message: 'Hello Vue!'
            }
        })
    </script>
    

    基本数据渲染和指令

    v-bind 特性被称为指令。指令带有前缀 v-,除了使用插值表达式{{}}进行数据渲染,也可以使用 v-bind指令,它的简写的形式就是一个冒号(:)

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <div id="app">
            <!-- v-bind指令
                单向数据绑定
                这个指令一般用在标签属性里面,获取值
            -->
            <h1 v-bind:title="message">
                {{content}}
            </h1>
    
            <!--简写方式-->
            <h2 :title="message">
                    {{message}}
                </h2>
    
        </div>
        <script src="vue.min.js"></script>
        <script>
            new Vue({
                el: '#app',
                data: {
                    content: '我是标题',
                    message: '页面加载于 ' + new Date().toLocaleString()
                }
            })
        </script>
    </body>
    
    </html>
    

    v-model 双向数据绑定

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <div id="app">
            <input type="text" v-bind:value="searchMap.keyWord"/>
            <!--双向绑定-->
            <input type="text" v-model="searchMap.keyWord"/>
    
            <p>{{searchMap.keyWord}}</p>
    
        </div>
        <script src="vue.min.js"></script>
        <script>
    
            new Vue({
                el: '#app',
                data: {
                    searchMap:{
                        keyWord: 'soyoungboy'
                    }
                }
            })
        </script>
    </body>
    
    </html>
    

    事件操作

    methods节点和绑定事件的操作

    v-on 进行数件处理,v-on:click 表示处理鼠标点击事件

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <div id="app">
            <!--vue绑定事件,调用方法 search-->
            <button v-on:click="search()">查询</button>
    
            <!--vue绑定事件简写,调用方法f1-->
            <button @click="f1()">查询1</button>
        </div>
        <script src="vue.min.js"></script>
        <script>
            new Vue({
                el: '#app',
                data: {
                    searchMap:{
                        keyWord: '尚硅谷'
                    },
                    //查询结果
                    result: {}
                },
                methods:{//定义多个方法
                    search() {
                        console.log('search....')
                    },
                    f1() {
                        console.log('f1...')
                    }
                }
            })
        </script>
    </body>
    
    </html>
    

    修饰符

    修饰符 (Modifiers) 是以半角句号(.)指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <div id="app">
            <form action="save" v-on:submit.prevent="onSubmit">
                <input type="text" id="name" v-model="user.username"/>
                <button type="submit">保存</button>
            </form>
        </div>
        <script src="vue.min.js"></script>
        <script>
            new Vue({
                el: '#app',
                data: {
                    user:{}
                },
                methods:{
                    onSubmit() {
                        if (this.user.username) {
                            console.log('提交表单')
                        } else {
                            alert('请输入用户名')
                        }
                    }
                }
            })
        </script>
    </body>
    
    </html>
    

    条件渲染

    v-if:条件指令

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <div id="app">
            <input type="checkbox" v-model="ok"/>是否同意
            <!--条件指令 v-if  v-else -->
            <h1 v-if="ok">so young boy</h1>
            <h1 v-else>so old boy</h1>
        </div>
        <script src="vue.min.js"></script>
        <script>
            new Vue({
                el: '#app',
                data: {
    				//默认false
                    ok:false
                }
            })
        </script>
    </body>
    
    </html>
    

    列表渲染

    v-for:列表循环指令

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <div id="app">
            <ul>
                <li v-for="n in 10"> {{n}} </li>
            </ul>
            <ol>
                <li v-for="(n,index) in 10">{{n}} -- {{index}}</li>
            </ol>
    
            <hr/>
            <table border="1">
                <tr v-for="user in userList">
                    <td>{{user.id}}</td>
                    <td>{{user.username}}</td>
                    <td>{{user.age}}</td>
                </tr>
            </table>
    
        </div>
        <script src="vue.min.js"></script>
        <script>
            new Vue({
                el: '#app',
                data: {
                    userList: [
                            { id: 1, username: 'helen', age: 18 },
                            { id: 2, username: 'peter', age: 28 },
                            { id: 3, username: 'andy', age: 38 }
                        ]
                }
            })
        </script>
    </body>
    
    </html>
    

    组件

    全局组件

    // 定义全局组件
    Vue.component('Navbar', {
        template: '<ul><li>首页</li><li>学员管理</li><li>讲师管理</li></ul>'
    })
    

    复用全局组件, 为引入上面的组件

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <div id="app">
            <Navbar></Navbar>
        </div>
        <script src="vue.min.js"></script>
        <script src="components/Navbar.js"></script>
        <script>
            new Vue({
                el: '#app',
                data: {
                    
                }
            })
        </script>
    </body>
    
    </html>
    

    实例生命周期

    • beforeCreate: 第一个被执行的钩子方法,实例被创建出来之前执行,data 和 methods 中的 数据都还没有没初始化。
    • created: 第二个被执行的钩子方法,data 和 methods 都已经被初始化好了,如果要调用 methods 中的方法,或者操作 data 中的数据,最早,只能在 created 中操作。
    • beforeMount:第三个被执行的钩子方法,模板已经在内存中编辑完成了,尚未被渲染到页面中。
    • mounted:第四个被执行的钩子方法,内存中的模板已经渲染到页面,用户已经可以看见内容。

    运行中的两个事件

    beforeUpdate:数据更新的前一刻

    updated:内存中的数据已更新,并且页面已经被渲染

    Vue路由

    Vue.js 路由允许我们通过不同的 URL 访问不同的内容。
    通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。

    Vue.js 路由需要载入 vue-router 库。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <div id="app">
                <h1>Hello App!</h1>
                <p>
                    <!-- 使用 router-link 组件来导航. -->
                    <!-- 通过传入 `to` 属性指定链接. -->
                    <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
                    <router-link to="/">首页</router-link>
                    <router-link to="/student">会员管理</router-link>
                    <router-link to="/teacher">讲师管理</router-link>
                </p>
                <!-- 路由出口 -->
                <!-- 路由匹配到的组件将渲染在这里 -->
                <router-view></router-view>
        </div>
    
        <script src="vue.min.js"></script>
        <script src="vue-router.min.js"></script>
    
        <script>
                // 1. 定义(路由)组件。
        // 可以从其他文件 import 进来
        const Welcome = { template: '<div>欢迎</div>' }
        const Student = { template: '<div>student list</div>' }
        const Teacher = { template: '<div>teacher list</div>' }
    
        // 2. 定义路由
        // 每个路由应该映射一个组件。
        const routes = [
            { path: '/', redirect: '/welcome' }, //设置默认指向的路径
            { path: '/welcome', component: Welcome },
            { path: '/student', component: Student },
            { path: '/teacher', component: Teacher }
        ]
    
        // 3. 创建 router 实例,然后传 `routes` 配置
        const router = new VueRouter({
            routes // (缩写)相当于 routes: routes
        })
    
        // 4. 创建和挂载根实例。
        // 从而让整个应用都有路由功能
        const app = new Vue({
            el: '#app',
            router
        })
        </script>
    </body>
    
    </html>
    
  • 相关阅读:
    jQuery属性操作,attr 和 prop的区别。笔记记录
    li 自身样式不显示?使用 overflow:hidden 导致li 前面点,圈等样式不见情况处理
    jQuery 最新版类库 和 常用的类库[jquery-1.12.3,jquery-1.7.2]下载
    Excel 中如何让下拉菜单显示汉字,但是值是数字
    Uncaught TypeError: $(...).on is not a function
    全选,全不选,反选的逻辑思路
    Linux 解决 vsftpd 读取目录列表失败的问题。
    SQL Sever 2012数据库从下载到安装完成【一步一图,带上脑子即可】
    【闲暇研究】某问道,游戏的整合记录
    Tomcat 启动后出现乱码的解决办法。
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/13050676.html
Copyright © 2011-2022 走看看