6

誰かが Web ブラウザー用の Ruby プラグインを作成し、ユーザーがそのプラグインをインストールした場合、フロントエンドで javascript を ruby​​ に置き換えることができるというのは正しいですか?

これのためのプラグインはありませんか?または、ブラウザ側で JavaScript 以外の言語を使用する場合でも?

4

5 に答える 5

5

Silverlight プラグインでhttp://ironruby.net/を使用することもできますが、この方法で DOM とのやり取りがどれほど簡単かはわかりません。

しかし、私はあなたにそれをしないでください!Open Web Stack を使用して問題を解決してください。
快適な Ruby の世界を離れないと、ユーザー エクスペリエンスが損なわれるだけでなく、「なんだろう? このページに Silverlight が必要な理由は?」ということになります。しかし、新しいことや刺激的なことを何も学ばずに、Ruby の小さな世界にとらわれてしまうことにもなります。

先に進んで JavaScript を学んでいただければ、双方にとって良いことです。

「学ぶことは良いことです!」ということを覚えておいてください。

于 2010-09-03T12:27:58.687 に答える
2

1 つのことは事実です。2010 年の時点で、JavaScript には「スリープ」機能を停止するスレッドがありません (CPU サイクルを消費する機能を除く)。

このコメントを投稿する前に、少なくとも 1 年間 JavaScript を使用してきましたが、スレッドを停止するスリープ機能がないことが、スレッド関連のコードの真の障害であるという結論に達しました。

スリープ機能がないため、Ruby/C#/C++ などをシミュレートすることはできません。JavaScript のスレッド モデルのようなものです。つまり、JavaScript に (できれば非 CPU サイクル バーンニングの) スリープを追加しない限り、スレッド対応言語を JavaScript に変換することはできません。関数。

サーフィンをすると、スリープ機能は必要ない、setTimeout で十分であるなどのコメントがたくさんありますが、そう言う人はスレッド フレームワークを実装しようとはしていないと思います。 JavaScript。(ミューテックス、クリティカル セクションを考えてみてください。ウィジェット コンテンツが「原子全体」を形成する複数のデータ コンポーネントで構成される場合、クリティカル セクション/同期が必要である/不要であるという議論に入るのを拒否します。)

DOM モデル全体の 2 番目の目玉は、バックグラウンド スレッドで DOM 要素をレンダリングする実装です。

これが、何が起こるかです:

JavaScript の場合: create_my_awsome_widget_in_DOM(); edit_my_awsome_widget_by_editing_DOM_inside_it() if_we_are_lucky_we_reach_here_without_crashing_the_app()

DOM がバックグラウンドで (別のスレッドで) レンダリングされると、create_my_awsome_widget_in_DOM() を呼び出して DOM 編集を開始したスレッドと DOM レンダリングとの間に競合状態が発生します。JavasSript スレッドが edit_my_awsome_widget_by_editing_DOM_inside_it() を呼び出す前に、レンダリング スレッドが DOM をレンダリングするのに「十分速い」場合、すべてが正常に機能しますが、逆の場合、JavaScript は DOM の領域を変更し始めますが、まだ (まだ) 存在。

基本的に、バックグラウンド DOM レンダリングにより、create_my_awsome_widget_in_DOM() と edit_my_awsome_widget_by_editing_DOM_inside_it() がランダムな順序で実行され、create_my_awsome_widget_by_editing_DOM_inside_it() が create_my_awsome_widget_in_DOM() の前に呼び出されると、明らかにアプリケーションがクラッシュすることを意味します。

于 2011-01-11T17:59:16.577 に答える
1

mrubyは、Webブラウザーでrubyを実行するための興味深いオプションのようです: http : //qiezi.me/projects/mruby-web-irb/mruby.html

インストールを必要としないため、これは典型的なプラグインではなく、rubyコードを実行するjavascript(Cからコンパイル)です。

于 2013-01-24T12:03:12.613 に答える
1

間接的に行う方法があるかもしれません。以下は、 RubyConf 2008 での元のプレゼンテーションです。トピック:

この講演では、Ruby を Web ブラウザーで実行するためのさまざまな方法について説明します。最初に、なぜこれが良いアイデアなのかについて説明します。次に、調査した各アプローチと、それぞれで遭遇したさまざまな量の FAIL について簡単に説明します。次に、最も有望な候補である、javascript を出力する ruby​​ コンパイラーである ruby​​js に焦点を当てます。

プロジェクト ruby​​jsはまだ存在しますが、死んでいるようです。アイデアはおそらく少しクレイジーすぎました。

于 2010-09-03T12:28:32.907 に答える
0

ブラウザ/プラグインがDOMなどを処理するための広範なAPIも提供していると仮定すると、技術的には正しいでしょう。これを可能にするプラグインは知りませんが、興味深いアイデアです。

于 2010-09-03T12:27:47.827 に答える