JavaScript でのスタンドアロン アプリケーションの構築
-
08-06-2019 - |
質問
YUI、JQuery、Prototype などの JavaScript フレームワークや、Firebug などのデバッグ ツールの能力が向上しているため、アプリケーションを完全にブラウザサイド JavaScript で実行することは、パズル ゲームや特殊な電卓などの単純なアプリケーションを作成するための優れた方法のように見えます。
ソースコードが公開されること以外に、これには何か欠点はありますか?この種のプログラムのデータ ストレージはどのように処理すればよいでしょうか?
編集:はい、Gears と Cookie はローカル ストレージとして使用できますが、ユーザーがすでに持っているファイルやその他のオブジェクトに簡単にアクセスすることはできません。また、PDF への印刷やページをファイルとして保存するなどのブラウザ機能を呼び出さなければ、ユーザーのデータをファイルに保存することもできません。
解決
スプレッドシートを含むいくつかのアプリケーションを JS で作成しました。
良い面:
- 素晴らしい言語
- コードの実行とレビューのサイクルが短い
- DOM 操作は UI デザインに最適です
- すべてのコンピュータ (および電話) 上のクライアント
欠点:
- ブラウザ間の違い(特にIE)
- コードベースのスケーラビリティ (名前空間とクラスの組み込みサポートなし)
- 良いデバッガがない (特に、IE の場合)
- パフォーマンス (FireFox と Safari で大きな進歩があったにもかかわらず)
- サーバーコードも記述する必要があります。
結論:頑張れ。やった。
他のヒント
JavaScript でアプリケーションやゲームなどの単純なデスクトップを開発するためのもう 1 つのオプションは、次のとおりです。 Adobe AIR. 。アプリ コードは、HTML + JavaScript、Flash/Flex、またはその両方の組み合わせのいずれかを使用して構築できます。これには、クロスプラットフォーム (実際には Linux、OS X、Windows のクロスプラットフォーム) であるという利点があります。Windows と OS X だけではありません)。
開発者としてのキャリアの中で、Web ページを作成して 1 つのブラウザのみをターゲットにできるのは、これだけかもしれません。
スプラウトコア は完全に JavaScript でホストされるアプリケーション フレームワークであり、特に Cocoa (KVO など) と Ruby on Rails (モデル、ビュー、コントローラーに CLI ジェネレーターを使用するなど) から概念を借用しています。これにはプロトタイプが含まれていますが、その上に洗練されたコントロールなど、多くのものを構築します。その 写真 このデモは間違いなく印象的です (特に Safari 3.1)。
グレッグはすでに Gears について教えてくれました。さらに、HTML 5 には、ローカル ストレージの標準化された手段が付属します。Safari 3.1 には、ユーザーが最大サイズを設定できるサイトごとの SQLite データベースの実装が付属しています。 SQLクエリを備えた組み込みデータベースブラウザ. 。残念ながら、広範なブラウザのサポートが期待できるようになるまでには長い時間がかかるでしょう。それまでは、Gears が確かに代替手段になります (ただし、Safari には当てはまりません…)まだ!)。簡単な保存のために、もちろん常に Cookie が存在します。
これの欠点は、js が有効になっているために翻弄されてしまうことです。これが今大したことなのかどうかはわかりません。事実上すべてのブラウザは js をサポートしており、デフォルトで有効になっています。
もちろん、もう 1 つの欠点はパフォーマンスです。あなたは再び、すべての集中的な作業を処理するクライアントのなすがままになります。これもそれほど大したことではないかもしれませんが、構築しているアプリの種類によって異なります。
Gears を使ったことはありませんが、試してみる価値はありそうです。バックアップ計画は、ajax を介してサーバー側スクリプトを実行し、データをどこかにダンプすることです。
完全にクライアント側ではありませんが、まあまあです。
スタンドアロンの JavaScript アプリケーションを作成したい場合は、以下を参照してください。 XULランナー. 。これは Firefox の基盤ですが、アプリケーション ランタイムとして配布できるようにも構築されています。インターフェースの一部を JavaScript で記述し、コードに JavaScript を使用します。
クライアントの Javascript インタプリタに完全に依存していると、パフォーマンスの問題が発生する可能性があります。Gears はデータ ストレージの優れた方法だと思いますが、市場にはそれほど浸透していないと思います。そのようなことにこだわりがない場合は、Cookie を使用することもできます。
ScottKoon と一緒にいます。Adobe AIR は素晴らしいです。これまで本当に素晴らしい (私見の) ウィジェットを 1 つしか作成していませんでしたが、jQuery と Prototype.js を使用して作成しました。まったく新しいイベント モデルを学ぶ必要がなかったため、非常に素晴らしい方法で完成しました。Adobe AIR は非常に優れており、メモリ使用量もそれほど悪くありません。新しいバージョンへのアップグレードは AIR に組み込まれているため、ほぼ自動的に行われます。そして何よりもクロスプラットフォームです。Linux 用のアルファ版もあります。 、しかし、私のEeeではすでにかなりうまく機能しています。
GWT のスタンドアロン ゲーム:
JavaScript アプリケーションからのファイルの保存に関して:
私はクライアント側アプリケーションの可能性に本当に興奮しています。Flash 10 では、ブラウザに直接保存するファイルを作成する機能が導入されました。これはとてもクールだと思ったので、保存機能をラップする JavaScript + Flash コンポーネントを構築しました。現時点では、テキストベースのファイル (vcard、ical、xml、html、css など) の作成にのみ機能します。
非テキスト ファイルのサポートをすぐに追加したいと考えていますが、これは始まりに過ぎません。
私の RSS フィードは私にとても役に立ちました。Javascript のローグライクを発見しました。
それは呼ばれています アスキーロトの墓.
いずれにせよサーバー コードを作成することを考えると、多くのドメイン (アドレス帳、ポーカー スコア、GUI 設定など) 用のストレージをサーバー上に保持することは理にかなっています。 Webkit または Gears に組み込まれますが、おそらくサーバー上に保持することもできます。
これをサーバー上に保持することには 2 つの利点があります。
- これは、典型的な MVC フレームワークのモデル層として非常に簡単に統合できます。
- ユーザーは、ブラウザや PC に縛られたり、理想的とは言えない環境 (インターネット カフェ) に縛られることなく、一貫したビューを得ることができます。
これを処理するサーバー コードも、特にこのタスクを念頭に置いて記述されている場合には非常に簡単なものになるため、認識上の大きな負担にはなりません。
qooxdooと一緒に行きましょう。彼らは最近 1.0 を実現しましたが、ほとんどのユーザーは少なくとも 2 バージョン前には 1.0 の機が熟していたと言っています。
qooxdoo を YUI および ext と比較しましたが、プログラマにとっては qooxdoo が最適だと思います。プログラマの観点から見ると、YUI は qooxdoo ほど洗練されておらず、ext のライセンス モデルはそれほどフレンドリーではありません。
qooxdoo の(私にとっての)長所は次のとおりです。
- 非常にクリーンなコード
- Javascript フレームワークの中で私が見た中で最も優れた OO プログラミング モデル
- 非常に豊富な UI ウィジェット ライブラリ
また、単体テスト用のテスト ランナー、API ドキュメント ジェネレーターとリーダー、ロギング機能、およびデバッグに役立ついくつかの機能がインスペクターと呼ばれるものにグループ化されています。
唯一の欠点は、qooxdoo 用の既製のテーマ (スキンのようなもの) がないことです。ただし、独自のテーマを作成するのは非常に簡単です。