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

网站建设 事迹上海网站建设 百家号

网站建设 事迹,上海网站建设 百家号,乐陵seo,南阳网站建设icp备您可能实际上并不需要所有这些#xff1b;通常有一个更简单的方法。如果有意使用#xff0c;此处显示的技术可能仍然对您的工具集有用。 为了保持一致性#xff0c;我们希望我们的自动加载器也成为一个自定义元素——这也意味着我们可以通过 HTML 轻松配置它。但首先#…您可能实际上并不需要所有这些通常有一个更简单的方法。如果有意使用此处显示的技术可能仍然对您的工具集有用。 为了保持一致性我们希望我们的自动加载器也成为一个自定义元素——这也意味着我们可以通过 HTML 轻松配置它。但首先让我们逐步确定那些未解决的自定义元素 span stylebackground-color:#1b1b1bspan stylecolor:#f5d67bcode classlanguage-javascriptspan stylecolor:#83ba52class/span AutoLoader span stylecolor:#83ba52extends/span HTMLElement span stylecolor:#72e0d1{/spanconnectedCallbackspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52let/span scope span stylecolor:#aa7ee1/span span stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spanparentNodespan stylecolor:#72e0d1;/spanspan stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spandiscoverspan stylecolor:#72e0d1(/spanscopespan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/span span stylecolor:#72e0d1}/span customElementsspan stylecolor:#72e0d1./spandefinespan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52ce-autoloader/spanspan stylecolor:#72e0d1,/span AutoLoaderspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/span/code/span/span 假设我们已经预先加载了这个模块使用async是理想的我们可以将一个ce-autoloader元素放入body我们的文档中。这将立即启动 的所有子元素的发现过程body这些子元素现在构成了我们的根元素。ce-autoloader我们可以通过添加到相应的容器元素来将发现限制在文档的子树中——实际上我们甚至可以为不同的子树设置多个实例。 当然我们仍然必须实现该discover方法作为上面类的一部分AutoLoader span stylebackground-color:#1b1b1bspan stylecolor:#f5d67bcode classlanguage-javascriptdiscoverspan stylecolor:#72e0d1(/spanscopespan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52let/span candidates span stylecolor:#aa7ee1/span span stylecolor:#72e0d1[/spanscopespan stylecolor:#72e0d1,/span span stylecolor:#aa7ee1.../spanscopespan stylecolor:#72e0d1./spanquerySelectorAllspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52*/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1]/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#83ba52for/spanspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52let/span el span stylecolor:#83ba52of/span candidatesspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52let/span tag span stylecolor:#aa7ee1/span elspan stylecolor:#72e0d1./spanlocalNamespan stylecolor:#72e0d1;/spanspan stylecolor:#83ba52if/spanspan stylecolor:#72e0d1(/spantagspan stylecolor:#72e0d1./spanincludesspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52-/spanspan stylecolor:#72e0d1)/span span stylecolor:#aa7ee1/span span stylecolor:#aa7ee1!/spancustomElementsspan stylecolor:#72e0d1./spanspan stylecolor:#83ba52get/spanspan stylecolor:#72e0d1(/spantagspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spanloadspan stylecolor:#72e0d1(/spantagspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1}/span span stylecolor:#72e0d1}/span/code/span/span 在这里我们检查我们的根元素以及每个后代 ( *)。如果它是一个自定义元素——如带连字符的标签所示——但尚未升级我们将尝试加载相应的定义。以这种方式查询 DOM 可能代价高昂所以我们应该小心一点。我们可以通过推迟这项工作来减轻主线程上的负载 span stylebackground-color:#1b1b1bspan stylecolor:#f5d67bcode classlanguage-javascriptconnectedCallbackspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52let/span scope span stylecolor:#aa7ee1/span span stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spanparentNodespan stylecolor:#72e0d1;/spanrequestIdleCallbackspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1)/span span stylecolor:#aa7ee1/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spandiscoverspan stylecolor:#72e0d1(/spanscopespan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/span span stylecolor:#72e0d1}/span/code/span/span requestIdleCallback还没有得到普遍支持但我们可以使用requestAnimationFrame作为后备 span stylebackground-color:#1b1b1bspan stylecolor:#f5d67bcode classlanguage-javascriptspan stylecolor:#83ba52let/span defer span stylecolor:#aa7ee1/span windowspan stylecolor:#72e0d1./spanrequestIdleCallback span stylecolor:#aa7ee1||/span requestAnimationFramespan stylecolor:#72e0d1;/spanspan stylecolor:#83ba52class/span AutoLoader span stylecolor:#83ba52extends/span HTMLElement span stylecolor:#72e0d1{/spanconnectedCallbackspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52let/span scope span stylecolor:#aa7ee1/span span stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spanparentNodespan stylecolor:#72e0d1;/spandeferspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1)/span span stylecolor:#aa7ee1/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spandiscoverspan stylecolor:#72e0d1(/spanscopespan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#5e7671em// .../em/span span stylecolor:#72e0d1}/span/code/span/span 现在我们可以继续实现缺少的load方法来动态注入script元素 span stylebackground-color:#1b1b1bspan stylecolor:#f5d67bcode classlanguage-javascriptloadspan stylecolor:#72e0d1(/spantagspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52let/span el span stylecolor:#aa7ee1/span documentspan stylecolor:#72e0d1./spancreateElementspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52script/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#83ba52let/span res span stylecolor:#aa7ee1/span span stylecolor:#83ba52new/span Promisespan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1(/spanresolvespan stylecolor:#72e0d1,/span rejectspan stylecolor:#72e0d1)/span span stylecolor:#aa7ee1/span span stylecolor:#72e0d1{/spanelspan stylecolor:#72e0d1./spanaddEventListenerspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52load/spanspan stylecolor:#72e0d1,/span ev span stylecolor:#aa7ee1/span span stylecolor:#72e0d1{/spanresolvespan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52null/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanelspan stylecolor:#72e0d1./spanaddEventListenerspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52error/spanspan stylecolor:#72e0d1,/span ev span stylecolor:#aa7ee1/span span stylecolor:#72e0d1{/spanrejectspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52new/span Errorspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52failed to locate custom-element definition/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanelspan stylecolor:#72e0d1./spansrc span stylecolor:#aa7ee1/span span stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spanelementURLspan stylecolor:#72e0d1(/spantagspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spandocumentspan stylecolor:#72e0d1./spanheadspan stylecolor:#72e0d1./spanappendChildspan stylecolor:#72e0d1(/spanelspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#83ba52return/span resspan stylecolor:#72e0d1;/span span stylecolor:#72e0d1}/spanelementURLspan stylecolor:#72e0d1(/spantagspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52return/span span stylecolor:#83ba52/spanspan stylecolor:#72e0d1${/spanspan stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spanrootDirspan stylecolor:#72e0d1}/spanspan stylecolor:#83ba52//spanspan stylecolor:#72e0d1${/spantagspan stylecolor:#72e0d1}/spanspan stylecolor:#83ba52.js/spanspan stylecolor:#72e0d1;/span span stylecolor:#72e0d1}/span/code/span/span 请注意elementURL. 该src属性的 URL 假设有一个目录所有自定义元素定义都位于该目录中例如my-widget→ /components/my-widget.js。我们可以提出更详尽的策略但这足以满足我们的目的。将此 URL 委托给一个单独的方法允许在需要时进行特定于项目的子类化 span stylebackground-color:#1b1b1bspan stylecolor:#f5d67bcode classlanguage-javascriptspan stylecolor:#83ba52class/span FancyLoader span stylecolor:#83ba52extends/span AutoLoader span stylecolor:#72e0d1{/spanelementURLspan stylecolor:#72e0d1(/spantagspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#5e7671em// fancy logic/em/spanspan stylecolor:#72e0d1}/span span stylecolor:#72e0d1}/span/code/span/span 无论哪种方式请注意我们依赖于this.rootDir. 这就是前面提到的可配置性的用武之地。让我们添加一个相应的 getter span stylebackground-color:#1b1b1bspan stylecolor:#f5d67bcode classlanguage-javascriptspan stylecolor:#83ba52get/span rootDirspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52let/span uri span stylecolor:#aa7ee1/span span stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spangetAttributespan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52root-dir/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#83ba52if/spanspan stylecolor:#72e0d1(/spanspan stylecolor:#aa7ee1!/spanurispan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52throw/span span stylecolor:#83ba52new/span Errorspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52cannot auto-load custom elements: missing root-dir/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#83ba52if/spanspan stylecolor:#72e0d1(/spanurispan stylecolor:#72e0d1./spanendsWithspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52//spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/span span stylecolor:#5e7671em// remove trailing slash/em/spanspan stylecolor:#83ba52return/span urispan stylecolor:#72e0d1./spansubstringspan stylecolor:#72e0d1(/spanspan stylecolor:#fc94630/spanspan stylecolor:#72e0d1,/span urispan stylecolor:#72e0d1./spanlength span stylecolor:#aa7ee1-/span span stylecolor:#fc94631/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#83ba52return/span urispan stylecolor:#72e0d1;/span span stylecolor:#72e0d1}/span/code/span/span 您现在可能正在考虑observedAttributes但这并没有真正让事情变得更容易。另外root-dir在运行时进行更新似乎是我们永远不需要的。 现在我们可以——而且必须——配置我们的元素目录ce-autoloader root-dir/components. 有了这个我们的自动加载器就可以完成它的工作了。除了它只工作一次对于初始化自动加载器时已经存在的元素。我们可能还想考虑动态添加的元素。这就是MutationObserver发挥作用的地方 span stylebackground-color:#1b1b1bspan stylecolor:#f5d67bcode classlanguage-javascriptconnectedCallbackspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52let/span scope span stylecolor:#aa7ee1/span span stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spanparentNodespan stylecolor:#72e0d1;/spandeferspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1)/span span stylecolor:#aa7ee1/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spandiscoverspan stylecolor:#72e0d1(/spanscopespan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#83ba52let/span observer span stylecolor:#aa7ee1/span span stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./span_observer span stylecolor:#aa7ee1/span span stylecolor:#83ba52new/span MutationObserverspan stylecolor:#72e0d1(/spanmutations span stylecolor:#aa7ee1/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52for/spanspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52let/span span stylecolor:#72e0d1{/span addedNodes span stylecolor:#72e0d1}/span span stylecolor:#83ba52of/span mutationsspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52for/spanspan stylecolor:#72e0d1(/spanspan stylecolor:#83ba52let/span node span stylecolor:#83ba52of/span addedNodesspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spandeferspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1)/span span stylecolor:#aa7ee1/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./spandiscoverspan stylecolor:#72e0d1(/spannodespan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/spanobserverspan stylecolor:#72e0d1./spanobservespan stylecolor:#72e0d1(/spanscopespan stylecolor:#72e0d1,/span span stylecolor:#72e0d1{/span subtreespan stylecolor:#72e0d1:/span span stylecolor:#fc9463true/spanspan stylecolor:#72e0d1,/span childListspan stylecolor:#72e0d1:/span span stylecolor:#fc9463true/span span stylecolor:#72e0d1}/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/span span stylecolor:#72e0d1}/spandisconnectedCallbackspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1)/span span stylecolor:#72e0d1{/spanspan stylecolor:#83ba52this/spanspan stylecolor:#72e0d1./span_observerspan stylecolor:#72e0d1./spandisconnectspan stylecolor:#72e0d1(/spanspan stylecolor:#72e0d1)/spanspan stylecolor:#72e0d1;/span span stylecolor:#72e0d1}/span/code/span/span 这样每当 DOM 中出现新元素时浏览器就会通知我们——或者更确切地说我们各自的子树——然后我们使用它来重新启动发现过程。你可能会争辩说我们在这里重新发明了自定义元素你是对的。 我们的自动装载机现在功能齐全。未来的增强可能会研究潜在的竞争条件并研究优化。但对于大多数情况来说这可能已经足够好了。
http://www.hkea.cn/news/14406526/

