electron 通信模式
send/on 模型:
ipcMain.on: 这个方法用于监听来自渲染进程的消息。当渲染进程通过 ipcRenderer.send 发送特定的 channel 消息时,这个方法会被触发。
在回调函数中,首先使用 findFn 函数根据 channel 查找相应的处理函数。
然后调用这个处理函数,并传递参数 params 和 event。这个处理函数是异步的,使用 await 等待其结果。
完成后,使用 event.returnValue 设置返回值,并通过 event.reply 发送回应到渲染进程。
如果过程中出现错误,会捕获异常并记录日志。注释掉的代码显示,原本还可以通过 event.returnValue 或 event.reply 发送错误信息回渲染进程。
invoke/handle 模型:
ipcMain.handle: 这个方法用于设置一个处理函数,当渲染进程通过 ipcRenderer.invoke 调用特定的 channel 时,这个方法会被触发。
它的工作流程与 send/on 类似,但不同之处在于 invoke ...
electron开发依赖记录-云盘
这个package.json文件列出了quark-cloud-drive项目的依赖项。以下是每个依赖项的作用:
@ali/itrace-ulog-node:
版本:^0.2.6
作用:用于日志记录和追踪。这个库可能是阿里巴巴内部用于日志记录和追踪用户操作的工具。
@ali/quark-pdfsdk:
版本:1.0.5
作用:PDF处理相关的SDK。这个库可能是用于处理PDF文件,比如创建、编辑或显示PDF文档。
@ali/xdrive:
版本:1.3.22
作用:云存储相关的SDK。这个库可能是用于与阿里巴巴云存储服务进行交互。
@vscode/windows-mutex:
版本:0.4.4
作用:用于处理Windows上的互斥锁。这个库主要用于确保同一时间只有一个实例在运行,防止多个实例同时访问共享资源。
electron-clipboard-ex:
版本:1.3.3
作用:扩展Electron剪贴板功能。这个库提供了额外的功能来操作系统剪贴板,比如读取和写入剪贴板内容。
es5-ext ...
es6导出的方式默认导出(default export)和命名导出(named export)
1、默认导出(default export):默认导出允许你在一个模块中指定一个默认导出项。当其他模块导入该模块时,可以使用 import 语句来导入默认导出项,并且可以使用任何合法的变量名来指定导入的内容。一个模块只能有一个默认导出。
例如,如果你使用 export default 导出一个对象,如下所示:
12345678910111213141516171819// A.jsconst variable1 = 'Value 1';const variable2 = 'Value 2';function function1() { // 函数1的实现...}function function2() { // 函数2的实现...}export default { variable1, variable2, function1, function2};
然后你可以这样导入默认导 ...
URL片段标识符或书签说明存在多种特殊格式的URL片段(也称为URL片段标识符或书签),它们用于指示网页上的特定部分或执行特定的动作。以下是一些常见的特殊URL片段:
锚点链接: #section1
这种片段用于直接滚动到网页上带有相同id属性的元素。常用于长页面的内部导航。
查询参数: ?param=value
这种片段用于在URL中添加查询参数,常用于表单提交或传递额外信息给服务器。
编码后的文本: #:~:text=some%20text
如前所述,这种格式用于搜索引擎结果预览,指示搜索引擎展示与后面跟随的文本相匹配的部分。
路径参数: /path/123
在某些Web应用中,URL路径的一部分可以作为参数传递,用于标识特定的资源。
哈希路由: #/user/profile
在单页面应用程序(SPA)中,哈希符号(#)后的部分用于路由控制,告诉前端框架或库加载特定的视图或组件。
URL编码: %20 (代表空格), %2F (代表正斜杠)
用于确保URL中的字符是有效的,比如空格、特殊字符等。
JavaScript操作: #javascript-code ...
1. 可选链操作符(Optional Chaining Operator)可选链操作符?.可以安全地访问嵌套对象的属性或方法,即使其中某个属性为null或undefined,也不会抛出错误,而是直接返回undefined。
123javascript复制代码let obj = { foo: { bar: 'baz' } };let result = obj?.foo?.bar; // result: 'baz'let result2 = obj?.foo?.baz; // result2: undefined
2. 空值合并操作符(Nullish Coalescing Operator)空值合并操作符??用于在变量为null或undefined时提供一个默认值。
12javascript复制代码let appSecret = null;let result = appSecret ?? 'defaultSecret'; // result: 'defaultSecret ...
uuid12345678910111213141516171819202122232425262728var get = function (len = 32, firstU = true, radix = null) { const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); const uuid = []; radix = radix || chars.length; if (len) { // 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位 for (let i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)]; } else { let r; // rfc4122标准要求返回的uuid中, ...
前端二进制处理
是nodejs的二进制数据 , 是浏览器的二进制数据
<ArrayBuffer> 是核心对象,是所有的基础,是原始的二进制数据。
node处理123// node读到<Buffer>可以直接写入fs.writeFileSync(path, <Buffer>);
浏览器处理123456// 使用createObjectURL,获取包含对象的url字符串URL.createObjectURL(object)// object用于创建 URL 的 File、Blob 或 MediaSource 对象。URL.createObjectURL(file);URL.createObjectURL(blob);
系统交互123node读取<Buffer>得到Uint8Array 转换为 BlobURL.createObjectURL(new Blob([<Uint8Array >],{ type: 'image/jpeg' }))
资源转换
bolb -> ...