
Welcome to the course! Let me introduce myself and give you a rough overview of this course, in this lecture.
What are "Web Components"? You understand them best, if you see them in action - so time for a quick web components + custom HTML elements demo.
We saw web components in action - what exactly are web components then? How did that demo work? Let's dive into the important theory in this lecture.
Learning alone is absolutely fine but finding learning partners might be a nice thing, too. Our learning community is a great place to learn and grow together - of course it's 100% free and optional!
We know what Web Components and Custom HTML Elements are - why would we use them? In this lecture, I'll give you some ideas!
Do web components replace Angular, React.js or Vue.js? Are custom HTML elements better than JavaScript frameworks? Let's explore that question in this lecture!
We got the theory out of the way - time to now understand what's in this course. Here's an overview of the course content and the order in which it is presented.
It's important to me to ensure that you're getting the most out of this course! So here are some tipps & tricks regarding how you should use the course content.
Refresh your knowledge of es6+ JavaScript features, including arrow functions, let and const, and array methods. See how we use modern JavaScript in this course, with a touch of TypeScript.
Discover let and const as modern JavaScript variables, replacing var and clarifying scope, with const used for values that never change and live jsbin examples.
learn the next generation JavaScript class syntax for web components, initializing properties directly in class, and defining methods as arrow functions to simplify this handling, with ES6 Babel.
Explore how the spread and rest operators, the three dots, copy arrays and objects, merge new properties, and collect function arguments into an array for processing.
Learn how array functions like map transform a numbers array into a doubleNum array by applying an arrow function to each element and returning the result.
Have a look at this lecture to get a good overview over the various next-gen JS features you'll encounter in this course.
Here's something we'll also use quite a bit in this course: Some JavaScript array functions.
Create your web component by defining a tooltip class that extends the HTML element, register it with customElements.define using a dash-separated tag name, and implement constructor logic with super.
Build and integrate custom web components by composing built-in HTML elements and tooltips, while understanding the lifecycle of custom elements as the browser renders them.
Style a web component by applying absolute positioning to the tooltip, making the host relative, adding a z-index, and using Shadow DOM and templates to prevent global style interference.
Attach an open shadow root to a custom component to isolate its DOM from the light DOM and render content through the shadow tree.
Learn how to conditionally style web components with host selectors inStencil.js, using :host with conditions to apply a default background only when the custom element has the important class.
Apply host-context styling to custom elements with the host-context selector and its function form in parentheses to specify surrounding conditions like a paragraph, enabling bold font weight when inside.
Wrap up the module by moving styling to the host selector and reinforce concepts like host, host with condition, slotted selectors, and css variables for themes.
Position the modal above the backdrop inside the shadow DOM with fixed placement, a higher z-index, top 15vh, left 25%, width 50%, a white background, and a drop shadow.
Expose a public open method on the modal component to show it from outside. A public isOpen property reflects state and enables external control for safe, single openings.
Explore using named slots in web components with stencil.js, including naming slots, targeting content with slot attributes, and styling slotted content via the slotted selector.
Explore how to deploy your custom HTML elements, preview stencil.js as a helpful tool for building web components, and anticipate publishing libraries to npm later in the course.
Install NodeJS and npm to enable stencil, then initialize a new stencil project to build web components and run a development server with an index.html demo.
Start a development server with npm start to preview components in memory, auto-reloading on changes and serving index.html at localhost:3333, while dist output remains unused.
Build a stencil web component named side drawer with side-drawer.tsx, using @component, a uc-side-drawer tag, and a render method returning jsx.
Learn how props combine with attributes in Stencil.js to control a side drawer, syncing the open property to the open attribute and reflecting changes for programmatic control via a button.
Add an x button to the side drawer and wire onCloseDrawer to close it, noting that props are immutable by default and can be mutable with reflect to attribute.
Explore advanced features of stencil.js, including the lifecycle of stencil components, emitting and listening to custom events, and writing more reactive components that adapt to changing circumstances.
Register for a free Alphavantage API key to fetch stock data. Render a symbol input and a price output, and handle form submit to fetch the latest price.
Implement a form submission in a stock price component by wiring an onFetchStockPrice method to the form's submit event, preventing default behavior and displaying 'submitted' before styling and API hookup.
Reuse form styling from another component by applying the host selector, creating cohesive visuals, and set up shared styles before adding logic to display results below the input and button.
Apply CSS properties and custom CSS variables to style web components from outside the shadow DOM. Use tokens like color-primary, color-primary inverse, and color-primary highlight to unify the look.
Build and bundle web components with Stencil.js by running npm run build to generate dist files, then deploy and use them in web pages or React, Vue, or Angular projects.
Learn to integrate Stencil web components in a Vue app by installing and loading uc-components, defining custom elements, and enabling lazy loading with dynamic bundles in development.
Explore web components andStencil.js by building projects, exporting dist output, and publishing to npm, with integration in Angular, React, and Vue apps.
Let's face it: You got hundreds of HTML tags to choose from but some really helpful ones (<tabs>, <side-drawer>, <modal>, ...) are missing.
What if you could build your own HTML tags?
Without frameworks like Angular, libraries like React or expert JavaScript knowledge in general. Just with a magic, native-JavaScript feature called "Web Components" (or "custom HTML elements").
Web Components are a combination of various specifications that are baked into the browser. Getting started with these features is a breeze and you'll quickly be able to build your own powerful and re-usable (even across projects!) custom HTML elements.
Such custom elements don't replace Angular, React or Vue though - instead you can easily use them in ANY web project, including projects using such frameworks and libraries.
In this course, you'll learn this from scratch.
But we won't stop there. Whilst getting started is fairly easy, more complex components will be more difficult to create. Stencil.js is a tool that makes the creation of such native web components much easier by using modern features like TypeScript and JSX (don't know that? No worries, you'll learn it in the course!).
In detail, in this course you will learn:
how to build re-usable, lightweight custom HTML elements with native browser features
how to build web components of all complexities - from a simple tooltip to modals or side drawers
how to pass data into your own web components and use it there
how to emit your own custom events which you can listen to in JavaScript
how to use the Shadow DOM to scope your CSS styles to your custom elements
how to use Stencil.js to get a much easier development workflow
how to use the many features Stencil.js provides to build native web components way more efficiently
how to deploy/ re-use your own web components in ANY project using ANY JavaScript framework like Angular, React or Vue (or none at all!)
Prerequisites:
Basic JavaScript knowledge is a must-have
ES6 JavaScript knowledge (const, let, classes, ...) is strongly recommended but not strictly required - a brief refresher is provided as part of the course
NO JavaScript framework knowledge (e.g. Angular, React, Vue) is required
NO TypeScript or JSX knowledge is required
Let's dive into this exciting technology together!