3.4【微信小程序全栈开发课程】组件(Component)--封装登录弹窗组件

简介: 组件 (Component) 是 Vue.js 最强大的功能之一。用来封装可重用的代码或者封装一个单独的模块,比如我们上一节的登录弹窗,下面我们来演示一下如何将代码提取到组件

1、创建组件


在src/components文件夹下面创建一个LoginWindow.vue文件

写入vue基础代码


<template>
  <div>
    登录弹窗组件
  </div>
</template>
<script>
export default {
}
</script>
<style lang='scss'>
</style>


2、添加样式代码


将index.vue文件中上一节课添加的样式代码,剪切到我们刚刚创建的LoginWindow.vue文件中。注意是剪切哦~


剪切到LoginWindow.vue文件中的标签中


.modal-mask {
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  background: #000;
  opacity: 0.5;
  overflow: hidden;
  z-index: 9000;
  color: #fff;
}
.modal-dialog {
  box-sizing: border-box;
  width: 560rpx;
  overflow: hidden;
  position: fixed;
  top: 30%;
  left: 0;
  z-index: 9999;
  background: #fff;
  margin: -150rpx 95rpx;
  border-radius: 16rpx;
}
.modal-content {
  box-sizing: border-box;
  display: flex;
  padding: 0rpx 53rpx 50rpx 53rpx;
  font-size: 32rpx;
  align-items: center;
  justify-content: center;
  flex-direction: column;
}
.content-tip {
  text-align: center;
  font-size: 36rpx;
  color: #333333;
}
.content-text {
  height:130px;
  padding:10px 0px 50px 0px;
  font-size:14px;
}
.modal-footer {
  box-sizing: border-box;
  display: flex;
  flex-direction: row;
  border-top: 1px solid #e5e5e5;
  font-size: 16px;
  font-weight:bold;
  height: 45px;
  line-height: 45px;
  text-align: center;
  background:#feb600;
}
button {
  width: 100%;
  background:#feb600;
  color:#FFFFFF;
  font-weight:bold;
}
.img {
  width: 280px;
  height:90px;
}
.little-tip {
  padding-top:15px;
  padding-bottom:3px;
  font-size: 14px;
  font-weight:bold;
  color: #feb600;
}
.little-content {
  padding-top:5px;
  font-size: 13px;
  color:#606060;
}
.key-bold {
  padding-top:5px;
  font-size: 14px;
  font-weight:bold;
}


3、编辑script部分


(1)在LoginWindow.vue文件中标签内添加methods对象,并将index.vue文件中的登录方法剪切到methods对象中


//参考代码,无需粘贴
//<script>
//export default {
//methods: {
    //需要剪切粘贴的部分,从index.vue剪切到LoginWindow.vue文件
    loginSuccess (res) {
      //将用户信息保存到缓存中,wx.setStorageSync是小程序的一个API,用来将信息添加到缓存中
      wx.setStorageSync('userinfo', res)
    },
    login () {
      //wx.showToast是小程序的消息提示框API
      wx.showToast({
        title: '登录中',
        icon: 'loading'
      })
      //通过SDK插件,请求config.js中配置的loginUrl路径(http://localhost:5757/weapp/login)
      qcloud.setLoginUrl(config.loginUrl)
      qcloud.login({
        success: res => {
          //登录成功后,显示底部导航栏
          wx.showTabBar()
          console.log('登录成功', res)
          //调用loginSuccess方法,并将用户信息作为参数
          this.loginSuccess(res)
        },
        fail: err => {
          console.error('登录失败', err)
        }
      })
    }
  //参考代码,无需粘贴
  //}
//}
//</script>


(2)import引用语句


将import引用SDK插件、config.js语句剪切到LoginWindow.vue文件中


//参考代码,无需粘贴
//<script>
  //需要粘贴的部分
  import qcloud from 'wafer2-client-sdk'
  import config from '@/config'


4、编辑template部分


将登录弹窗部分的页面代码也剪切到LoginWindow.vue文件中


<!-- 参考代码,无需粘贴
<template>
  <div> -->
    <!--需要剪切粘贴的部分-->
    <div class="modal-mask">
    </div>
    <div class="modal-dialog">
      <div class="modal-content">
        <img class="img" src="/static/images/littleTip-huang.jpg">
        <div class="content-text">
          <p class="key-bold">真自律是一款自律神器。</p>
          <p class="key-bold">将生活想象成通关打怪,打败自己的心魔加分,被心魔打败减分。</p>
          <p class="little-tip">举个例子:</p>
          <p class="little-content">
            午饭忍住没有吃麻辣烫,吃的绿色蔬菜,加5分;
          </p>
          <p class="little-content">
            但是晚饭还是没有忍住T_T,罪恶罪恶,减10分。
          </p>
        </div>
      </div>
      <div class="modal-footer">
         <!-- 小程序集成的API,通过button来授权登录 -->
         <button open-type="getUserInfo" lang="zh_CN" class='btn' @getuserinfo="login">授权登录</button>
      </div>
    </div>
<!-- 参考代码,无需粘贴
  </div>
</template> -->


5、编辑index.vue文件


(1)在index.vue文件中关联组件


通过import引入组件,并添加components对象声明组件


//参考代码,无需粘贴
//<script>
 //需要粘贴的部分,通过import引入组件
  import LoginWindow from '@/components/LoginWindow'
  //参考代码,无需粘贴
  //export default {
    //需要粘贴的部分,添加components对象声明组件
    components: {
      LoginWindow
    },


(2)编辑template部分,添加以组件命名的HTML元素


<!-- 参考代码,无需粘贴
<template>
  <div> —>
  <!-- 需要粘贴的部分 -->
  <LoginWindow></LoginWindow>
    <!-- 参考代码,无需粘贴
    <div class="show"> -->


6、查看效果


在终端启动项目,微信开发者工具会出现与上一节一样的效果


image.png

目录
相关文章
|
9月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
10月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
508 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
2372 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
人工智能 自然语言处理 小程序
技术小白如何利用DeepSeek半小时开发微信小程序?
通过通义灵码的“AI程序员”功能,即使没有编程基础也能轻松创建小程序或网页。借助DeepSeek V3和R1满血版模型,用户只需用自然语言描述需求,就能自动生成代码并优化程序。例如,一个文科生仅通过描述需求就成功开发了一款记录日常活动的微信小程序。此外,通义灵码还提供智能问答模式,帮助用户解决开发中的各种问题,极大简化了开发流程,让普通人的开发体验更加顺畅。
3965 11
技术小白如何利用DeepSeek半小时开发微信小程序?
|
小程序 Java 关系型数据库
weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
21335 14
|
小程序 关系型数据库 Java
weixin168“返家乡”高校暑期社会实践微信小程序设计与开发ssm(文档+源码)_kaic
本文探讨高校暑期社会实践微信小程序的开发与应用,旨在通过信息化手段提升活动管理效率。借助微信小程序技术、SSM框架及MySQL数据库,实现信息共享、流程规范和操作便捷。系统涵盖需求分析、可行性研究、设计实现等环节,确保技术可行、操作简便且经济合理。最终,该小程序可优化活动发布、学生信息管理和心得交流等功能,降低管理成本并提高工作效率。
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
4236 7
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
2536 7

热门文章

最新文章