Обо мне
Я инженерной науки и сетевой инженер, страстный программной техникой. Я работаю более трех лет в настоящее время в Барах Технологии Канады, помогая построить корпоративное программное обеспечение.
Проблема, которую я хотел решить
Я хотел построить поперечное настольное приложение для поперечной платформы с достойным дизайном в течение очень короткого времени
Что такое поперечное настольное приложение для архива?
Приложение Архи Это простое настольное приложение для использования Archive Manager, цели приложений:
- Регистрация коробок документов (с именем, добавленная дата, имя создателя или владельца)
- Добавить и удалить документы в каждую коробку
- Обработайте процесс заимствования для коробок (измените состояние коробки, если он присутствует, заимствован или если передается дата возврата) с регистрацией заемщика со своими личными деталями (номер телефона, электронная почта)
- Есть настольные уведомления для менеджера Archive, когда заимствованная коробка прошла дату возвращения
Tech Stack
Со временными ограничениями я хотел, чтобы технологичный стек, который мог бы позволить мне действительно быстро построить приложение и обрабатывать поперечный аспект платформы. Я закончил выбрать электрон с Rectjs Отказ Чтобы избежать хорошего количества ошибок, я решил использовать Tymdercript И для государственного управления я хотел что-то очень простое и эффективное, поэтому я выбрал Zustandjs Отказ Для стилизации, поскольку приложение не было очень большим, я решил использовать простые CSS внутри компонентов с Стильные компоненты CSS в библиотеке JS. Наконец, для хранения приложений я также хотел что-то простое, так как все приложение собирается хранить, это простой текст, поэтому я использовал LocalStorage
Процесс построения поперечной платформы для рабочего стола для управления архивом
Я продолжил в трех ключевых шагах:
Первоначальная настройка приложения Чтобы иметь возможность иметь React-Fast-Refresh, правильно работать с помощью Create-React-App и Electron/Teadercript с этими шагами ..1 Создать базовый проект App App
NPX Create-raction-App..2. Установите несколько пакетов для настройки React-Fast-Refresh--typescript && cd пряжа Добавить настройку CRA Customize-Cra-React-Refresh React-App-Reware..3 Измените сценарии React в Package.json Файл..4. Добавить электрон и связанные с ними пакеты
..5. Создать Electron.js Файл внутри публичной папки с этим контентом
const electron = require('electron');
const app = electron.app;
const { Notification, BrowserWindow, ipcMain } = electron
const path = require('path');
// const url = require('url');
const isDev = require('electron-is-dev');
let mainWindow;
const sendNotification = (data) => {
console.log(data)
let iconAddress = path.join(__dirname, '/icon.png');
const notif={
title: data.title,
body: data.body,
icon: iconAddress
};
new Notification(notif).show();
}
function createWindow() {
mainWindow = new BrowserWindow(
{
width: 1280,
height: 720,
minWidth: 1280,
minHeight: 720,
backgroundColor: "#1A202C",
show: false,
webPreferences: {
worldSafeExecuteJavaScript: true,
nodeIntegration: true
}
}
);
mainWindow.loadURL(isDev ? 'http://localhost:3000' : `file://${path.join(__dirname, '../build/index.html')}`);
mainWindow.once("ready-to-show", () => mainWindow.show())
mainWindow.on('closed', () => mainWindow = null);
}
app.on('ready', createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (mainWindow === null) {
createWindow();
}
});
..6. Отредактируйте файл package.json
"description": "", "author": " ", "build": { "appId": " " }, "main": "public/electron.js", "homepage": "./",
..7 Добавить скрипты для электрона
"electron-dev": "concurrently \"BROWSER=none yarn start\" \"wait-on http://localhost:3000 && electron .\"", "preelectron-pack": "yarn build"
- Настройка процесса сборки исполняемых файлов для разных платформ (MacOS, Windows и Linux), добавив скрипт в Package.json
"electron-pack": "electron-builder -mw -c.extraMetadata.main=build/electron.js",
- построить приложение
Проблемы я столкнулся
Было довольно много препятствий, которые я не ожидал при запуске этого проекта. В основном, процесс установки не был очень хорошо документирован, и ресурсы, которым мне удалось найти, где не в курсе. Кроме того, я также столкнулся с проблемами совместимости при попытке интеграции пользовательского веб-компонента DatePicker в проекте, но проблема была в основном, как работает React Reach и не сам электрон.
Назначение ключей
Я узнал, что, хотя у меня были сомнения по поводу стека, вполне возможно построить приложение Performant Cross Platform с веб-технологиями.
Советы и советы
- Используйте правильный инструмент для работы под рукой
- Для крупных списков манипуляций или отображения событий, используйте Reactualualualualized с реагированием или альтернативой для других каркасов, чтобы уменьшить размер узлов DOM в памяти и их Probsign также на компьютерах пользователей
- Даже при создании настольного приложения с веб-технологиями все равно следует учитывать размер пакета приложения, потому что весь JavaScript будет загружен на страницу, и если приложение осторожно не создано, приложение все равно будет медленно