当前位置: 首页 > news >正文

如何在搜索引擎做网站东莞小程序开发哪家好

如何在搜索引擎做网站,东莞小程序开发哪家好,网站建设和运营的成本是多少钱,国有企业管理培训课程React16是一个实验版本#xff0c;除了测试它的新fiber架构外#xff0c;还添加了大量新功能。其他React.Suspense与React.lazy就是重磅中的重磅。随着前端的APP化#xff0c;不断集成功能#xff0c;页面越来越大#xff0c;bundle size以MB为单位#xff0c;我们需要拆…React16是一个实验版本除了测试它的新fiber架构外还添加了大量新功能。其他React.Suspense与React.lazy就是重磅中的重磅。随着前端的APP化不断集成功能页面越来越大bundle size以MB为单位我们需要拆分代码实现动态化加载非首屏功能。比日历城市选择器评论组件等等。动态加载在javascript模块加载规范中已经有草案并且被webpack, rollup所支持import(../components/Hello).then(Hello {console.log(Hello /); }); 相当于setTimeout模拟异步加载组件new Promise(resolve setTimeout(() resolve({// 来自另一个文件的函数式组件default: function render() {return divHello/div}}),3000) ).then(({ default: Hello }) {console.log(Hello /); }); React16提供了lazy组件实现这个功能 var {lazy, Suspense} React;var OtherComponent lazy((){return new Promise(resolve setTimeout(() resolve({default: function Hello() { //export defaultreturn divHello/div}}),3000))}); 上面只是一个方便大量测试的例子实际需要将 divHello/div 放到一个文件中使用import()语法引进来即 const OtherComponent React.lazy(() import(./OtherComponent)); OtherComponent.js的源码export default function Hello(){return divHello/div } 接着我们实现将动态功能加进组件树就是所谓的条件渲染。这个功能由React.Suspense提供。在框架不提供这功能的情况下我们需要找一个父组件将这组件动态挂上去class MyComponent extends Component {constructor() {super();this.state {};// 动态加载import(./OtherComponent).then(({ default: OtherComponent }) {this.setState({ OtherComponent });});}render() {const { OtherComponent } this.state;return (div{/* 条件渲染 */}{ OtherComponent OtherComponent / }/div);} } 但光是这样还是不行的因为单纯的动态加载会引起页面抖动我们需要loading将这个突兀的显示给缓解一下。于是这render需要改成render() {const { OtherComponent } this.state;return (div{OtherComponent ? OtherComponent /: Loading /}/div);} 如果有了Suspense组件我们就简单了不需要入侵已有的组件并且有地方挂这个loading。Suspense fallback{Loading /}OtherComponent //Suspense 需要注意的是lazy组件外面必须包着一个Suspense组件。从框架层面对用户体验提出了强制要求。下面是一个完整的例子!DOCTYPE html htmlheadmeta charsetutf-8meta nameviewport contentwidthdevice-width !--script srchttps://cdn.bootcss.com/react/16.7.0-alpha.2/umd/react.development.js/scriptscript srchttps://cdn.bootcss.com/react-dom/16.7.0-alpha.2/umd/react-dom.development.js/script --script src./dist/React.js/script script typetext/javascript src./lib/babel.js/script/headbodydiv idroot classroot/divscript typetext/babelvar { lazy, Suspense } React; var OtherComponent lazy(() {return new Promise(resolve setTimeout(() resolve({default: function render(props) {//export defaultreturn divHello,{props.name}/div;}}),3000)); }); var valueRef React.createRef() class App extends React.Component {constructor(props){super(props)this.state {name: ruby}}updateName(){var name valueRef.current.value;this.setState({name})}render() {return (divpinput ref{valueRef} onChange{this.updateName.bind(this)} value{this.state.name} /{new Date-0}/pSuspense fallback{divloading.../div}OtherComponent name{this.state.name} //Suspense/div);} }ReactDOM.render(App /, document.getElementById(root));/script/html最后说一下实现React官方是通过lazy组件主动抛错给上面Suspense组件接住的hack方式实现的https://github.com/facebook/react/blob/master/packages/react-reconciler/src/ReactFiberWorkLoop.js#L907-L1057lazy组件被读取时https://github.com/facebook/react/blob/master/packages/react-reconciler/src/ReactFiberLazyComponent.jsReact官方投入了近500行代码实现的再看一下anujs如何实现的。anujs的Suspense是异常简单就是一个虚拟组件甩手掌柜总是渲染它的孩子。它只负责挂loading。function Suspense(props){return props.children }export {Suspense } lazy组件就是将用户函数再包一层封到一个LazyComponent组件中它会根据用户的promise决定是返回上层的suspense组件的fallback属性还是延期加载回来的组件。import { miniCreateClass, isFn, get } from react-core/util; import { Component } from react-core/Component; import { createElement } from react-core/createElement; import { Suspense } from ./Suspense;var LazyComponent miniCreateClass(function LazyComponent(props, context) {this.props props;this.context context;this.state {component: null,resolved: false}var promise props.render();if(!promise || !isFn(promise.then)){throw lazy必须返回一个thenable对象}promise.then( (value) this.setState({component: value.default,resolved: true}))}, Component, {fallback(){//返回上层Suspense组件的fallback属性var parent Object(get(this)).returnwhile(parent){if( parent.type Suspense){return parent.props.fallback}parent parent.return}throw lazy组件必须包一个Suspense组件},render(){return this.state.resolved ? createElement(this.state.component) : this.fallback()} }); function lazy(fn) {return function(){return createElement(LazyComponent, {render: fn})} } export {lazy } 最后欢迎大家使用anujs 。一个迷你React框架支持react16 的所有新特性可以用于小程序中。RubyLouvre/anu​github.comnpm i anujs
http://www.zqtcl.cn/news/392337/

相关文章:

  • 多城市网站设计阿里云网站访问不了怎么办
  • 南岗哈尔滨网站建设开发小程序多少费用
  • 百度网站入口特效词品牌企业网站建设公司
  • wordpress找回管理员密码网站关键词排名优化工具
  • 望城建设局网站网站建设与维护可行性报告
  • 免费php网站模板下载手机端网站如何优化
  • 自己做的网站 打开了没有图片注册工程公司名称大全
  • 做网站的团队业绩怎么写WordPress 去掉副标题
  • 学校网页网站模板wordpress更换域名还是之前链接
  • 市面上有什么搭建网站工作室石家庄做网站和宣传的
  • 视频图站主题 wordpress快速收录提交入口
  • 外贸视频网站投资理财网站开发
  • 专业建设网站多少钱铜川网站seo
  • 海外网站seo优化wordpress的代码逻辑
  • 怎样帮别人做网站哪有网站给光头强做面
  • 聊城营销网站建设价格网站设计论文框架
  • 成都哪家网站建设做得好介绍自己的家乡遵义网站建设
  • 阳春新农村建设网站欣赏网站
  • 永久免费企业网站建设杭州个人做网站
  • 博罗中山网站建设做网站的软件 知乎
  • 广州网站开发广州亦客网络解答wordpress换空间要改
  • 丽水企业网站开发企业erp系统是什么软件
  • 好看的网站设计个人发布信息的免费平台
  • 电商网站业务流程linux上传中文wordpress
  • 广州网站定制商家外贸seo网站推广
  • 许昌大成建设集团网站wordpress自动博客插件
  • wordpress网站地图插件中国来料加工网
  • 黑龙江做网站的公司上海企业网站建设公
  • 做公众号时图片的网站安徽建设工程造价信息网站
  • 网站开发的在淘宝上是什么类目深圳做网站的大公司