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

目录
相关文章
|
11月前
|
人工智能 小程序 前端开发
一个小程序轻量AR体感游戏,开发实现解决方案
针对青少年运动兴趣不足问题,AR体感游戏凭借沉浸式互动体验脱颖而出。结合小程序“AI运动识别”插件与WebGL渲染技术,可实现无需外设的轻量化AR健身游戏,如跳糕、切水果等,兼具趣味性与锻炼效果,适用于儿童健身及职工团建,即开即玩,低门槛高参与。
|
11月前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?哪个好
小程序的开发方式丰富多元,开发团队可根据自身的技术背景、项目具体需求以及资源状况,灵活挑选最为适宜的开发路径。以下将详细介绍几种主流的小程序开发方式。
891 1
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
566 1
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
518 0
在线课堂+工具组件小程序uniapp移动端源码
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
970 0
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
5399 3
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
1010 0
微信小程序更新提醒uniapp
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
692 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序

热门文章

最新文章