Обо мне
Я инженерной науки и сетевой инженер, страстный программной техникой. Я работаю более трех лет в настоящее время в Барах Технологии Канады, помогая построить корпоративное программное обеспечение.
Проблема, которую я хотел решить
Я хотел построить поперечное настольное приложение для поперечной платформы с достойным дизайном в течение очень короткого времени
Что такое поперечное настольное приложение для архива?
Приложение Архи Это простое настольное приложение для использования 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 будет загружен на страницу, и если приложение осторожно не создано, приложение все равно будет медленно