【Electron】ハイブリッドアプリ開発総合【Cordova】 [無断転載禁止]©2ch.net
HTML5,CSS3,JavaScriptなどWeb標準技術を活用したアプリ開発についてのスレです。
各種フレームワークの他、webviewの利用、PWA(AMP)、ブラウザ拡張機能など板選びに迷ったらこのスレに書き込んで下さい。
副次的な話題としてビルドツールなど開発環境に関する話も可。
主なフレームワーク
Electron
https://electron.atom.io/
NW.js
https://nwjs.io/
Apache Cordova
https://cordova.apache.org/
PhoneGap
https://phonegap.com/
ReactNative
https://facebook.github.io/react-native/
NativeScript
https://www.nativescript.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured windows7以降しかサポートしてない!!!!!!!!!!! 人少なっw
ところで、Web技術を流用したUIを総称する言葉って何かある? パフォーマンスの問題とかはwasm使っていく流れになるのかな
web界隈は予測がつけづらいね electronいいよね・・・って人いなーいw
いまどきのJSプログラマーのための Node.jsとReactアプリケーション開発テクニック
2017/7/26<<もうそろそろ発売するよ。 electronは若干動作不安定と感じる
かといって他のはあまりやる気にならない パッケージの容量がでかいのはなんとかしたいよね
自前のChrome使わせるとかできんのか 今更だけどElectronで2chブラウザ的なもの作ってるよ 初のcordovaアプリ作った
https://hasemonmon.net/df5/
トランプの大富豪です
ビルド済みはandroid用しかないけどWebで同じ内容がプレイ可能です クオリティ高いな
どうせandroid限定ならPWA化したらどう? >>14
見てくださってありがとうございます
こっち方面は最近始めたばかりでいろいろ事情がわからないことだらけでぐぐりながら試行錯誤の毎日です
PWAについて簡単にぐぐってみましたが今まで全く知らない事でした
最近はこんなものがあるんですね
色々勉強させてもらいます
ありがとうございました Mac持ってないiPhone利用者です
monacaとかXamarin live player使う以外にMac(XCODE)なしでiPhoneアプリ作るのってムリ? CordovaとXamarinはどちらがおススメ? 得意な言語、好きな言語で選びなさいとしか
個人的な期待値は同程度 iconvのインストールでいろいろとモヤるな…
iconv-liteでたいていのことはクリアできるから、まあ良いか… ところでオレのグローバルインストール一覧をみてくれ
$ npm ls -g | grep '^[+`].*'
+-- asar@0.13.0
+-- eslint@4.10.0
+-- npm@5.5.1
+-- tslint@5.8.0
`-- typescript@2.5.3 ハイブリッドアプリはじめて触るんだけどhtml,css,Javascriptだけで出来ることはcordovaで出来るっていう認識で大丈夫? chromeだとフォーム部品がフォーカスされた時のoutlineの色は水色ですが
electronだとオレンジ色になります
何故違うんですか? それはそうなのですが
同じChromeから出来ているはずなのに何で色が違うのでしょうか Electronで、
CSSで作ったセレクトボックスを
トラックパッドでクリックして閉じると、hoverした部分の色が残ってしまう
(マウスでクリックした場合は正常)
という奇妙な現象が出ていたので、
Electronをアップデートしたら直りました
開発中のモジュールアップデートには抵抗がありましたが
Chrome同様こまめにアップデートしていった方がいいのでしょうね
ただ、それでもoutlineのデフォルト色がオレンジ色なのは変わりませんでした Electronについてですが
トラックパッドで画面をクリックするとCSSのhover状態がキャンセルされると気づきました
hoverで変化するようにしている箇所が、クリックすると非hoverの表示になってしまう
マウスカーソルを動かすとまたhover時表示に戻る
という挙動です
このトラックパッドというのはmacbook proのもので、
bootcampでwindows10を使っています
Chromeではこのような挙動はありません。
>>28の挙動とも関連してそうです おそらくクリック時にマウスカーソルがそこにないものと判断されてしまうのではないか
と予想しています
ハード的な問題かと考えましたが、それだとChromeで症状が出ないのがおかしい。
ChromeとElecronの間の微妙な差異の中でバグが生まれてしまっている感じです ためしにmousemoveをconsoleに出力してみましたが、
クリックしてもmousemoveイベントは発生しませんでした
おそらく原因はCSS処理の層にあるのでしょう ビルドしたら現象消えるんじゃね?
と思ったのですが、逆に>>28で消えたと思っていた症状が
ビルドしたらまた出るようになりました・・ >>28の件ですが
マウスアウトが表示に反映されるまで待てばいいのでは?と考えて
setTimeoutを使ってセレクトボックスを閉じるのを後回しにしたところ、解決しました ・CSSはどの定義が優先されてるのか
・各イベントは発火しているのか
・Electronじゃないと起こらないのか
浅い連投する前にデベロッパーツールともっと向き合って electronで
BrowserWindowを上や下や左や右に揃えて表示するにはどうしたらいいのでしょうか?
中央揃えのためにはcenterというオプションがありますが >>35の件ですが
https://github.com/electron/electron/blob/master/docs/api/screen.md
このscreenモジュールを使えばディスプレイのサイズを取得できると分かりましたが
electronの座標系はディスプレイの座標系よりも少し小さいようです
ウインドウを左揃えにするために
ウインドウのxを0にすると、左側に8ピクセルくらいの隙間が空きます
ウインドウを右揃えにするために
ウインドウのxを、画面幅 - ウインドウ幅にすると、同様に右側に8ピクセルくらいの隙間が空きます
またディスプレイの実際のピクセル数は1280×800ですが、
screen.getPrimaryDisplay()で取得できるディスプレイサイズは、1024×640です
この数字の差異は、electron内部で独自の座標系を持っているからのようで、
そのこと自体は別にいいですが、余計なマージンが入るのは困ります
たとえばxを0ではなく-8とかにすれば、左揃えには出来るのですが、
マージンが何に由来するのか分からないので、ハードコーディングするのは抵抗があります
どうなのでしょうか? https://gist.github.com/hisasann/a99b7e4aa5f2c9cfc7eb
electronの座標系のpaddingに言及しているページがありました
ただleftやtopを0、widthやあheightを画面サイズにすればウインドウが全画面になる
と書かれているので、この時点と今では挙動が変わっていそうです
ともかくこの座標系レベルのpaddingは意図的に作られたもののようです Electronではじめるアプリ開発
~JavaScript/HTML/CSSでデスクトップアプリを作ろう
野口 将人・倉見 洋輔、2017
この本では、1280×800(735), scaleFactor: 2 とか
screen.getAllDisplay()[0] を見てみれば? >>38
ありがとうございます
getAllDisplayとgetPrimaryDisplayが返す値は同じでした
ただ、その本とは異なり、scaleFactorは1.25でした
多分、このscaleFactorが、
Electron座標系とディスプレイ座標系の対応関係を決めているのだと思いますが。
その本は、Retinaなどの画素数が多い環境に基づいているのでしょうね <meta name="viewport" content="width=device-width,
initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
HTML のviewport の、initial-scale みたいなもん ありがとうございます
ということは、設定可能な項目なのでしょうか
何か色々知識が足りてない気がするので「Electronではじめるアプリ開発」をぽちってみました 漏れも、よくわからない
screen モジュールの機能を見て ElectronではipcMainとipcRendererを使って
レンダラープロセス→メインプロセスへのIPCのsendと
それに応対してのメインプロセス→レンダラープロセスのsendは出来ますが
メインプロセスを起点にしたレンダラープロセスへのIPCは出来ないようです
メインプロセス側のタイミングでレンダラープロセスを呼びたい時はどうすればいいのでしょうか? >>43
BrowserWindowオブジェクトのwebContentsプロパティに対してsendメソッドを発行することで出来ました ElectronがAndroid対応になるのはいつぐらい?
ロードマップはある?
誰がやってる? ウインドウのalwaysOnTopをトグルする処理をしようと思います
レンダラプロセス中のwindowがBrowserWindowオブジェクトなのかと思って
レンダラプロセスの中で
window.setAlwaysOnTop(true);
とやってみたのですが、エラーになりまりした
windowはBrowserWindowオブジェクトではなかったようです
レンダラプロセスの中で自分自身のBrowserWindowオブジェクトにアクセスするにはどうしたらいいのでしょうか? APIドキュメントを見ても、レンダラプロセスから自身の外観を変えることはできないようなので
IPCでメインプロセスを呼ぼうと思ったのですが
メインプロセス側でレンダラプロセスのBrowserWindowオブジェクトを確定するには
どうするのかという問題が出てきました
マルチウインドウのアプリなのでレンダラプロセスが複数あります
メインプロセスが受信するeventのsenderには、webContentsが入っているとドキュメントにあります
このwebContentsは、BrowserWindowのプロパティの一つだそうです
ですがwebContentsには、自身を所有しているBrowserWindowを取得するメソッドがないっぽいです
idプロパティを持っているので、
BrowserWindowオブジェクトのリストをループさせて比較するという方法で見つけることは出来そうですが
こういう方法しかないのでしょうか? >>48
もっといい方法があるのかないのか分かりませんが
idを使って同定するようにしました electronで新しいBrowserWindowを作る時
若干待たされる感があるのが気になっていたのですが
前もって非表示のスペアウインドウを作っておいて必要なタイミングでshowするようにしたら、
気持ちいい動作になりました
これはelectronに限らず複数ウインドウを使うアプリを作る時には定石なのかもしれませんね electronについてです
ipcMain/ipcRendererにはsendSyncがありますが
webContentsにはsendのみでsendSyncがないようです
何故でしょうか?