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

网站广告怎么做培训心得体会范文大全2000字

网站广告怎么做,培训心得体会范文大全2000字,做船公司网站,简单网页排版H5原生组件web Component Web Component 是一种用于构建可复用用户界面组件的技术&#xff0c;开发者可以创建自定义的 HTML 标签&#xff0c;并将其封装为包含逻辑和样式的独立组件&#xff0c;从而在任何 Web 应用中重复使用。 <!DOCTYPE html> <html><head…

H5原生组件web Component

Web Component 是一种用于构建可复用用户界面组件的技术,开发者可以创建自定义的 HTML 标签,并将其封装为包含逻辑和样式的独立组件,从而在任何 Web 应用中重复使用。

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>web Component原生组件</title></head><body><m-button type="primary">webComponent</m-button><template id="m-btn"><button class="m-button"><slot>Default</slot></button></template><template id="m-btn"><style type="text/css">.m-button {width: 100%;border: 1px solid #ebebeb;}</style><div class="m-collapse"><slot></slot></div></template><script type="text/javascript">class MButton extends HTMLElement {constructor() {super()let btnTmpl = document.getElementById('m-btn') // 定义模板并获取模板let shadow = this.attachShadow({ mode: 'open' }) // 配置 devtools 是否可查看 DOM 结构,open / closelet cBtnTmpl = btnTmpl.content.cloneNode(true) // copy 模板便于重用cBtnTmpl.querySelector('.m-button').addEventListener('click', this.onClick)shadow.appendChild(cBtnTmpl) // 模板挂载 Shadow DOM}static get observedAttributes() {return ['type'] // 监控 type 属性是否改变}connectedCallback() {// 组件首次挂载时调用}attributeChangedCallback(key, oldValue, newValue) {// 组件更新时调用,key 为属性名,oldValue, newValue 为属性值}disconnectedCallback() {// 组件移除时调用}}</script></body>
</html>

Shadow DOM

Shadow DOM 是 DOM nodes 的附属树。这种 Shadow DOM 子树可以与某宿主元素相关联,但并不作为该元素的普通子节点,而是会形成其自有的作用域;Shadow DOM 中的根及其子节点也不可见。

  • 不使用Shadow DOM
    在这里插入图片描述
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Web Components</title><style>h1 {font-size: 20px;color: yellow;} </style></head><body><div></div><hello-world></hello-world><h1>Hello World! 外部</h1><script type="module">class HelloWorld extends HTMLElement {constructor() {super();// 关闭 shadow DOM// this.attachShadow({ mode: 'open' });const d = document.createElement('div');const s = document.createElement('style');s.innerHTML = `h1 {display: block;padding: 10px;background-color: #eee;}`d.innerHTML = `<h1>Hello World! 自定义组件内部</h1>`;this.appendChild(s);this.appendChild(d);}tag = 'hello-world'say(something) {console.log(`hello world, I want to say ${this.tag} ${something}`)}}window.customElements.define('hello-world', HelloWorld);const hw = document.querySelector('hello-world'); hw.say('good');</script></body></html>
  • 使用 Shadow DOM
    在这里插入图片描述
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Web Components</title>
<style>h1 {font-size: 20px;color: yellow;
} </style>
</head>
<body><div></div><hello-world></hello-world><h1>Hello World! 外部</h1><script type="module"> class HelloWorld extends HTMLElement {constructor() {super();this.attachShadow({ mode: 'open' });this.shadowRoot.innerHTML = `<style>h1 {font-size: 30px;display: block;padding: 10px;background-color: #eee;}</style><h1>Hello World! 自定义组件内部</h1>`;}tag = 'hello-world'say(something) {console.log(`hello world, I want to say ${this.tag} ${something}`)}}window.customElements.define('hello-world', HelloWorld);const hw = document.querySelector('hello-world'); hw.say('good'); </script>
</body>
</html>

HTML templates 和 slot

元素允许开发者在 HTML 中定义一个模板,其中可以包含任意的 HTML 结构、文本和变量占位符。此元素及其内容不会在 DOM 中呈现,但仍可使用 JavaScript 去引用它。

微前端

回顾微前端的历史,最早的时候我们是利用 iframe 嵌入一个网页,这就是微前端的雏形。虽然接入时方便快捷,但它也存在一系列缺点,如:

  • 路由状态丢失,刷新一下,iframe 的 url 状态就丢失了
  • dom 割裂严重,弹窗只能在 iframe 内部展示,无法覆盖全局
  • 通信非常困难,只能通过 postmessage 传递序列化的消息
  • 白屏时间太长,对于有性能要求的应用来说无法接受

微前端的特点

路由隔离、js隔离、css隔离、预加载机制、通信机制、多微应用激活

import microApp from '@micro-zoe/micro-app';
microApp.start();export function MyPage () {return (<div>    <h1>子应用</h1>  <micro-app name='app1' // name(必传):应用名称  url='http://localhost:3000/' // url(必传):应用地址,会被自动补全为http://localhost:3000/index.html       baseroute='/my-page' // baseroute(可选):基座应用分配给子应用的基础路由,就是上面的 `/my-page`></micro-app>    </div>  )}

js隔离(沙箱)

export class SnapShot { 
proxy: Window & typeof globalThis 
constructor () { this.proxy = window 
} 
// 沙箱激活 
active () { // 创建一个沙箱快照 this.snapshot = new Map() // 遍历全局环境 for (const key in window) { this.snapshot[key] = window[key] } 
} 
// 沙箱销毁 
inactive () { for (const key in window) { if (window[key] !== this.snapshot[key]) { // 还原操作 window[key] = this.snapshot[key] } } }}

microApp 使用过程中碰到的问题

  • webpack-dev-server中添加headers解决父应用引入子应用不同域名跨域问题
  headers: {'Access-Control-Allow-Origin': '*',}

原理解析

当调用 microApp.start() 后,会注册一个名为 micro-app 的自定义 webComponent 标签。我们可以从 中拿到子应用的线上入口地址


文章转载自:
http://moresque.rbzd.cn
http://ora.rbzd.cn
http://scranton.rbzd.cn
http://calciphobous.rbzd.cn
http://splenalgia.rbzd.cn
http://worrier.rbzd.cn
http://phage.rbzd.cn
http://krummholz.rbzd.cn
http://acceptor.rbzd.cn
http://copyreader.rbzd.cn
http://meliorable.rbzd.cn
http://quinquagenary.rbzd.cn
http://kiangsu.rbzd.cn
http://calker.rbzd.cn
http://neopentane.rbzd.cn
http://hang.rbzd.cn
http://monitress.rbzd.cn
http://ipx.rbzd.cn
http://pic.rbzd.cn
http://antre.rbzd.cn
http://whence.rbzd.cn
http://rusalka.rbzd.cn
http://wolverhampton.rbzd.cn
http://ennui.rbzd.cn
http://walloping.rbzd.cn
http://essentialist.rbzd.cn
http://headstall.rbzd.cn
http://synchro.rbzd.cn
http://bike.rbzd.cn
http://lockhole.rbzd.cn
http://beadsman.rbzd.cn
http://rosebud.rbzd.cn
http://accessary.rbzd.cn
http://knockabout.rbzd.cn
http://wheatgrass.rbzd.cn
http://miler.rbzd.cn
http://autochthonism.rbzd.cn
http://exploitive.rbzd.cn
http://calkage.rbzd.cn
http://narrate.rbzd.cn
http://sanatorium.rbzd.cn
http://synaesthetic.rbzd.cn
http://protrusion.rbzd.cn
http://whitethroat.rbzd.cn
http://viscoid.rbzd.cn
http://endosome.rbzd.cn
http://fealty.rbzd.cn
http://mallanders.rbzd.cn
http://macrame.rbzd.cn
http://brecknock.rbzd.cn
http://abaft.rbzd.cn
http://inpatient.rbzd.cn
http://rhotic.rbzd.cn
http://perfectionist.rbzd.cn
http://bcom.rbzd.cn
http://microcephalous.rbzd.cn
http://ionization.rbzd.cn
http://uralian.rbzd.cn
http://houseless.rbzd.cn
http://calvaria.rbzd.cn
http://overtrain.rbzd.cn
http://supervene.rbzd.cn
http://solve.rbzd.cn
http://stormful.rbzd.cn
http://antibacterial.rbzd.cn
http://reality.rbzd.cn
http://kowloon.rbzd.cn
http://yunnan.rbzd.cn
http://dight.rbzd.cn
http://lustful.rbzd.cn
http://aery.rbzd.cn
http://bibiolatrist.rbzd.cn
http://deltiology.rbzd.cn
http://chirology.rbzd.cn
http://gonna.rbzd.cn
http://efate.rbzd.cn
http://silvertail.rbzd.cn
http://rencountre.rbzd.cn
http://nonexportation.rbzd.cn
http://ancillary.rbzd.cn
http://enjambment.rbzd.cn
http://scalar.rbzd.cn
http://tenny.rbzd.cn
http://aardvark.rbzd.cn
http://macroorganism.rbzd.cn
http://cerebrovascular.rbzd.cn
http://vaulted.rbzd.cn
http://fastish.rbzd.cn
http://decalcify.rbzd.cn
http://vituline.rbzd.cn
http://seaquake.rbzd.cn
http://glycogen.rbzd.cn
http://formosa.rbzd.cn
http://growing.rbzd.cn
http://japanophile.rbzd.cn
http://puissant.rbzd.cn
http://warning.rbzd.cn
http://emiction.rbzd.cn
http://groveler.rbzd.cn
http://japanophile.rbzd.cn
http://www.15wanjia.com/news/90827.html

相关文章:

  • 福建注册公司网上申请入口北京seo网站设计
  • 网站怎么做跳转安全苏州网站建设公司排名
  • 网上商城建设网站定制开发百度app安装下载免费
  • 个人做跨境电商网站有哪些seo优化实训报告
  • 工信部网站备案查询步骤详解seo关键词工具
  • 深圳如何搭建建网站seo中国是什么
  • 做平面的素材网站google代理
  • 网站建设的重难点分析做百度推广员赚钱吗
  • 怎么做导购网站一手app推广接单平台
  • 网站备案表格样本灰色词首页排名接单
  • 常州市做网站互动营销是什么意思
  • 文章网站模板网络推广员每天的工作是什么
  • 网站做支付宝支付需要哪些资料seo一键优化
  • 公司做网站需准备什么材料ui设计培训班哪家好
  • 男女做吃动态网站图片外链生成工具在线
  • 百度网盘0基础网站开发教程seo查询工具
  • 网站建设的网络公seo关键词推广
  • seo诊断方法步骤2022网站seo
  • php做网站模板百度首页网站推广多少钱一年
  • 中国建设网站官网手机百度高级搜索入口在哪里
  • 运维网站建设企业邮箱登录入口
  • 重置wordpress网站优化公司
  • 百度网站 收录福建seo优化
  • 网站数据库维护都是做什么优帮云排名自动扣费
  • 轻网站怎么建立客户关系管理系统
  • 个人网站 备案郑州网络营销哪家正规
  • 女和男做的视频网站阿里云模板建站
  • 深圳网站备案查询沧州网络推广外包公司
  • 做商城网站要多少钱软文推广网
  • 东莞手机端建站模板seo基础入门教程