blog

vueのパフォーマンス向上 - 非レスポンシブデータ

1.vueインスタンス外のデータ 2.作成、マウントされたフック関数の定義 3.カスタムオプション 4.オブジェクトをフリーズし、オブジェクトのプロパティの変更を禁止します。フリーズしたコピーを作成す...

May 9, 2020 · 2 min. read
シェア

データソースのVUEは、データ、計算、インスタンスの外、カスタムオプションが含まれ、より多くのデータの開発は、データオプションで定義されますデータのデータが応答されますが、ガチョウは、いくつかのデータは、タイマーや定数など、応答する必要はありません持っているVUEを避けるために、次のオプションを合計データアクセッサの属性を変更します。

vueインスタンス外のデータ

const test = ['1', '2', '3']
export default {
// options
}

欠点:vueテンプレートでデータにアクセスできない

created, mountedフック関数の定義

created() {
 // 変数名をdataで宣言しないように注意する。
 this.testData = 'testData'
}

カスタムオプション

<template>
 <div>{{ $options.myOptions.test }}</div>
</template>
export default {
 data() {
 },
 // カスタムオプションはデータと同じレベルである
 //  : this.$options.myOptions.test
 myOptions: {
 test: '111'
 }
}

Object.freeze()

オブジェクトをフリーズし、オブジェクトのプロパティの変更を禁止します。このメソッドは、渡されたオブジェクトの凍結コピーを作成する代わりに、渡されたオブジェクトを返します。

let a = { prop: 1, prop2: 2 } // undefined
Object.freeze(a) // {prop: 1, prop2: 2}
a.prop = 3 // 3
a // {prop: 1, prop2: 2}
// Object.freeze()凍結された値は、変数への参照で置き換えることができる。
a = {prop44: 44} // {prop44: 44}
a // {prop44: 44}
// constとobjectの区別に注意すること。.freeze
// const宣言された定数は再割り当てできず、宣言時に初期化されなければならない。
const TEST = 1
TEST = 2 //  :TypeError: Assignment to constant variable.
  • Object.freezeは、ネストされたオブジェクトがある場合は、深いオブジェクトはまだ変更することができ、浅いフリーズのみ1つのレイヤですが、深いフリーズ関数の再帰的な実装の

    function deepFreeze (obj) {
     let names = Object.getOwnPropertyNames(obj)
     names.forEach(name => {
     var property = obj[name]
     if (typeof(property) === 'object' && property !== null) {
     deepFreeze(property)
     }
     return Object.freeze(property)
     })
    }
    

拡張機能

Object.seal()はオブジェクトを密封し、密封されたオブジェクトは新しいプロパティを追加できません

ゲッターとセッターを追加すると、パフォーマンスに影響します。サードパーティのライブラリ、タイマー、定数など。

Read next

アルゴリズムのレビュー:スライディングウィンドウマキシマ

配列numsが与えられたとき,配列の左端から右端に向かって大きさkのスライディングウィンドウがあります.スライディングウィンドウの中にはk個の数字しか見えません.スライディングウィンドウは一度に1桁ずつ右に移動します。 スライディングウィンドウ内の最大の値からなる配列を返します。 この問題は、トピックに対して余分な説明はあまり必要ないので、理解してそのまま解析に入ることができるはずです。と考えるのは簡単です。

May 9, 2020 · 4 min read