第四章-使用本机文件对话框和帮助进程间沟通 | Electron实战 (7)

列表4.17 打开文件功能实现: ./app/renderer.js

const { remote, ipcRenderer } = require('electron'); const mainProcess = remote.require('./main.js') const marked = require('marked'); const markdownView = document.querySelector('#markdown'); const htmlView = document.querySelector('#html'); const newFileButton = document.querySelector('#new-file'); const openFileButton = document.querySelector('#open-file'); const saveMarkdownButton = document.querySelector('#save-markdown'); const revertButton = document.querySelector('#revert'); const saveHtmlButton = document.querySelector('#save-html'); const showFileButton = document.querySelector('#show-file'); const openInDefaultButton = document.querySelector('#open-in-default'); const renderMarkdownToHtml = (markdown) => { htmlView.innerHTML = marked(markdown, { sanitize: true }); }; markdownView.addEventListener('keyup', (event) => { const currentContent = event.target.value; renderMarkdownToHtml(currentContent); }); openFileButton.addEventListener('click', () => { mainProcess.getFileFromUser(); }); ipcRenderer.on('file-opened', (event, file, content) => { markdownView.value = content; renderMarkdownToHtml(content); }); 总结

Electron提供了用于创建各种本机操作系统对话框的对话模块。

打开对话框可以配置为允许一个文件或目录以及多个文件或目录。

打开对话框可以配置为只允许用户选择特定的文件类型。

打开对话框返回一个数组,该数组由用户选择的一个或多个文件或目录组成。

Electron不包括读取文件的能力,相反,我们使用Node的fs模块来读写文件系统。

每个操作系统都提供了一组不同的功能。如果在给定的操作系统中不存在该特性,那么Electron将使用可用的特性,同时提供一个优雅的后备。

在macOS中,我们可以通过在dialog. showopendialog()中提供对该窗口的引用作为第一个参数,使对话框从其中一个窗口作为工作表下拉。

本机操作系统APIs和文件系统访问应该由主进程处理,而呈现UI和响应用户输入应该由渲染器进程处理。

Electron提供了一套不同的模块给主进程和渲染器进程。

remote模块为主进程模块和函数提供代理,并使该功能在渲染器进程中可用。

我们可以使用webContents.send ()命令将消息从主进程发送到渲染器进程。

我们可以使用ipcRenderer模块监听主进程发送渲染器进程的消息。

我们可以使用通道来命名消息的名称空间,通道是任意字符串。在本章中,我们使用file-opened的通道发送和侦听消息。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspjgz.html