美文网首页前端开发智慧物业前端开发
vue-cli@3 + electron开发一款本地小说阅读器(

vue-cli@3 + electron开发一款本地小说阅读器(

作者: 相听不厌 | 来源:发表于2019-07-06 17:44 被阅读9次

提醒:本人想找个本地看小说的软件,发现少之又少,索性自己研究一个本地TXT小说阅读器。平时工作较忙,不定时更新,随时太监。。。

欢迎大神批评指点!

前提:node、npm、vue-cli@3都安装好

项目分析

  • 列表页


    列表页
  • 阅读页


    阅读页
  • 页面组件划分及大概的操作逻辑


    组件
  • 分析
    选用element-ui组件
    可能涉及的组件:按钮、表格、导航
    electron:最大化、最小化、关闭、状态栏显示或隐藏、状态栏鼠标右键退出、任务栏还原和最小化
    还需要考虑到可改变窗口大小,所以要响应式
    node方位本地文件、txt文件
    我们这是本地文件,一些状态设置可以放到localStorage里

大概就这些,实际情况根据后面开发情况再探讨

快速创建项目:read-book

  • vue create read-book
  • vue add electron-builder
  • vue add electron 选Import on demand(按需引入);选cn-ZH(大陆下载)

提示:项目命名不能有大写,否则会报错
提示:安装electron-builder插件时,如果你之前安装过electron则选择一下版本,如果没有安装过,那么过程会很慢,看我之前写的一篇文章安装:npm i electron -g 安装慢的解决方法

自定义组件

定义Header.vue、BookLists.vue、ReadMain.vue分别引入到App.vue中,然后利用v-if来控制BookLists和ReadMain这两个组件哪一个显示

app.vue代码如下:

<template>
  <div id="app">
    <Header></Header>
    <BookLists v-if="list"></BookLists>
    <ReadMain v-else></ReadMain>
  </div>
</template>

<script>
import Header from './components/Header.vue'
import BookLists from './components/BookLists.vue'
import ReadMain from './components/ReadMain.vue'

export default {
  name: 'app',
  components: {
    Header,
    BookLists,
    ReadMain
  },
  data(){
    return{
      list:true
    }
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;  
}
</style>

初始化一下CSS样式

到项目》public》index.html中增加一下样式:

<style>
      *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
    </style>

写Header.vue

<template>
<div class="header">
    <div class="logo">大爷阅读器</div>
    <div v-if="list" class="importBook">
        <el-button size="mini" >导入<i class="el-icon-upload el-icon--right"></i></el-button>
    </div>
    <div v-else class="bookName"></div>
    <div class="handler">
        <el-button-group>
            <el-button type="primary"  size="mini" icon="el-icon-minus"></el-button>
            <el-button type="primary"  size="mini" icon="el-icon-full-screen"></el-button>
            <el-button type="primary"  size="mini" icon="el-icon-switch-button"></el-button>
        </el-button-group>
    </div>
</div>
</template>

<script>
    export default {
        name: "Header",
        data(){
            return{
                list:true
            }
        }
    }
</script>

<style scoped>
 .header{
     display: flex;
     height: 30px;
     width: 100%;
 }
    .logo{
        display: flex;
        width: 100px;
        justify-content: center;
        align-items: center;
    }
    .bookName,.importBook{
        display: flex;
        align-items: center;
        flex: 1;
    }
    .handler{
        display: flex;
        width: 132px;
    }
</style>


注意:

我们这里用到了element组件,由于我们是按需引入的,所以要把这两个组件引入到我们的项目里
到项目》src》plugins》element.js中

import Vue from 'vue'
import { Button , ButtonGroup} from 'element-ui'

Vue.use(Button)
Vue.use(ButtonGroup)

看一下效果:

image.png

红色框里的是我们的效果,其他部分我们回头会干掉的。

今天就弄到这里,不定时更新,欢迎关注公众号交流

ITmonkey

相关文章

网友评论

    本文标题:vue-cli@3 + electron开发一款本地小说阅读器(

    本文链接:https://www.haomeiwen.com/subject/uziphctx.html