vue入门 一些的一些简单使用:

  Vue.js 是一款流行的 JavaScript 前端框架,目的是简化 Web 开发。Vue 所关注的核心是 MVC 模式中的视图层,同时,它也能方便地获取数据更新,实现视图与模型的交互。   官方网站是:https://cn.vuejs.org     使用vue.min.js 里的 vue 做的一个简单模板<body>


    <!--  vue 主要关注的核心式MVC模式终端 视图层  定义一层数据 再将数据显示再页面上 -->

    <div id="app">
        {{message}}
    </div>

    <script src="vue.min.js"></script>

    <script>

        new Vue({   
            //
            //el 针对哪些元素进行 vue的渲染
            el: '#app',
            data:{
                message : 100
            }
}) </script> </body>

vue 基本的格式如上图 el 绑定 id 为 app 的 对象 data里面放入数据 。

 

一些指令如下:

1.绑定: v-bind 也可以简写为 冒号:

<div id="app">

    <!-- 数据绑定在html属性中,使用 v-bind 指令 -->

    <h1 v-bind:title="name">{{name}}</h1>

    <!-- v-bind 指令的简写形式: 冒号(:) -->

    <h1 :title="name">{{name}}</h1>

</div>

 

2. 双向数据绑定 v-model: 在修改数值时 data里面的数据也会被修改

<body>


    <!--  vue 主要关注的核心式MVC模式终端 视图层  定义一层数据 再将数据显示再页面上 -->
    <div id="app">
        <input type="text" v-bind:value="keyword">
        <!-- vmodel 双向绑定 -->
        <input type="text" v-model:value="keyword">
        <p>您要查询的是:{{keyword}}</p>
    </div>

    <script src="vue.min.js"></script>
    <script>

// 双向 数据绑定 html
        new Vue({   
            //
            //el 针对哪些元素进行 vue的渲染
            el: '#app',
            data:{
                // 数据模型的定义
                keyword: '比翼双飞' 
            }

        })

        // 双向 数据绑定: 当视图发生变化的时候 数据也会同步发生变化
        // 用户再页面上的修改,会自动同步到 数据模型中去



    </script>
    

    
</body>
  • 当数据发生变化的时候,视图也会跟着发生变化
    • 数据模型发生了改变,会直接显示在页面上
  • 当视图发生变化的时候,数据也会跟着同步变化
    • 用户在页面上的修改,会自动同步到数据模型中去

 

3.事件 v-on 用来做事件处理 也可以简写为 @

<body>

        <!--  vue 主要关注的核心式MVC模式终端 视图层  定义一层数据 再将数据显示再页面上 -->

        <div id="app">
            <!-- 事件指令 -->
            <button v-on:click="show()">查询</button>
        </div>
    
        <script src="vue.min.js"></script>
    
        <script>

            new Vue({   
                //
                //el 针对哪些元素进行 vue的渲染
                el: '#app',
                data:{
                    message : 100
                },
                methods:{
                    //
                    show(){
                        console.log(new Date());
                    }
                }
            })
        </script>
    
</body>

 

4 修饰符 以半角句号(.) 指明的特殊后缀,用于指出一个指令的特殊处理方式  
<body>


    <!--  vue 主要关注的核心式MVC模式终端 视图层  定义一层数据 再将数据显示再页面上 -->

    <div id="app">

        <!-- 修饰符 prevent 阻止修饰行为 -->
        <form action="save" v-on:submit.prevent="check()">
            姓名:<input type="text" v-model="user.name" >
            <button type="submit">保存</button>
        </form>
    </div>

    <script src="vue.min.js"></script>

    <script>

        new Vue({   
            //
            //el 针对哪些元素进行 vue的渲染
            el: '#app',
            data:{
                user: {}
            },
            methods: {
                check(){
                    console.log("校验用户名 是否输入完好")
                    console.log(this.user)
                    if(!this.user.name){
                        alert("请输入用户名")
                        return;
                    }
                }

            }
        })

    </script>
    

 

 

5 条件渲染 使用 v-if 或者 v-show(需要频繁切换)

<body>


    <!--  vue 主要关注的核心式MVC模式终端 视图层  定义一层数据 再将数据显示再页面上 -->

    <div id="app">
        <input type="checkbox" v-model = "ok">同意许可协议

        <!-- 绑定 ok 条件渲染 -->

        <!-- v-if 在条件渲染的时候基本上是对dom 文件做修改 -->
        <h1 v-if="ok">协议内容</h1>
        <h2 v-else="ok">不显示内容</h2>

        <!-- 频繁做切换的时候 使用v-show 初始化开销大 渲染所有节点 切换时需要不断的创建和删除节点
            切换时 只需要修改节点的属性即可
        -->
        <h3 v-show="ok">show: 协议内容</h3>
        <h3 v-show="!ok">no</h3>
    </div>

    <script src="vue.min.js"></script>

    <script>

        new Vue({   
            //
            //el 针对哪些元素进行 vue的渲染
            el: '#app',
            data:{
                ok:false
            }
        })

    </script>
    
</body>

 

