ウェブ開発者向けのOpera Unite

Opera Uniteサービスとして簡単なカウンターを作成する方法は?

これは、Opera Unite(「サービス」または「プラグイン」とも呼ばれます)でWebアプリケーションを作成する方法を理解するのに役立ちます。



画像



15行のJavaScript + 7 XML。



明らかに、まずOpera Uniteをダウンロードしてインストールします(Operaが既にインストールされている場合は、必要に応じて更新が行われます)。



2つのファイルを作成するフォルダーを作成します。



1. config.xmlを作成します。



  <ウィジェット>
   <widgetname>テスト</ widgetname>
   <機能名= "http://xmlns.opera.com/webserver">
     <param name = "type" value = "service" />
     <param name = "servicepath" value = "test" />
   </機能>
 </ widget> 




2. index.htmlファイルを作成します。



 <スクリプト>
 var counter = 0;
 window.onload = function(){
     webserver = opera.io.webserver
     if(ウェブサーバー){
         webserver.addEventListener( '_ index'、start_page、false);
     }
 }
 function start_page(r){//スペースはオプションで、habrのみがこれを(r)に置き換えます
    カウンター++;
     var o = r.connection.response;
     o.write( 'このページは<b>' + counter + 'times </ b> !!'で表示されました);
     o.close();
 }
 </ script>
 <html> <title>マイアプリケーション</ title> </ html>




これは明らかに完全な例ではありません。 スクリプトを別のファイルに保存することで拡張できます。



* Opera Uniteがアクティブでない場合はアクティブにします(Operaは次のステップでそれについて尋ねますので、スキップできます)



4. config.xmlをOperaにドラッグアンドドロップします。 彼女は尋ねます-インストールするかどうか? 確認します。



すべて準備完了です。 投稿の冒頭に写真があります。

(英語-60行のJavaScriptで簡単なブログを作成する方法)



5. index.htmlで何かを変更する場合-古いバージョンが表示されます-デバッグソリューション:Unite->「サービスの管理」(またはF4)アイコンを右クリックし、「テスト」->「サービスの停止」を右クリックし、同じ、「サービスの開始」のみ。 ソースが再起動します。 カウンターはリセットされます(永続性の問題、私はまだそれを解決する方法を探しています。おそらくfileioライブラリ+ JSONの何かがRESTデータベースになります)。



6.創造性を誰かと共有するには、URLをコピーし(OperaではF8-Ctrl + C)、次のように変更します。



unite://-> http://



そのように



unite://my_compute.my_opera_login.operaunite.com/test/



になる



http://my_compute.my_opera_login.operaunite.com/test/



7. HTMLテンプレートにマークアップを使用します



Web開発にUniteを使用する必要がありますか? 私はこの主題について多くの異なる考えを持っていますが、それらを翻訳する時間はありません。 英語注文の場合-http://unitehowto.com/Whyをお読みください。



非常に短い場合:





これらの問題の解決策を見つけたら、 unitehowto.comに回答を投稿します。



カウンターをリセットしないようにする方法





永続性の問題は解決しました(Opera、もっと小さな例を見てみましょう!)



1. config.xmlを変更します。



<widget>

<widgetname>Test</widgetname>

<feature name="http://xmlns.opera.com/fileio">

</feature>


<feature name="http://xmlns.opera.com/webserver">

<param name="type" value="service"/>

<param name="servicepath" value="test"/>

</code>

</widget>








ファイルシステムを使用するOperaの許可をオンにするのは私たちです(サンドボックスではすべて注意が必要です)。 次に、スクリプトを変更します。



  var counter = 0; 


に置き換える



 var dir = opera.io.filesystem.mountSystemDirectory( 'storage');
 {
	 stream = dir.open(dir.resolve( '/ storage / newfile')、opera.io.filemode.READ);
	 if(ストリーム){
		 var counter = parseInt(stream.readLine());
		 stream.close();
	 };
 } catch(err){//メッセージ:FILE_NOT_FOUND_ERR
	 var counter = 0;
 };




オペラは.exists()メソッドを宣言しますが、私はそれを見つけませんでした(呼び出しのほとんどすべてのオプションを試しました)。また、ファイルがない場合、dir.open(...)はすぐに例外を返します。



別のサンドボックス内のファイルにアクセスする方法について(/ storage /にありません) -fileioドキュメント (英語)をお読みください。



これらの行を使用して、ファイル(/ storage / newfile)から変数をロードします-実際、このファイルはユーザーによって/ Documents and settings /..../ Local settings /..../ 4393408934 /(およびt .p。)、つまり -これは絶対パスではなく、サンドボックス内のパスです。



理論的には、オブジェクトのJSON表現を保存する必要があります。その後、Intだけでなく、複雑なネスト構造を保存できます。



start_pageの最後に、保存を追加します。



	 var stream = dir.open( '/ storage / newfile'、opera.io.filemode.WRITE);
	 stream.writeLine(カウンター);
	 stream.close();




これは最良のオプションではありません-呼び出しごとにファイルを保存しますが、Operaでwindow.onunloadを忘れていたと思います(window.onloadを実行しました)。



保存を伴う完全なソース: t9.zip



スクリプトのデバッグ、落とし穴



これはOperaのアルファリリースであるため、発言はすべて無料です。



ソースの再起動:「サービスの停止」->「サービスの開始」->(エラーコンソールの確認)-> F5。 (場合によっては、再インストールも必要です。)



[ツール]-> [詳細]-> [エラーコンソール]で何が起こったかのヒントを見つけることができますが、意味のない名前のエラーもあります。 [更新] URL オペラを開きます:config#UserPrefs | Exceptions Stacktrace 、チェックボックスをオンにし 、下の[保存]ボタンをクリックすることを忘れないでください。 これにより、エラーコンソールのエラーが読み取り可能になります。



構文エラーは、各「サービスの停止」→「サービスの開始」の直後にエラーコンソールをチェックすることで検出されます。



config.xmlを変更した場合、ディレクトリの名前を変更し、スクリプトを再インストール(ドラッグアンドドロップ)する必要があります。そうしないと、オペラはメモリから古いバージョンを取得します。



スクリプトでalert()とwindow.onunloadを使用してはいけません(オペラを殺し、バグレポートを送信しました)。



「リソースが見つかりません」というエラーは、構文エラーまたは他の何かを意味します。



一般的に、今のところ、デバッグは恐怖です。



しかし、概して-Opera-巨人! Webを真のP2Pにすることは強力です! そして、こことリンク「/なぜ」の下で説明されている問題-私は彼らがそれを修正すると思います。





ヨイハジ

ハブルからの眺め



All Articles