按需加載: 導出模塊使用屬性getter動態require
使用Import語句導入模塊,會自動執行所加載的模塊。如果你有一個公共組件供業務方使用,例如:common.js
import A from './A';
import B from './B';
import C from './C';
export {
A,
B,
C
}
業務方想使用common.js中A模塊,
import {A} from './common.js';
此時,雖然只想引用A模塊,但實際B,C模塊代碼也被執行了。
注意:
如果模塊本身使用ES5導出方式,例如module.exports = A,導出方式采用require('./A')引用。模塊采用ES6導出方式,例如export default class B {} ,導出方式采用require('./B').default引用
假如A, B, C 都是es6 寫法,上面可以優化為
module.exports = {
get A() {return(require('./A').default);},
get B() {return(require('./B').default);},
get C() {return(require('./C').default);},
};
業務方使用不變
懶加載
一般入口文件,會引入所有頁面文件,但是我們首次打開APP的時候,只是需要其中一個即可,這樣就會造成首頁打開速度會受到影響
這樣我們就需要使用懶加載,使得真正使用的時候,才被引入
使用ListView/FlatList 代替 ScrollView
這個是老生常談的,長列表要使用List, 不能直接map
使用PureComponent代替 Component
PureComponent 組件會自己判斷舊的props 、 state 和新的是否相同,相同的話,就不會再重新渲染(注意:這里是的比較是淺比較), 相當於實現了 shouldUpdateComponent;
有時候需要自己實現 shouldUpdateComponent,進行深比較props 、 state, 減少渲染次數,也要考慮業務以免更新不了。
ScrollView中內容過多, 根據偏移量設置渲染內容;
頁面要渲染A,B,C,D,E 其中 D, E都在首屏外,可以假如滾動 100偏移,再開始渲染D, E, 這樣做的好處就是減少剛進來時渲染的內存消耗,提升渲染速度;