{"id":9090,"date":"2021-06-02T11:09:45","date_gmt":"2021-06-02T11:09:45","guid":{"rendered":"https:\/\/www.soltel.es\/?p=4270"},"modified":"2021-06-02T11:09:45","modified_gmt":"2021-06-02T11:09:45","slug":"webcomponents-para-dummies-3","status":"publish","type":"post","link":"https:\/\/www.soltel.es\/en\/webcomponents-para-dummies-3\/","title":{"rendered":"Web components for dummies"},"content":{"rendered":"<p dir=\"ltr\">Desde el inicio de la programaci\u00f3n los programadores hemos intentado reutilizar la mayor cantidad de c\u00f3digo posible, no por ser flojos, claro est\u00e1, sino por eficiencia pura y dura. Ganar tiempo es ganar eficiencia y dinero y eso lo sabemos todos\u2026 pero, \u00bfqu\u00e9 tiene que ver todo esto con los webcomponents?<\/p>\n<p dir=\"ltr\">Pues muy f\u00e1cil, te lo resumo con un claro ejemplo. Si eres programador de front o est\u00e1s un poco enterado de las nuevas tecnolog\u00edas que se usan para desarrollar la parte visual de la aplicaci\u00f3n, sabr\u00e1s que existen varias formas de realizar tal desempe\u00f1o. Desde usar simplemente HTML + CSS + JS para\u00a0 crear por ejemplo un men\u00fa a usar alg\u00fan framework como puede ser Angular, React o VueJs. Como ves existen diferentes maneras de solucionar el problema, aunque claro, si tienes una aplicaci\u00f3n en VueJs y otra en Angular, aunque el men\u00fa sea igual visual y funcionalmente tendr\u00edas que programar dos veces, \u00bfcierto? Pues con nuestros queridos Webcomponents, \u00a1solo tendr\u00e1s que hacerlo una vez! S\u00ed, parece incre\u00edble pero es as\u00ed, como hemos mencionado anteriormente, desde siempre hemos querido reutilizar el mismo c\u00f3digo lo m\u00e1ximo posible, por lo tanto ahora estamos evolucionando a una tendencia en la que si un programador desarrolla el componente men\u00fa en Angular con unas ciertas peculiaridades que veremos m\u00e1s adelante, puede importar ese men\u00fa tanto a VueJS, React o incluso un HTML en limpio.<\/p>\n<p dir=\"ltr\">Si no me creeis acompa\u00f1adme en esta peque\u00f1a introducci\u00f3n en la que os mostrar\u00e9 c\u00f3mo un men\u00fa programado en angular, podemos usarlo luego en un HTML \u201climpio\u201d.<\/p>\n<p>Para empezar vamos a crear un proyecto Angular que se componga de un componente men\u00fa.<\/p>\n<p dir=\"ltr\">Primero creamos el proyecto:<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"CToWUd\" src=\"https:\/\/lh4.googleusercontent.com\/pu8HO-d68EjMIfqW0NikzAB0ixn2-8Cs7eKbTUrS2inktlIoeWKWx0lBh287ddHNN_VIuiR_IaGolE5w8OYyXryy28Vcuop-4H1yGR34pnXlhhICMeRZsAkCA8LIvV9ypyq5FPRD\" width=\"292\" height=\"42\" \/><\/p>\n<p dir=\"ltr\">ng new post-menu &#8211;prefix ng-post-menu<\/p>\n<p dir=\"ltr\">Ahora con el proyecto creado agregamos la dependencia de Angular de elements la cual nos facilita la creaci\u00f3n de este webcomponent agregando el polyfill document-register-element.js<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"CToWUd\" src=\"https:\/\/lh6.googleusercontent.com\/L5ZJL-si3vToKVBhIEPL8txhRXHncGy1cta-wtUkQ6IavGS1-RVCu9NFQV43Jrh0VVbVancD42fuMfMCUOPRug06f9FpE0aHPpjBvFhhvy7Ejq8dlLwGS6_kAWA8x3C7DW0nCilb\" width=\"195\" height=\"27\" \/><\/p>\n<p dir=\"ltr\">ng add @angular\/elements<\/p>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\">And we're going to create our menu component with some instructions:<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"CToWUd\" src=\"https:\/\/lh5.googleusercontent.com\/15bt6KZ--pf7M-MGiFOaxZ0bgA42JMIooWR_EGhbiJsItH42OYsnYLpFO_WWT9BKxYol-PTnW7L0YjziTsmfbDH1BXGG_RQUAUi8W2sDpca87gz-T1mbHTjCz32QqmdDJ3-lv0T8\" width=\"241\" height=\"25\" \/><\/p>\n<p dir=\"ltr\">ng generate component post-menu<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"CToWUd a6T\" tabindex=\"0\" src=\"https:\/\/lh5.googleusercontent.com\/eF9BYQFwjGikAB8AezXgAsGxQqhNRDQPKAlFSFWNho0f_ArymFSlkGVbZHJCqu6rNkZINXsozEVmILUAhfYrMAK2DaiISOqbBE0FhsB3nGnIC_-QnorSff7_IjjsR5hLTU6I0gl7\" width=\"602\" height=\"359\" \/><\/p>\n<p dir=\"ltr\">We have added encapsulation to our component and we will tell it to be Emulated. Angular by default does not use Shadow DOM to encapsulate its components, in order to facilitate compatibility between multiple browsers that do not yet support this feature natively, but we can specify it.<\/p>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\">We're going to create a simple menu in this component using Bootstrap. Since the purpose of this post isn't to teach you how to create the menu or use Bootstrap, we'll skip some steps.<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"CToWUd\" src=\"https:\/\/lh5.googleusercontent.com\/0rupUyWfT7m2uOQFWDClSQFalR7c2xczWl1IKyMUdx9rqWr3eYCCwEy8lcqpGtKUmGjWLTeo0AwDlURPPYM2iTtTQ-dyuOqdgrmNPblsJCD_5SblZUE8ZSMZhSy_yPc86m0q6YVX\" width=\"602\" height=\"31\" \/><\/p>\n<p dir=\"ltr\">Now that our menu component is working, we need to tweak our app module so that Angular compiles our application as a web component.<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"CToWUd a6T\" tabindex=\"0\" src=\"https:\/\/lh3.googleusercontent.com\/MU25J-qfl--HzFwUSa3gYbrXG_77v24MyUOgeuasx18iXU45p88r0_nmU8fjlX8jxA5gbw2mS5N2Ch2yGSlZuTfUUNKn_zIBOjQyr7pEjQ3XA2CpOviPHqInc-z0mxb0jXgmfidJ\" width=\"602\" height=\"553\" \/><\/p>\n<p dir=\"ltr\">Adding the following code:<\/p>\n<p dir=\"ltr\">\u00a0constructor(<\/p>\n<p dir=\"ltr\">\u00a0\u00a0\u00a0\u00a0private injector: Injector<\/p>\n<p dir=\"ltr\">\u00a0\u00a0) {<\/p>\n<p dir=\"ltr\">\u00a0\u00a0\u00a0\u00a0const imagenEspacio = createCustomElement(PostMenuCo<wbr \/>mponent, { injector });<\/p>\n<p dir=\"ltr\">\u00a0\u00a0\u00a0\u00a0customElements.define(&#8216;ng-<wbr \/>post-menu-post-menu&#8217;, imagenEspacio);<\/p>\n<p dir=\"ltr\">\u00a0\u00a0}<\/p>\n<p dir=\"ltr\">\u00a0\u00a0ngDoBootstrap() {}<\/p>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\">All that remains is to compile the project:<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"CToWUd\" src=\"https:\/\/lh3.googleusercontent.com\/dWLgP-6Ia-icRnsCKFQAMnRMptwab1vUyaO0v3tf-FDO-wRjinbLes0uRbDXb_1ZVYZjfVobs4SumPs1fwJqxPhbAjBYrrKfy_355s_H650xpfMYJRLCyeQpy6DDkRjIHNEwprtT\" width=\"128\" height=\"34\" \/><\/p>\n<p dir=\"ltr\">ng build &#8211;prod<\/p>\n<p dir=\"ltr\">This creates the dist\/post-menu folder. The following .js files will appear inside it.<\/p>\n<ul>\n<li dir=\"ltr\">\n<p dir=\"ltr\">main<\/p>\n<\/li>\n<li dir=\"ltr\">\n<p dir=\"ltr\">polyfills<\/p>\n<\/li>\n<li dir=\"ltr\">\n<p dir=\"ltr\">runtime<\/p>\n<\/li>\n<li dir=\"ltr\">\n<p dir=\"ltr\">scripts<\/p>\n<\/li>\n<\/ul>\n<p dir=\"ltr\">Our goal is firstly to put all these js files together into one that we will call, for example, post-menu.js.<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"CToWUd\" src=\"https:\/\/lh4.googleusercontent.com\/WkOgvLsXRe5itefw38_jE5bemo-a1-dieouhZRfgaREhiDoRPyaG8kh_1zGTrfmvxLT_Vt3-jp5yfaPlfz40qzh4SBSer_SYQ15atwnA2mOQW1nfiSTtCKUMnEJKRuSFo4NvinEl\" width=\"169\" height=\"53\" \/><\/p>\n<p dir=\"ltr\">With this, we have almost everything we need. The project may also require styles and images that will exist in the dis\/post-menu folder; these would also need to be imported into the new project where we want to insert our web component.<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"CToWUd a6T\" tabindex=\"0\" src=\"https:\/\/lh5.googleusercontent.com\/H7yProXy3IaKGQH7ovSi9A9t6tgiaDHK8LMePRkLzzENavoWpeDMHsSW-NMxfuGfF0I7HRacFx9Icj51iGROQCKI2aoTQUpPkQkGnZfs0sU3_XsDvRblCj0VnNtwkwUELrd2Xa-h\" width=\"602\" height=\"368\" \/><\/p>\n<p dir=\"ltr\">Finally, we'll create an empty HTML file and import our menu, resulting in the following:<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"CToWUd a6T\" tabindex=\"0\" src=\"https:\/\/lh5.googleusercontent.com\/AtoEtFzDemMMWpIxdftDQ6_RyPSOS0rxI7IGUW1YSmQ6RelMCImAs9tPNt96vAMhIZyETK340O-clC8ZGAX2J5F2h8gx8qIKRZ1JeiwCtyIM1l4T5Jnn4G5nYieSzVQ-_MJGw45N\" width=\"602\" height=\"348\" \/><\/p>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\">Finally displaying our menu on a \"blank\" HTML page<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"CToWUd a6T\" tabindex=\"0\" src=\"https:\/\/lh6.googleusercontent.com\/s1sFRjHFRStbyRgxheTmEe8Gnu0vpURPycdYZrrhxfnbddwydoCdfDsUgGkUSzBihJqE8QRQ8WewUv6XDpQ09YtF6mC9hyOONb2C2h1JmrVFQBttqvGlydjHfbXNjFmQpmIUdTwf\" width=\"602\" height=\"123\" \/><\/p>\n<p dir=\"ltr\">This concludes our brief introduction to web components. Will they be the future? Will this type of technology become the norm, allowing us to abstract away from frameworks? That remains to be seen. While it may seem simple and appealing, it's still in its early stages and will need to evolve. However, it's already being used, and it's up to you to learn and continue progressing.<\/p>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\">At SOLTEL, we have an innovative approach to technology because we are passionate about it. Our extensive experience working with diverse technologies over many years helps us approach projects with a broad perspective and become true technology partners for our clients.<\/p>\n<p dir=\"ltr\">References:<\/p>\n<ul>\n<li dir=\"ltr\">\n<p dir=\"ltr\">Angular:<\/p>\n<ul>\n<li dir=\"ltr\">\n<p dir=\"ltr\"><a href=\"https:\/\/angular.io\/\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/angular.io\/&amp;source=gmail&amp;ust=1622718016967000&amp;usg=AFQjCNFZ4XzT3n696H9yfLHYQiiYvC9kAw\">https:\/\/angular.io\/<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li dir=\"ltr\">\n<p dir=\"ltr\">VueJs:<\/p>\n<ul>\n<li dir=\"ltr\">\n<p dir=\"ltr\"><a href=\"https:\/\/vuejs.org\/\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/vuejs.org\/&amp;source=gmail&amp;ust=1622718016967000&amp;usg=AFQjCNF4k3si4v3VAByn2mW2tmT7oQcbwA\">https:\/\/vuejs.org\/<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li dir=\"ltr\">\n<p dir=\"ltr\">ReactJs:<\/p>\n<ul>\n<li dir=\"ltr\">\n<p dir=\"ltr\"><a href=\"https:\/\/es.reactjs.org\/\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/es.reactjs.org\/&amp;source=gmail&amp;ust=1622718016967000&amp;usg=AFQjCNERhJ_ZxhuTUc5deDtt6lUIWZHNVg\">https:\/\/es.reactjs.org\/<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li dir=\"ltr\">\n<p dir=\"ltr\">NPM:<\/p>\n<ul>\n<li dir=\"ltr\">\n<p dir=\"ltr\"><a href=\"https:\/\/www.npmjs.com\/\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/www.npmjs.com\/&amp;source=gmail&amp;ust=1622718016967000&amp;usg=AFQjCNGfgXFfceAsBHT6bBcFya2z5SbaRg\">https:\/\/www.npmjs.com\/<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li dir=\"ltr\">\n<p dir=\"ltr\">MDBootstrap menu:<\/p>\n<ul>\n<li dir=\"ltr\">\n<p dir=\"ltr\"><a href=\"https:\/\/mdbootstrap.com\/docs\/angular\/navigation\/navbar\/\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/mdbootstrap.com\/docs\/angular\/navigation\/navbar\/&amp;source=gmail&amp;ust=1622718016967000&amp;usg=AFQjCNGrd8mPhUcDeZsYplxuMT1Fv8PFnQ\">https:\/\/mdbootstrap.com\/docs\/<wbr \/>angular\/navigation\/navbar\/<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li dir=\"ltr\">\n<p dir=\"ltr\">Web components tutorial:<\/p>\n<ul>\n<li dir=\"ltr\">\n<p dir=\"ltr\"><a href=\"https:\/\/medium.com\/angular-chile\/web-components-con-angular-elements-9bc6efd1265f\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/medium.com\/angular-chile\/web-components-con-angular-elements-9bc6efd1265f&amp;source=gmail&amp;ust=1622718016967000&amp;usg=AFQjCNG6ngyg-SP9zdQrpzAjN7RVwtMvgQ\">https:\/\/medium.com\/angular-<wbr \/>chile\/web-components-con-<wbr \/>angular-elements-9bc6efd1265f<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Desde el inicio de la programaci\u00f3n los programadores hemos intentado reutilizar la mayor cantidad de c\u00f3digo posible, no por ser flojos, claro est\u00e1, sino por eficiencia pura y dura. Ganar tiempo es ganar eficiencia y dinero y eso lo sabemos todos\u2026 pero, \u00bfqu\u00e9 tiene que ver todo esto con los webcomponents? Pues muy f\u00e1cil, te&#8230;<\/p>","protected":false},"author":8,"featured_media":4272,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[140,161],"tags":[],"class_list":["post-9090","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollo-de-software","category-programacion"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Webcomponents para dummies - Soltel Group<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.soltel.es\/en\/webcomponents-para-dummies-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Webcomponents para dummies - Soltel Group\" \/>\n<meta property=\"og:description\" content=\"Desde el inicio de la programaci\u00f3n los programadores hemos intentado reutilizar la mayor cantidad de c\u00f3digo posible, no por ser flojos, claro est\u00e1, sino por eficiencia pura y dura. Ganar tiempo es ganar eficiencia y dinero y eso lo sabemos todos\u2026 pero, \u00bfqu\u00e9 tiene que ver todo esto con los webcomponents? Pues muy f\u00e1cil, te...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.soltel.es\/en\/webcomponents-para-dummies-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Soltel Group\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pages\/Soltel-IT-Solutions\/158795267511286\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-02T11:09:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.soltel.es\/wp-content\/uploads\/2021\/06\/photo-1518773553398-650c184e0bb3.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1950\" \/>\n\t<meta property=\"og:image:height\" content=\"1300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Comunicacion-Soltel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@soltel_it\" \/>\n<meta name=\"twitter:site\" content=\"@soltel_it\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Comunicacion-Soltel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/\"},\"author\":{\"name\":\"Comunicacion-Soltel\",\"@id\":\"https:\\\/\\\/www.soltel.es\\\/#\\\/schema\\\/person\\\/23bfee8c77d68affbdefb2efd436f329\"},\"headline\":\"Webcomponents para dummies\",\"datePublished\":\"2021-06-02T11:09:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/\"},\"wordCount\":752,\"publisher\":{\"@id\":\"https:\\\/\\\/www.soltel.es\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.soltel.es\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/photo-1518773553398-650c184e0bb3.jpg\",\"articleSection\":[\"Desarrollo de software\",\"Programaci\u00f3n\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/\",\"url\":\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/\",\"name\":\"Webcomponents para dummies - Soltel Group\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.soltel.es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.soltel.es\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/photo-1518773553398-650c184e0bb3.jpg\",\"datePublished\":\"2021-06-02T11:09:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.soltel.es\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/photo-1518773553398-650c184e0bb3.jpg\",\"contentUrl\":\"https:\\\/\\\/www.soltel.es\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/photo-1518773553398-650c184e0bb3.jpg\",\"width\":1950,\"height\":1300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.soltel.es\\\/webcomponents-para-dummies-3\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.soltel.es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webcomponents para dummies\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.soltel.es\\\/#website\",\"url\":\"https:\\\/\\\/www.soltel.es\\\/\",\"name\":\"Soltel Group\",\"description\":\"Soltel IT Solutions, empresa especializada en servicios IT\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.soltel.es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.soltel.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.soltel.es\\\/#organization\",\"name\":\"Soltel Group\",\"url\":\"https:\\\/\\\/www.soltel.es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.soltel.es\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.soltel.es\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/logotipo-soltel.png\",\"contentUrl\":\"https:\\\/\\\/www.soltel.es\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/logotipo-soltel.png\",\"width\":276,\"height\":212,\"caption\":\"Soltel Group\"},\"image\":{\"@id\":\"https:\\\/\\\/www.soltel.es\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/pages\\\/Soltel-IT-Solutions\\\/158795267511286\",\"https:\\\/\\\/x.com\\\/soltel_it\",\"https:\\\/\\\/www.youtube.com\\\/@soltel\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/soltel\",\"https:\\\/\\\/www.instagram.com\\\/soltelgroup\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.soltel.es\\\/#\\\/schema\\\/person\\\/23bfee8c77d68affbdefb2efd436f329\",\"name\":\"Comunicacion-Soltel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.soltel.es\\\/wp-content\\\/litespeed\\\/avatar\\\/7a3ea0e05aba60509babe26523c075d4.jpg?ver=1778241045\",\"url\":\"https:\\\/\\\/www.soltel.es\\\/wp-content\\\/litespeed\\\/avatar\\\/7a3ea0e05aba60509babe26523c075d4.jpg?ver=1778241045\",\"contentUrl\":\"https:\\\/\\\/www.soltel.es\\\/wp-content\\\/litespeed\\\/avatar\\\/7a3ea0e05aba60509babe26523c075d4.jpg?ver=1778241045\",\"caption\":\"Comunicacion-Soltel\"},\"url\":\"https:\\\/\\\/www.soltel.es\\\/en\\\/author\\\/comunicacion-soltel\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Webcomponents para dummies - Soltel Group","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.soltel.es\/en\/webcomponents-para-dummies-3\/","og_locale":"en_GB","og_type":"article","og_title":"Webcomponents para dummies - Soltel Group","og_description":"Desde el inicio de la programaci\u00f3n los programadores hemos intentado reutilizar la mayor cantidad de c\u00f3digo posible, no por ser flojos, claro est\u00e1, sino por eficiencia pura y dura. Ganar tiempo es ganar eficiencia y dinero y eso lo sabemos todos\u2026 pero, \u00bfqu\u00e9 tiene que ver todo esto con los webcomponents? Pues muy f\u00e1cil, te...","og_url":"https:\/\/www.soltel.es\/en\/webcomponents-para-dummies-3\/","og_site_name":"Soltel Group","article_publisher":"https:\/\/www.facebook.com\/pages\/Soltel-IT-Solutions\/158795267511286","article_published_time":"2021-06-02T11:09:45+00:00","og_image":[{"width":1950,"height":1300,"url":"https:\/\/www.soltel.es\/wp-content\/uploads\/2021\/06\/photo-1518773553398-650c184e0bb3.jpg","type":"image\/jpeg"}],"author":"Comunicacion-Soltel","twitter_card":"summary_large_image","twitter_creator":"@soltel_it","twitter_site":"@soltel_it","twitter_misc":{"Written by":"Comunicacion-Soltel","Estimated reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/#article","isPartOf":{"@id":"https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/"},"author":{"name":"Comunicacion-Soltel","@id":"https:\/\/www.soltel.es\/#\/schema\/person\/23bfee8c77d68affbdefb2efd436f329"},"headline":"Webcomponents para dummies","datePublished":"2021-06-02T11:09:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/"},"wordCount":752,"publisher":{"@id":"https:\/\/www.soltel.es\/#organization"},"image":{"@id":"https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.soltel.es\/wp-content\/uploads\/2021\/06\/photo-1518773553398-650c184e0bb3.jpg","articleSection":["Desarrollo de software","Programaci\u00f3n"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/","url":"https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/","name":"Webcomponents para dummies - Soltel Group","isPartOf":{"@id":"https:\/\/www.soltel.es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/#primaryimage"},"image":{"@id":"https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.soltel.es\/wp-content\/uploads\/2021\/06\/photo-1518773553398-650c184e0bb3.jpg","datePublished":"2021-06-02T11:09:45+00:00","breadcrumb":{"@id":"https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/#primaryimage","url":"https:\/\/www.soltel.es\/wp-content\/uploads\/2021\/06\/photo-1518773553398-650c184e0bb3.jpg","contentUrl":"https:\/\/www.soltel.es\/wp-content\/uploads\/2021\/06\/photo-1518773553398-650c184e0bb3.jpg","width":1950,"height":1300},{"@type":"BreadcrumbList","@id":"https:\/\/www.soltel.es\/webcomponents-para-dummies-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.soltel.es\/"},{"@type":"ListItem","position":2,"name":"Webcomponents para dummies"}]},{"@type":"WebSite","@id":"https:\/\/www.soltel.es\/#website","url":"https:\/\/www.soltel.es\/","name":"Soltel Group","description":"Soltel IT Solutions, a company specializing in IT services","publisher":{"@id":"https:\/\/www.soltel.es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.soltel.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/www.soltel.es\/#organization","name":"Soltel Group","url":"https:\/\/www.soltel.es\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.soltel.es\/#\/schema\/logo\/image\/","url":"https:\/\/www.soltel.es\/wp-content\/uploads\/2023\/03\/logotipo-soltel.png","contentUrl":"https:\/\/www.soltel.es\/wp-content\/uploads\/2023\/03\/logotipo-soltel.png","width":276,"height":212,"caption":"Soltel Group"},"image":{"@id":"https:\/\/www.soltel.es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/pages\/Soltel-IT-Solutions\/158795267511286","https:\/\/x.com\/soltel_it","https:\/\/www.youtube.com\/@soltel","https:\/\/www.linkedin.com\/company\/soltel","https:\/\/www.instagram.com\/soltelgroup\/"]},{"@type":"Person","@id":"https:\/\/www.soltel.es\/#\/schema\/person\/23bfee8c77d68affbdefb2efd436f329","name":"Comunicacion-Soltel","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.soltel.es\/wp-content\/litespeed\/avatar\/7a3ea0e05aba60509babe26523c075d4.jpg?ver=1778241045","url":"https:\/\/www.soltel.es\/wp-content\/litespeed\/avatar\/7a3ea0e05aba60509babe26523c075d4.jpg?ver=1778241045","contentUrl":"https:\/\/www.soltel.es\/wp-content\/litespeed\/avatar\/7a3ea0e05aba60509babe26523c075d4.jpg?ver=1778241045","caption":"Comunicacion-Soltel"},"url":"https:\/\/www.soltel.es\/en\/author\/comunicacion-soltel\/"}]}},"_links":{"self":[{"href":"https:\/\/www.soltel.es\/en\/wp-json\/wp\/v2\/posts\/9090","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.soltel.es\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.soltel.es\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.soltel.es\/en\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.soltel.es\/en\/wp-json\/wp\/v2\/comments?post=9090"}],"version-history":[{"count":0,"href":"https:\/\/www.soltel.es\/en\/wp-json\/wp\/v2\/posts\/9090\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.soltel.es\/en\/wp-json\/wp\/v2\/media\/4272"}],"wp:attachment":[{"href":"https:\/\/www.soltel.es\/en\/wp-json\/wp\/v2\/media?parent=9090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.soltel.es\/en\/wp-json\/wp\/v2\/categories?post=9090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.soltel.es\/en\/wp-json\/wp\/v2\/tags?post=9090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}