2017-03-22 7 views
0

は私が見ることが多い利点が代わりにコードを減らすよりも、直接他のEmber.computedを呼び出すのでは、このパターンに存在する場合は機能エンバーの消滅機能

const { computed } = Ember; 

を取得するために、破壊オブジェクトを使用することEmber.jsにコードに遭遇しますか?これはオブジェクト内の関数をカプセル化することとは違うでしょうか?

+0

これは単なるコーディングスタイルです。意味的には同じです。 Emberの新しいモジュール構造にそのようなコードを移植するほうが、ずっと簡単かもしれません。それは "カプセル化"とは関係ありません。 –

+0

「Emberの新しいモジュール構造にそのようなコードを移植するのは、ほんのわずかかもしれません。カプセル化とは、新しいjsライブラリを追加すると何が起きるのかというと、関数定義をグローバルに定義するとコードを破ることになります – jpoiri

+0

'Ember'が再定義されていない限り、とにかくベットがオフになっていて、実際にはあなたが表示するコードは 'ember 'from ember';'で始まります。 –

答えて

1

別に(確かだけ多くの用途のために報わ)のみcomputed代わりEmber.computedのたびに書くことから、主な利点は、computedローカルconst可変になることです。これにより、グローバルスコープEmberを検索する必要がなく、タイトなスポットで可変ルックアップ時間を短縮できます。また、後でEmber.computedを上書きすることによって、コード内で誰かが邪魔になるのを防ぐことができます。

+0

さて、表示されたコードは必然的に 'ember 'from ember';'で始まり、グローバルスコープの検索はありません。いずれにしても、 'Ember.computed'はプロパティの宣言で使用されます。プロパティの宣言はコンパイル時に解析され、決まった場所には決して出現しません。これらの理由のいずれかが魅力的であれば、多くの/ほとんどのアプリケーションがこのアプローチを採用すると期待していますが、IRLは誰でも 'Ember.computed'を使用します。 –

+0

@torazaburoはい、それは本当です、私の答えはエバー特有ではありませんでした。フレームワークはおそらく、一般的に使用される関数に名前付きエクスポートを使用する必要がありますので、 'ember 'から' import {computed}'を実行することができます;; – Bergi

+0

実際にあなたのコメントにEmberモジュール/インポートを再構成する計画がありますこれはすでに実装されているか間もなく行われるので、 'ember/core ';またはそれに相当するものから' import {computed}を書くことになります。 –

関連する問題