私はAureliaを毎日使用しています。最近、私はReduxを使用することにしました(つまり、Aurelia + Reduxを使用して小さな試用版アプリケーションを2つ構築しました)、本当に感銘を受けました(私の開発ワークフローとアプリケーションに関する推論の明快さが大幅に改善されました)。私は実世界のアプリケーションに取り組んでみたいと思っています。Aurelia + Reduxの性能
これは、パフォーマンスに関して懸念しています(パフォーマンスについての投稿を見てきましたが、問題のアドレスを直接見たことがありません)。私はこの質問がAurelia特有の問題ではないと考えています.Reduxについての質問と、それを非反応ライブラリと併用することです。
私はReduxの理解に私の質問を書いてみましょう(おそらく私の質問は間違った理解から本当に生じていますか?)。基本的に、私がReduxを理解する方法は、ストア(javascriptオブジェクト)とreduce関数があることです。今では、reduce関数は関数ツリー(ストア全体の特定のブランチを変更する責任を負う)として定義されていますが、実際にReduxは単一のreduce関数を受け取りますこの単一の関数を作成します)。本質的
@inject(Store)
export class TodosListCustomElement {
constructor(store) {
this.store = store;
}
activate() {
this.update();
this.unsubcribe = this.store.subscribe(this.update.bind(this));
}
deactivate() {
this.unsubcribe();
}
update() {
const newState = this.store.getState();
this.todos = newState.todos;
}
toggleCompleted(index) {
this.store.dispatch({
type: UPDATE_TODO,
payload: {
index,
values: {
isCompleted: !this.todos[index].isCompleted
}
}
});
}
}
、コンポーネントツリーダウン各コンポーネント、変更を保存するためにそれ自体をサブスクライブし、ストアから必要なデータを更新:
私はReduxのを使用している方法は、そう(一例)と同様です。
私の懸念は、公開された各アクションで多くのことが起こっているようです。たとえば、私は、同様に大きな店舗とレデューサーツリーを持つ大規模なアプリケーションを持っているとします。ストアの1つのテキストフィールド(リストの1つの項目)に変更をディスパッチするテキストボックスがいくつかあるとします。これは、ユーザーがタイプすると、レデューサー関数全体が250ミリ秒ごとに実行されることを意味します(かなりの数の子孫レデューサーの実行を意味する可能性があります)。また、すべてのサブスクライブ関数も実行されます。基本的には、店の最も小さい部分でさえも変更するオーバーヘッドが多いようです。
モデルを更新するために、250msごとに実行する必要があるだけで、単一のバインド機能(変異オブザーバー)がある(アウレリアで)結合標準とのコントラストこれを...
私はReduxのに新しいですので、私は素朴に何かを誤解している可能性が高いと思います。私は事前に謝罪し、訂正する/正しい道をつけることを望みます(Reduxを使った私の限られた経験はとても楽しいですから)。
ありがとうございます。
ご回答いただきありがとうございます。私が間違っていると私を訂正してください、私はあなたの回答から、Redux + Reactを使ってレンダリング操作を最適化する多くの戦略があることを理解しています。しかし、Redux自体に内在するオーバーヘッドを最適化する戦略はありません。つまり、店舗ごとに変更した場合、リデューサ機能全体を実行する必要があります(大規模なアプリケーションでは、何百もの関数を呼び出すことがあります)。あれは正しいですか? – pQuestions123
修正。 Redux自体は簡単ではありません - 「特定の状態のスライスを購読する」方法を提供していません。単純に減速機を呼び出し、戻ってきたものをすべて保存し、すべての購読コールバックを実行します。つまり、ボトルネックとしての減速機の性能については心配しません。これは一般的にスイッチ文とルックアップテーブルを持つ関数呼び出しであり、それほど高価ではありません。あなたが心配しているのであれば、必要に応じて減速コードのチャンクを確実に実行する方法があります。 – markerikson