Electron学习之旅6,快捷键,shell模块,优雅显示窗口 -> 类封装,设置模块开发,七牛云对象存储 -> (上传下载)类封装+高阶函数,流(介绍概念使用),时间戳作用

1、Electron定义快捷键

1、先看下electron默认菜单项
github地址
注:darwin 是指MacOS平台

2、shell模块

shell 模块提供与桌面集成相关的功能。// main和renderer均可以使用
比如引入链接并打开浏览器 // 以下是MenuItem某菜单项

在这里插入图片描述

3、优雅显示窗口

electron优雅显示窗口

4、使用类封装重复操作

需求背景:应用可能包含多个渲染进程,每个渲染进程均书写重复逻辑。故抽离成类进行实例。
封装操作: 使用es6 class语法糖抽象AppWindow类extends继承BrowserWindow。

const { BrowserWindow } = require('electron');

class AppWindow extends BrowserWindow {
  constructor(config, urlLocation) {
    const basicConfig = {
      width: 800,
      height: 600,
      webPreferences: {
        nodeIntegration: true
      },
      show: false,
      backgroundColor: '#efefef'
    };
    const finalConfig = { ...basicConfig, ...config };
    super(finalConfig);
    this.loadURL(urlLocation);
    this.once('ready-to-show', () => {
      this.show();
    });
  }
};

export default AppWindow;

在这里插入图片描述

5、设置模块开发

1、设置模块采用另起BrowserWindow的方式
2、这个BrowserWindow的loadURL采用file://
在这里插入图片描述
3、主进程快捷键呼出第二个渲染进程 // 过程省略
4、第二个进程采取原生js操作 // setting.js

“选择新的位置” -> 使用remote呼出dialog模块 -> 选择文件夹后回调出path -> path赋值input标签 -> “保存” -> 持久化 electron-store

在这里插入图片描述

6、七牛云对象存储

三大类: 块储存(硬盘挂载在主机上)、文件储存、对象储存

一、码农式使用:
在这里插入图片描述

二、SDK使用
npm install qiniu --save
七牛云SDK文档
1、sdk上传文件
在这里插入图片描述
运行结果
在这里插入图片描述
2、sdk下载文件
下载文件sdk文档
在这里插入图片描述
三、进行面向对象创建类的方式,二次封装sdk。

// 期间有很多思考的过程。提取constructor公共属性,设计api,增加异步Promise,精简代码,消除冗余,

再消除Promise异步每次if else判断冗余时,发现回调参数无法被修改,故需要一个高阶函数,链式调用。

问题重现:// 回调参数会七牛云固定格式,无法扩充resolve,reject
在这里插入图片描述
高阶函数设计:

在这里插入图片描述
最终呈现:
在这里插入图片描述

四、下载文件
1、张轩大大摸爬滚打抽离出的 主域名获取方法(官方未明确提供)
在这里插入图片描述

7、流

一、流介绍

node中流场景:readable | writable
Readable Streams、HTTP responses、HTTP requests、fs read streams 、zlib streams、 crypto streams、 tcp sockets、 child process stdout and stderr 、 process.stdin

1、不使用流带来的主要问题:
读取大文件内存占用过高
在这里插入图片描述
在这里插入图片描述
当node创建一个createServer且监听到用户的request请求,传递一个big.rar给用户时。
在这里插入图片描述
可见node.js内存占用率近35%有850mb,非常可怕。若数百个用户同时请求一个大文件,那么内存将会溢出。

2、使用流优化之后
在这里插入图片描述
在这里插入图片描述
内存上限不过50mb,提速效果显著。

二、流的类型

Readable (可读流)
Writeable (可写流)
Duplex (双向流)
Transform (转换流)

三、简单流创建

1、创建 可读可写流,以及流入。
在这里插入图片描述
2、转换流(使文件被Gzip压缩,再流入目的地)
在这里插入图片描述

四、正式请求七牛云端数据并下载

时间戳作用
大多用于更新文件|数据时,使浏览器不使用缓存,重新发送请求,去拿到最新的内容。
在这里插入图片描述
红线还代表Promise异步返回的,链式调用

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值