用Django×Electron无法开发桌面应用程序吗?
首先
-
- Django
- Electron
Django是一种用于开发Python Web应用程序的Web框架。
Electron是一种可以使用Web技术制作桌面应用程序的引擎。
简而言之,使用 Django × Electron 可以创建“基于 Python 的桌面应用程序”!
那样的…我做了个梦。
- Is it a good idea to use Django in making a desktop app? How difficult is it?
好像不太好。
怪不得搜索「Django Electron」或者「Django桌面应用程序」都找不到热门文章。
- DJANGO Y ELECTRON PARA APLICACIONES MULTIPLATAFORMA
大致上有一篇正在实践的文章。
既然这么辛苦,我试着在代码中加上注释。
// electron モジュールのインポート
const electron = require('electron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
let mainWindow;
// アプリケーションウィンドウを閉じたときの処理
app.on('window-all-closed', function () {
// アプリケーションを終了する
app.quit();
});
// アプリケーション起動時の処理
app.on('ready', function () {
// child_process で python コマンドを実行する
// jdango サーバー起動のコマンド【$ python manage.py runserver】
var subpy = require('child_process').spawn('python', ['./manage.py', 'runserver']);
// サーバーのアクセスURL
var mainAddr = 'http://localhost:8000/';
// request-promise モジュールのインポート
var rq = require('request-promise');
// ウィンドウ起動時の設定処理
var openWindow = function () {
// ウィンドウサイズなどの設定
mainWindow = new BrowserWindow({ width: 800, height: 600 });
// 読み込むURLを指定
mainWindow.loadURL(mainAddr);
// ウィンドウを閉じたときのイベント
mainWindow.on('closed', function () {
mainWindow = null;
// child_process を終了する
subpy.kill('SIGINT');
});
};
// 起動処理
var startUp = function () {
// 読み込み終了待ち
rq(mainAddr)
// 読み込み完了したら……
.then(function (htmlString) {
console.log('server started');
// ウィンドウを起動
openWindow();
})
.catch(function (err) {
// 404エラーとかだと、ここで無限ループして終わらない
// だが、正常時にも何度かこのブロックを通る(なぜ?)
startUp();
});
};
// 起動
startUp();
});
问题点
-
- 在执行期间,即使在浏览器中也可以访问 http://localhost:8000 。
-
- 在Windows环境中,即使关闭应用程序,服务器也不会关闭。(无法结束子进程)
- 启动速度很慢。
说起来,在仅使用Django×Electron进行开发会有一些难题的印象。
Django×Electron 的开发方式
暂时来说,没有不能做到的事情。
- Pythonでデスクトップアプリを作る with Electron
只需要一个选项,用中文进行释义:只要将本文和上述的入口JS文件结合起来,将Electron投入Django的项目文件夹即可。
Django桌面应用程序。
为什么即使不仅仅限于Electron,还有人想尝试使用Django来开发桌面应用,却很难找到相关的文章呢?难道说Django在桌面应用方面确实不太兼容?
我对此并不完全理解……orz
Django制作桌面应用的最佳方案是什么?
-
- Building Future Web Apps With JavaScript and Django
- Django REST Framework の使い方メモ
经过各种调查研究,发现有一种方法可以使用Django创建API,并负责Web应用的后端(使用Django REST Framework可以更轻松地创建API)。
总之……
-
- React(フロントエンド)
-
- Django + REST Framework(バックエンド)
- Electron(Web アプリをデスクトップアプリ化)
这个组合是最佳解决方案吗?
积弊已久
不过,如果使用 React×Electron ,最好也加入 Webpack 和 Babel……
React × Webpack × Babel × Django × Rest Framework × Electron 的中文版本:
React × Webpack × Babel × Django × Rest Framework × Electron
变得高傲自大。
文献引用
-
- Is it a good idea to use Django in making a desktop app? How difficult is it?
-
- Building Future Web Apps With JavaScript and Django
-
- Django REST Framework の使い方メモ
-
- DJANGO Y ELECTRON PARA APLICACIONES MULTIPLATAFORMA
-
- bottle×Electronで簡単!PythonのGUIアプリ開発
- Pythonでデスクトップアプリを作る with Electron