2017-08-15 4 views
2

Vue.jsで簡単なウェブサイトをセットアップしました。私は各ページのコンポーネントを持っています(About us、Contact us、etc.)。各コンポーネントはajax経由でページのマークアップを取得し、次に<vue-router>を使用してそれを挿入します。Vue.js:JSを他のコンポーネント用に管理するベストプラクティス

これまでのところとても良いです。

私の質問は、特定のコンポーネントでのみ使用されるすべてのJSでどうすればよいですか?私のホームページには、画像スライダ、ホバーイベントなどを設定するためだけに〜100行のJSがあるかもしれません。About Usコンポーネントをロードすると、ホームページのJSはすべてブラウザに残っていますが、もはや関連性はなくなります。手動で変数を無効にする必要がありますか?

この場合はどうなるのですか:ユーザーがホームページにアクセスし、次に[情報]ページにアクセスして[ホーム]に戻ります。ホームページの2回目の訪問で、私の古い変数はすべて存在しますが、必ずしも正しい状態にはなりません。スライダーをスライド1に戻し、ホバーをリセットしたいのですが...基本的にページをリセットするだけです。

複数のコンポーネントのJSをどのようにして管理するのかについて、非常に高いレベルの概要を尋ねていると思いますが、もう一度起動しても起動しないとdocument.readywindow.loadコールバックで結び付けられます。ありがとう。

+0

この質問はそれほど広範ではありません。 Javascriptのメモリ制限について心配する必要はありません。代わりに、実行することは決してありません。代わりに、ワイヤ上のバイト数を減らすために最適化してください。アプリケーションのさまざまな部分間で復元する必要がある変数やその他のものは、Vue.jsを処理する必要がありますか? – Qix

+0

2番目の場合:[コンポーネントの初期データをvuejsにリセットする正しい方法はありますか?](https://stackoverflow.com/questions/35604987/is-there-a-proper-way-of-resetting-a -components-initial-data-in-vuejs) – yuriy636

+0

@Qix「アプリケーションのさまざまな部分で復元する必要がある変数やその他のものは、Vue.jsの世話をする必要があります」「これは私の最初のVueプロジェクトです............... yuruy683、リンクありがとう! – Brian

答えて

1

手動で変数を無効にする必要がありますか?

いいえ、これはあなたの時間/仕事/労力をうまく使いません。パフォーマンスが問題になるまで心配しないでください。

Vueがcreatedmountedの形でdocument.readyのための類似したコールバックを持っていますが、文書は、文書ごとに...であるのに対し、これらは、コンポーネントごとにありますか?

あなたrouter-viewためkeep-aliveラッパーを使用している場合は、そのようなコンポーネントの状態をリセットするよう、作業を実行するためにactivateddeactivatedコールバックを使用する必要があります。

もしそうでなければ、ルートを離れるとコンポーネントが破壊され、何もリセットする必要はありません。

リセットに関しては、初期状態を返す関数を定義する傾向があり、状態リセットが必要なときはいつでもこの関数を使用する傾向があります。

<script> 

function initialState(){ 
    return { 
     test:'hi', 
    } 
} 

export default { 
    data(){ 
     ...initialState(), 
     hello: 'yoyo', //state that doesn't need to be reset. 
    }, 
    activated(){//user has returned to this route 
     Object.assign(this.$data, initialState()) 
    } 
} 

</script> 
+0

Vueの 'created'と' mounted'は私が探していたものです。私は 'キープアライブ'を使用していないが、私はそれを振り返ってみると、別の見方をするつもりだ。どうもありがとう – Brian

関連する問題