ブラウザの単一ページIDE [AngularJS / Ace]



誰もがAceエディターについて知っていると思います。今日、AngularJSプロジェクトに構文強​​調コードエディターを固定する緊急の必要性がありました。この投稿に出くわしました-すぐにプロジェクトに添付しました。 私はそれが多くの初心者に役立つだろうと思った-私は翻訳することに決めた、利益は短い。 便宜上、jsfiddleで例を共有しました。

注-知名度の高い名前(IDEを含む)は元の記事から引用されています-実際、著者は感銘を受けました-これはAngularJSでAceを接続するための短くて便利なガイドです

翻訳:

過去数年間でWeb開発がどれだけ進歩したかを考えて停止するテクノロジーに出くわすことがあります。 私にとって、これらのテクノロジーの1つはAceプロジェクトでした。 彼に慣れていない場合は、Ase、これは「高性能Webコードエディター」です。 これにより、ユーザーがブラウザで直接コードを記述できるサイトを作成できます。 LearnAngularは 、Ace 幅広く活用しいます。



この投稿では、AngularUIのモジュールを使用して、AceエディターをAngularJSアプリケーションに統合する方法について説明します。



ステップ1-コンポーネントの入手



最初に行う必要があるのは、タスクに必要な3つのライブラリを取得することです。



次に、アプリケーションでこれらのライブラリへのリンクを次の順序で作成します。

  1. Angularjs
  2. エース
  3. ui-ace


(約lane bowerはオプションで、スクリプトへのリンクを提供するだけです。ただし、すべてのAceモジュールを使用する場合は、リポジトリからsrc-noconflictディレクトリ全体をダウンロードします) 、アセンブリ

ステップ2-HTMLを書く



 <div class="editor" ui-ace="{ mode: 'javascript', theme: 'monokai' }" ng-model="code"></div>
      
      





信じられないかもしれませんが、これはAceをサイトに統合するために必要なすべてのHTMLです。 私たちがやったことをすぐに見てみましょう。

すぐにわかるように、CSSを少し使用してエディターのサイズを構成できるように、 エディタークラスは単純に宣言されます。

ui-ace派生物は、divをAceエディターに変換します。 ここでパラメーターを渡して、プログラミング言語とテーマを設定します。 エースはたくさんの言語をサポートし、 かなりの数のテーマを持っています 。 Aceプロジェクトが実際に完全に機能する程度を完全に把握するには、少し時間をかけてそれらを研究することをお勧めします。

結論として、ユーザーがコードエディターで入力するすべてのものがAngular $ scopeに関連付けられるように、ユビキタスなngモデルの派生物を追加します

もちろん、これを使用して、デフォルトでエディターにテキストを表示させることもできます。



ステップ3-「ui-ace」ディレクティブをコントローラーモジュールに挿入する





 angular.module("app", ['ui.ace']) .controller("controller", ["$scope", function($scope) { $scope.code = "alert('hello world');"; }]);
      
      







ステップ4-CSSに触れる



エディターに適用するCSSは、ページのサイズと位置を設定するために必要です。 前述のように、エディターの実際の外観はトピックによって決まります。

 .editor { height: 200px; }
      
      





(およそ、この小さなコードセクションがないと、エディターはまったく表示されません-デフォルトの高さはありません)



ステップ5-試してみてください。



それだけです! ほんの数行のコードで、非常にリッチなコードエディターをWebページに統合しました。ユーザーが作成したコードを使用して、好きなことを続行できます。 私の意見はとてもクールです!



自分から。 AngularJSのディレクティブとして設計された1つのエディター(これも使用)に別のリンクを追加しました。 タスクは明らかに単純ですが、AngularJSに組み込まれているすべてのエディターが予測どおりに動作するとは限りません。 たとえば、私たちのプロジェクトのTinyMiceは開発モードで適切に機能し、エンドユーザーに対してほぼ 1回実行されました。 すべてが読み込まれましたが、エディターはありません。 具体的には、この場合、これはそのサイズと非同期ロードのためであるという結論に達しました。

開始設定とコンテンツのデモンストレーションを含むページの最終ビュー(Aceが余分なものを追加しないことは明らかです):

 <!DOCTYPE html> <html ng-app="app"> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> .ace_editor { height: 200px; } </style> </head> <body> <div class="editor" ui-ace="{ mode: 'javascript', theme: 'monokai',onLoad:load }" ng-model="code"></div> <h3></h3> <br/> {{code}} <hr/> <script language = "javascript" src="angular/angular.min.js"></script> <script language = "javascript" src="src-noconflict/ace.js"></script> <script language = "javascript" src="src-noconflict/ext-language_tools.js"></script> <script language = "javascript" src="src-noconflict/mode-snippets.js"></script> <script language = "javascript" src="src-noconflict/snippets/javascript.js"></script> <script language = "javascript" src="ui-ace.js"></script> <script language = "javascript"> angular.module("app", ['ui.ace']) .controller("controller", ["$scope", function($scope) { var langTools = ace.require("ace/ext/language_tools"); $scope.code = "alert('hello world');"; $scope.load = function(_editor) { _editor.setOptions({ enableBasicAutocompletion:true, enableSnippets:true, enableLiveAutocompletion: false }); }; }]); </script> </body> </html>
      
      





さらに作業中-Aceライブラリのすべての設定と作業は_editorを介して行われます

参照資料






All Articles