6.列表渲染 v-for 循环指令  
<body>


    <!--  vue 主要关注的核心式MVC模式终端 视图层  定义一层数据 再将数据显示再页面上 -->

    <div id="app">

        <table>
            <tr v-for="item in userList">
                <td>{{item.username}}</td>
                <td>{{item.age}}</td>
            </tr>
        </table>
    </div>

    <script src="vue.min.js"></script>

    <script>

        new Vue({   
            //
            //el 针对哪些元素进行 vue的渲染
            el: '#app',
            data:{
                //用户数组 用列表的形式
                userList: [
                    {username : 'Helen',age: 18},
                    {username : 'Peter',age: 10},
                ]
            }
        })

    </script>
    
</body>

 

7.vue的生命周期: 注意两个函数  created() 和 mounted()  //created() 终端方法在内存中已经取得,但是未渲染到页面中    //mounted90 的方法 数据已经被渲染到页面中    
<script src="vue.min.js"></script>


<script>


    new Vue({


        el: '#app',


        data: {


            message: '床前明月光'


        },


        // 页面在内存中已经初始化完毕:


        // 可以操作 data 中的数据、调用methods中的方法


        // 但是数据尚未被渲染到页面中:用户看不见



        created() {


            console.log('created')


            //可以操作 data 中的数据

            console.log(this.message)


            //可以调用methods中的方法


            this.show()

            //无法取出dom节点取数据,说明用户无法在浏览器中看见这个内容

            console.log(document.getElementById('h3').innerText)

        },


        // 数据已经被渲染到页面中

        mounted() { // 第四个被执行的钩子方法

            console.log('mounted')

            //可以取出dom节点取数据,说明用户已经在浏览器中看见内容

            console.log(document.getElementById('h3').innerText)

        },


        methods: {

            show() {

                console.log('show方法被调用')

            }

        },

    })

</script>

 

  二、axios 和element-ui   axios 是独立与vue的项目,可以用于发送ajax 请求 element-ui 是 vue的组件库    在同一个终端中 会有同源策略导致跨域问题的出现 , (同源策略:
  • 就是两个地址具有相同的协议(protocol),主机(host)和端口号(port)
  • 同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。
  • 同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能。
) 在相关java方法的controller层上添加 注解 @CrossOrgin 来解决跨域的问题       业务分层 和不分层的 简单实现:  
<body>


    <!--  vue 主要关注的核心式MVC模式终端 视图层  定义一层数据 再将数据显示再页面上 -->

    <div id="app">

        <!-- 显示讲师列表 -->

        <el-button type="success" @click="getTeacherList">获取列表</el-button>

        <!-- //对列表进行渲染 -->
        <table>
            <tr v-for="item in teacherList">
                <td>{{item.name}}</td>
                <td>{{item.level}}</td>
            </tr>
        </table>

        <el-table :data="teacherList" style="width: 100%">
            <el-table-column prop="date" label="编号" width="180">
            </el-table-column>
            <el-table-column prop="name" label="姓名" width="180">
            </el-table-column>
            <el-table-column prop="level" label="级别">
            </el-table-column>

            <el-table-column fixed="right" label="操作" width="100">

                <!-- 这里的scope 指的是当前这一行的意思 -->
                <template slot-scope="scope">
                    <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
                    <el-button type="text" size="small">编辑</el-button>
                </template>
            </el-table-column>
        </el-table>

        <!--  -->
    </div>

    <script src="vue.min.js"></script>
    <script src="axios.min.js"></script>
    <!-- 注意 这个ui必须放到vue后面 -->
    <script src="element-ui/lib/index.js"></script>

    <script>
        new Vue({
            //
            //el 针对哪些元素进行 vue的渲染
            el: '#app',
            data: {
                //显示讲师列表
                teacherList: [],
            },

            created() {
                this.getTeacherList();
            },

            methods: {

                //基础配置类: 返回值 是一个函数 
                initRequest() {
                    return axios.create({
                        baseURL: 'http://localhost:8010',
                        //五秒
                        timeout: 5000
                    })
                },

                // api 调用
                teacherListApi() {
                    //request 函数
                    let request = this.initRequest()
                    return request({
                        url: '/admin/edu/teacher/list',
                        method: 'get'
                    })
                },

                //数据渲染 获取teacherList 的方法
                getTeacherList() {
                    this.teacherListApi().then(response => {
                        this.teacherList = response.data.data.item;
                    }).catch(error => {

                        console.log(error)


                    })
                },


                //业务不分层
                getTeacherList2() {
                    console.log('获取 讲师 列表');
                    //目标服务器 访问端口 被阻拦: 同源策略 具有相同的地址 相同的协议 相同的端口号的时候 会出现同源策略的问题

                    // 广域网 访问前端程序 开放端口 

                    //非同源的话 会有一些安全性的问题 和安全性的 策略  接下来是回调:
                    axios.get("http://localhost:8010/admin/edu/teacher/list").then(response => {
                        console.log(response);
                        this.teacherList = response.data.data.item;
                    });
                }
            }
        })
    </script>

</body>

 

             
上一篇:vue过滤器和修饰符


下一篇:Vue生命周期 vue-resource axios的使用