上QQ阅读APP看书,第一时间看更新
2.4.3 惰性加载
2.2.1节介绍了惰性求值的内容。惰性求值和实际编码中常常使用的惰性加载功能类似,它们的目的都是通过改变代码执行顺序,减少运行不需要执行的代码。
在React的项目里,我们常会用到惰性加载,如代码清单2-11所示。
代码清单2-11 惰性加载和惰性求值
// 惰性加载 // pages/OverviewPage.js // React.lazy形式引入依赖 const OverviewMatrix = React.lazy(() => import('./overview/OverviewMatrix')) // 配合Suspense惰性加载组件 <Suspense fallback={<div>Loading</div>}> <OverviewMatrix /> </Suspense> // 惰性求值中的thunk概念 // redux-thunk的引入使得Redux的Action可以使用函数进行dispath异步操作 // pages/index.js import { createStore, applyMiddleware } from 'redux' import reducer from '../redux/reducer' import thunk from 'redux-thunk' const newStore = createStore( reducer, applyMiddleware(thunk) ); // redux/action.js const changePuzzleSid = (puzzleSid) => dispatch => { const dispatchObj = { type: 'PUZZLESID', json: { puzzleSid }, receivedAt: Date.now(), } return dispatch(dispatchObj); }; export { // 省略其他action changePuzzleSid, };
现在,我们使用一些前端语言特性,完成了部分通用开发和业务需求,比如第1章和第2章示例中的优化软件性能和实现系统全局变量。
如果没有这些语言特性,开发者就需要等待编程语言标准进化后提供更多编译环境能力。这些语言特性还可以衍生出更多编程上的偏好,这些偏好就是我们将在第3章介绍的函数式思维和前端特征。