vueelectron开发桌面应用程序(electronvite2vue3)

今天给小伙伴们分享 手把手撸后台系列一:使用electron vite.js创建后台之登录/注册模块。

vueelectron开发桌面应用程序(electronvite2vue3)(1)

登录、注册页整体分为左右两列布局,顶部导航栏采用镂空背景展示。

vueelectron开发桌面应用程序(electronvite2vue3)(2)

左侧背景使用了css3的 backdrop-filter 来实现毛玻璃效果。这里参考了苹果官网的导航背景虚化。

vueelectron开发桌面应用程序(electronvite2vue3)(3)

vueelectron开发桌面应用程序(electronvite2vue3)(4)

backdrop-filter属性可以使透过该层的底部元素模糊化。而元素本身内容却丝毫不受其影响。

新建登录模板login.vue

<template> <div> <div class="nt__lgregWrapper flex1 flexbox flex-col vui__drag"> <WinBar title=" " transparent> <template #wbtn> <Lang /> <a class="wbtn" title="扫码登录" @click="handleShowQR"><i class="iconfont icon-saoma"></i></a> <a class="wbtn" title="设置"><i class="iconfont icon-shezhi1"></i></a> </template> </WinBar> <template v-if="!isShowQrcode"> <div class="nt__lgregBox flex1 flexbox"> <div class="sidebox"> <div class="filter flexbox flex-col"> <div class="logo"><img src="/static/vlogo.png" /></div> <h2 class="subtit">ELECTRON-VUE3-VADMIN</h2> </div> </div> <div class="forms flex1 flexbox"> <form @submit.prevent="handleSubmit"> <ul class="clearfix"> <li class="flexbox flex-alignc"><input class="iptxt flex1" type="text" v-model="formObj.tel" :placeholder="t('views__auth-form_placeholder-tel')" autocomplete="off" maxLength="11" /><em class="borLine"></em></li> <li class="flexbox flex-alignc"><input class="iptxt flex1" type="password" v-model="formObj.pwd" :placeholder="t('views__auth-form_placeholder-pwd')" autocomplete="off" /><em class="borLine"></em></li> </ul> <div class="btns"><button class="vui__btn vui__btn-primary btn__submit" type="submit">{{t('views__auth-form_btn-login')}}</button></div> <div class="lgregLink align-c clearfix"> <router-link class="navigator" to="#">{{t('views__auth-form_link-forgetpwd')}}</router-link> <router-link class="navigator" to="/auth/register">{{t('views__auth-form_link-register')}}</router-link> </div> </form> </div> </div> </template> <template v-else> <div class="nt__lgregBox flex1 flexbox"> <div class="sidebox"> <div class="filter flexbox flex-col"> <div class="logo"><img src="/static/vlogo.png" /></div> <h2 class="subtit">ELECTRON-VUE3-VADMIN</h2> </div> </div> <div class="forms flex1 flexbox flex-col"> <div class="qrcode"><img src="/static/placeholder/wx-qrcode.jpg" /></div> <div style="text-align:center;">{{t('views__auth-form_saoma-tips')}}</div> <div class="btns"><button class="vui__btn vui__btn-primary btn__submit" @click="handleShowQR" style="width: 150px;">{{t('views__auth-form_saoma-back')}}</button></div> </div> </div> </template> </div> </div> </template>

vueelectron开发桌面应用程序(electronvite2vue3)(5)

顶部导航组件设置transparent属性,则可实现沉浸式透明背景。并且右上角图标按钮支持自定义配置。只需在具名插槽wbtn中新增标签即可。

<WinBar title=" " transparent> <template #wbtn> <Lang /> <a class="wbtn" title="扫码登录" @click="handleShowQR"><i class="iconfont icon-saoma"></i></a> <a class="wbtn" title="设置"><i class="iconfont icon-shezhi1"></i></a> ... </template> </WinBar>

vueelectron开发桌面应用程序(electronvite2vue3)(6)

<script> import { ref, reactive, inject } from 'vue' import { useStore } from 'vuex' import { useI18n } from 'vue-i18n' import { createWin } from '@/windows/actions' import Lang from '@/components/Lang' export default { components: { Lang }, setup() { const { t } = useI18n() const store = useStore() const v3layer = inject('v3layer') const utils = inject('utils') const isShowQrcode = ref(false) const formObj = reactive({}) const handleShowQR = () => { isShowQrcode.value = !isShowQrcode.value } const V3Msg = (content) => { v3layer.message({ content: content, icon: 'error', xclose: true, shade: true, }) } const handleSubmit = () => { if(!formObj.tel){ V3Msg(t('views__auth-form_tel-empty')) }else if(!utils.checkTel(formObj.tel)){ V3Msg(t('views__auth-form_tel-error')) }else if(!formObj.pwd){ V3Msg(t('views__auth-form_pwd-empty')) }else{ store.commit('SET_ISLOGIN', true); store.commit('SET_TOKEN', utils.secretKey()); store.commit('SET_USER', formObj.tel); v3layer.popover({ content: t('views__auth-form_login-success'), icon: 'success', shade: true, time: 2, onEnd: () => { createWin({isMainWin: true}) } }) } } return { t, isShowQrcode, handleShowQR, formObj, handleSubmit, } } } </script>

vueelectron开发桌面应用程序(electronvite2vue3)(7)

vueelectron开发桌面应用程序(electronvite2vue3)(8)

vueelectron开发桌面应用程序(electronvite2vue3)(9)

在vue2.x中使用vue-i118n国际化,只需调用this.$t('xxx'),而在vue3.x项目中则是使用useI18n实现,注意需把 t 给return出去。

在locale目录下的views文件夹里即可配置语言。

vueelectron开发桌面应用程序(electronvite2vue3)(10)

注册页面和登录页面功能基本一样,只是多了一个60s倒计时验证码。

// 60s倒计时 const handleVcode = () => { if(!formObj.tel) { V3Msg(t('views__auth-form_tel-empty')) }else if(!utils.checkTel(formObj.tel)) { V3Msg(t('views__auth-form_tel-error')) }else { data.time = 60 data.disabled = true countDown() } } const countDown = () => { if(data.time > 0) { data.vcodeText = `${t('views__auth-form_getcode')}(${data.time})` data.time-- setTimeout(countDown, 1000) }else{ data.vcodeText = t('views__auth-form_getcode') data.time = 0 data.disabled = false } }

好了,使用electron vite.js开发后台之登录/注册模块就分享到这里。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页