electron-vue跨平台桌面应用开发实战教程(三)——动态修改窗口大小

本文链接:https://blog.csdn.net/David1025/article/details/104377605

通常很多桌面应用,初次打开都需要登录,登录窗口比较小,登录成功之后展示一个更大的窗口,展示登录后的信息。例如QQ,钉钉,有道云笔记这些应用。

那么本文就来演示下如果做到这个功能,我们先做一下准备工作,我们会开发一个简单的小应用来给大家展示这个功能。

  1. UI框架:element-ui
  2. json数据库:lowdb

我们在第一篇文章的代码基础上,再安装这两个依赖

安装element-ui
安装lowdb
配置element-ui

修改main.js

  1. import Vue from 'vue';
  2. import ElementUI from 'element-ui';
  3. import 'element-ui/lib/theme-chalk/index.css';
  4. import App from './App.vue';
  5. Vue.use(ElementUI);
  6. new Vue({
  7. el: '#app',
  8. render: h => h(App)
  9. });

准备工作已经完成了,接下来就进入正式的开发了

1.修改窗口大小

通常登录窗口比较小,这个我们将登录窗口大小设置为宽:400,高:550
background.js

2.绘制一个登录界面

  1. <template>
  2. <div class="main">
  3. <div class="avatar">
  4. <el-avatar :size="60" src="https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png"></el-avatar>
  5. </div>
  6. <div class="item">
  7. <el-input placeholder="请输入账号" v-model="account" clearable prefix-icon="el-icon-user"></el-input>
  8. </div>
  9. <div class="item">
  10. <el-input placeholder="请输入密码" v-model="password" show-password prefix-icon="el-icon-lock"></el-input>
  11. </div>
  12. <div class="item">
  13. <el-button type="primary" round @click="login">登录</el-button>
  14. </div>
  15. </div>
  16. </template>
  17. <script>
  18. name: 'Login',
  19. data () {
  20. return {
  21. account: '',
  22. password: ''
  23. }
  24. methods: {
  25. login () {
  26. if (this.account === 'admin' && this.password === '123456') {
  27. this.$router.push('Home')
  28. } else {
  29. this.$message.error('用户名或密码错误')
  30. }
  31. }
  32. }
  33. }
  34. </script>
  35. <style lang="stylus" scoped>
  36. .main
  37. margin-left 30px
  38. margin-right 30px
  39. .avatar
  40. margin-top 40px
  41. margin-bottom 40px
  42. button
  43. width 100%
  44. .item
  45. margin-top 20px
  46. </style>

3.修改路由

src/router/index.js

  1. import Vue from 'vue'
  2. import VueRouter from 'vue-router'
  3. import Home from '../views/Home.vue'
  4. import Login from '../views/Login.vue'
  5. Vue.use(VueRouter)
  6. const routes = [
  7. {
  8. path: '/Home',
  9. name: 'Home',
  10. },
  11. {
  12. name: 'Login',
  13. component: Login
  14. },
  15. {
  16. path: '/about',
  17. name: 'About',
  18. component: () => import('../views/About.vue')
  19. }
  20. ]
  21. const router = new VueRouter({
  22. routes
  23. })
  24. export default router

4.修改App.vue

5.修改Home.vue

进入Home页面后,我们要将窗口的大小,调整为正常窗口大小,我们设置宽:1050,高:700;通过第二篇文章,我们知道改变窗口大小是需要再主进程中才能操作,我们Home页面是渲染进程,所以我们这时候要用到进程间通讯。

主进程(background.js)增加以下代码

  1. import { app, protocol, BrowserWindow, ipcMain } from 'electron'
  2. ipcMain.on('changWindowSize', e =>
  3. win.setSize(1050, 700)
  4. )

Home.vue

  1. <template>
  2. <div class="home">
  3. <img alt="Vue logo" src="../assets/logo.png">
  4. </div>
  5. </template>
  6. <script>
  7. const { ipcRenderer } = require('electron')
  8. export default {
  9. name: 'Home',
  10. mounted () {
  11. this.changeWindowSize()
  12. },
  13. methods: {
  14. changeWindowSize () {
  15. ipcRenderer.send('changWindowSize')
  16. }
  17. }
  18. }

更多内容请关注公众号