相关文章:

  • 网站建设丨找王科杰信誉中国建筑集团有限公司校园招聘
  • 北京网站建设公司司可以直接进入网站的正能量没封的
  • 玩具 东莞网站建设 技术支持网页设计项目教程
  • 套模板做网站教程无锡软件网站开发公司
  • 网站系统开发团队简介静安网站建设关键词优化seo
  • 汕头网站建设搭建南昌网站建设公司效果
  • 大学生做推送的网站带会员注册企业网站源码
  • 怎样把网站上传到空间外贸商城网站资质
  • 重庆涪陵网站设计公司推荐郑州制作网页的公司
  • 网站首页怎么做营业执照链接格子铺网站建设方案
  • 用html5做网站百度经验江苏省内网站建设
  • 天津网站推广网站功能需求怎么写
  • 某网站突然不能浏览了网页图片怎么下载
  • 网站多久会被百度收录开发小程序和app开发哪个贵
  • 做网站还赚钱么wordpress获取站点链接
  • 东城精锐传媒专注于各类网站建设刀模 东莞网站建设
  • 网站站点规划实例黄山5个最佳景点
  • 做搜狗手机网站长尾网站域名区别
  • 个人网站可以做资讯吗亿创电力建设集团有限公司网站
  • 龙岩市住房和城乡建设局网站腾讯云做的网站会被拦截么
  • 建设国外网站三大门户网站是什么
  • 电子商务网站建设pdf毕业设计网站设计
  • 太平洋在线企业网站管理系统怎么做外贸网站seo
  • 珠海市网站建设的公司沈阳祥云医院看男科怎么样
  • 烟台企业做网站企业wap网站源码
  • 乐清网站建设网站建设江苏泗阳今天新增病例多少
  • 深圳展览设计网站建设vs网站开发表格大小设置
  • 移动网站优化排名建设银行个人手机银行下载
  • 昆山品牌网站网站建设开发软件有哪些
  • 合肥网站制作推广做外贸需要到外汇管理网站