河南大学web开发技术(vue)实验三

记得关注和点赞,别白嫖辣5555给点动力不然懒得写了...

分组:

实验室:

指导教师:

实验日期:

实验的准备阶段

(指导教师填写)

课程名称

Web开发技术

实验名称

实现导航栏与自定义插件登录页面(04500022003)

实验目的

  1. 掌握Vue提供的常用API
  2. 掌握Vue实例对象中的常用属性
  3. 掌握通过全局对象配置Vue的方法
  4. 掌握使用render渲染函数完成页面渲染的方法

实验内容

  1. 使用插槽vm.$slots实现一个导航栏结构
  2. 创建一个自定义插件,实现登录页面

实验类型

(打R)

□验证性    □演示性     □设计性      R综合性

实验的重点、难点

  1. 常用API的使用
  2. Vue实例的常用属性
  3. 组件的进阶方法

实验环境

  1. VSCode编辑器
  2. Chrome浏览器

实验的实施阶段

实验步骤及实验结果

1.使用vm.&slots实现一个导航栏结构

根据示例图分析,导航栏内只需要三个链接,分别名为百度、淘宝和火狐,所以:

1.1根据题目要求,在script部分的导航栏组件中先定义插槽:

const NavigationBar = {

        template: `

                <nav>

                    <slot name="links"></slot>

                </nav>

            `

}

   1.2在html部分使用之:

<div id="app">

    <navigation-bar>

        <template v-slot:links>

            <a href="#" @click="showLogin">百度</a>

            <a href="#" @click="showLogin">淘宝</a>

            <a href="#" @click="showLogin">火狐</a>

        </template>

    </navigation-bar>

    <login-form v-if="loginVisible"></login-form>

</div>

    值得注意的是为了实现如示例图那般专挑的效果,我们需要在每个链接上加上显示登录组件的操作,并在登陆组件内设置显示条件,根据本周讲的内容使用@和v-if

2.经过第一部分,那么第一个页面的内容就依葫芦画瓢组装好了,然后配置登陆界面,需要给出一个登录按钮和注册按钮,并在下面画上四个大字“登录组件”,但这未免太过朴素,为了以后抓到这个模板就能用我对其进行了一些优化,整体代码如下(内含运行图):<!DOCTYPE html>

<html lang="zh">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Vue3 示例</title>

    <script src="https://unpkg.com/vue@next"></script>

</head>

<body>

<div id="app">

    <navigation-bar>

        <template v-slot:links>

            <a href="#" @click="showLogin">百度</a>

            <a href="#" @click="showLogin">淘宝</a>

            <a href="#" @click="showLogin">火狐</a>

        </template>

    </navigation-bar>

    <login-form v-if="loginVisible"></login-form>

</div>

<script>

    const NavigationBar = {

        template: `

                <nav>

                    <slot name="links"></slot>

                </nav>

            `

    }

    const LoginForm = {

        data() {

            return {

                username: '',

                password: '',

                isLogin: true

            }

        },

        template: `

                <div>

                    <form>

                        <label for="username">用户名:</label>

                        <input id="username" type="text" v-model="username">

                        <label for="password">密码:</label>

                        <input id="password" type="password" v-model="password">

                        <button type="submit" @click="isLogin ? login() : register()">{{ isLogin ? '登录' : '注册' }}</button>

                    </form>

                    <button @click="toggle">{{ isLogin ? '没有账号? 注册' : '已有账号? 登录' }}</button>

                </div>

            `,

        methods: {

            login() {

                // 登录逻辑

            },

            register() {

                // 注册逻辑

            },

            toggle() {

                this.isLogin = !this.isLogin;

            }

        }

    }

    const app = Vue.createApp({

        data() {

            return {

                loginVisible: false

            }

        },

        methods: {

            showLogin() {

                this.loginVisible = true;

            }

        }

    })

    app.component('navigation-bar', NavigationBar)

    app.component('login-form', LoginForm)

    app.mount('#app')

</script>

</body>

</html>

1

实验结果的处理阶段

实验结果的分析与总结

经过本次实验我有了以下收获:

Vue组件的基本使用:我学习到如何创建和使用Vue组件,包括如何定义组件的模板、样式和逻辑,以及如何在其他组件或应用中使用这个组件。

Vue的插槽系统:我学习到如何使用Vue的插槽来创建更灵活和可复用的组件。插槽允许你在组件中插入任意类型的内容,这使得组件可以在不同的上下文中使用不同的内容。

Vue的条件渲染:我学习到如何使用Vue的v-if和v-else指令来进行条件渲染,这允许你根据某些条件来决定是否显示某些内容。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值