lit-state
lrnwebcomponents
lit-state | lrnwebcomponents | |
---|---|---|
3 | 30 | |
137 | 235 | |
- | -0.4% | |
0.0 | 9.7 | |
over 1 year ago | 6 days ago | |
JavaScript | JavaScript | |
GNU Lesser General Public License v3.0 only | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
lit-state
-
Web Components Eliminate JavaScript Framework Lock-In
The reason React uses a virtual DOM is because when React started, there were no (advanced) HTML templates yet. And it made it easy to setup listeners on elements, instead of manually adding it with `addEventListener()` and possibly remove them again with `removeEventListener()`. So the virtual DOM was really a game changer.
But Lit templates solve this problems in a more browser integrated way, without the need of a virtual DOM. How you manage the state is free to your choice, that is also not something exclusive to React and your favorite pattern can also be used with Lit. I wrote a tiny state management library (LitState [0]) which makes it very easy for multiple components to share the same state and stay in sync. I personally find it much more convenient and cleaner than any other state library I've used before. And it integrates very nicely with Lit.
[0]: https://github.com/gitaarik/lit-state
- Web Components Will Outlive Your JavaScript Framework
- Litstate Simple Shared App State Management For
lrnwebcomponents
-
How we automated storybook documentation for our web components
utils.makeElementFromClass(GitCorner, { source: 'https://github.com/elmsln/lrnwebcomponents', alt: "Our monorepo of all the things you see here", corner: true, size: "large" })
-
enhanced-text? Vide!
web component source
-
simple-img microfrontend
microservice source
-
htmlToDocx? No! docxToHtml! How about both?
Source for microservice
-
mdToHtml? htmlToMd? How 'bout both!
MD to HTML micro code
-
export class MicroFrontendRegistry
source for MFR
-
Duck duck go example
backend code for vercel
-
Building micro frontends with Vercel + Lit
Code Monorepo - https://github.com/elmsln/lrnwebcomponents/tree/master/ . /api has the endpoints for the microservices and /elements contains source for our web components
-
Visualizing Promise Arrays
Full source
-
Leveraging APIs for Microservices
Our url holds the link to google's mapping api and right after the /maps?q= in the link, we place in the latitude and longitude we have already found. Then, all we have left is to place that url into the src of our and the map will display, embedded in our page.
For more info on using the Google Maps Platform check out their developer page.
Externally
To create a link in our page that takes up to Google Maps with our desired location already in the view window is not too different from before. We can create a simple
tag and place the link for an external path with our long and lat we've received before.
See on Google
Enter fullscreen mode Exit fullscreen modeHere we've created a link that leads to google map's site with our long and lat coordinates and a zoom of 14 (
,14z
).Wiring with an Existing Component
Let's say you want to use the data we received to utilize a different web component.
For this example, we'll look at a tag named
that will perform a wikipedia search and embed the page found into our site.
Wikipedia-query info: Github npmjsSet Up
We'll start by wiring the component into our program so we can implement the project. First, adding the package location to our
dependencies
inpackage.json
.
Then we'll run annpm install
on our project to get all the needed assets to runwikipedia-query
.Once the install is finished, we want to add a "bare import" to our program file to be able to access the tag we just installed. A "bare import" is a convention where we let LitElement find what exact file we are looking for rather than specifically declaring one. This is important for improving the maintainability of our code since file locations and structures can change over time.
In this example, our "bare import" will look like this:
import '@lrnwebcomponents/wikipedia-query';
Enter fullscreen mode Exit fullscreen modeNotice we only specify the general area of what we are importing and not a specific file name.
Utilization
Now that we're all set up, we can do objectively the easiest part. Remember we want to use the
tag to display a wiki page of the location we received from our API earlier.
To implement our
tag we pass our location into it's
search
property and let the tag do the rest of the work for us.
//finding wiki based on city and state //finding wiki based on city //finding wiki based on state
Enter fullscreen mode Exit fullscreen modeWrap It Up
The main point in this post is the effectiveness of the
fetch
function. We are able to set a call to any API, receive the JSON data, and use that data in any way we want.Everything I talked about in this post is held in a small project that does more than is explained but is mostly centered around these topics.
Feel free to clone and play with the program on your own to see how it all plays together: Github
FYI: Everything discussed in this post is location in the LocationFromIP.js file in the src folder.
What are some alternatives?
lit - Lit is a simple library for building fast, lightweight web components.
vaadin - An evolving set of open source web components for building mobile and desktop web applications in modern browsers.
kor - User Interface Component Library based on LitElement / lit-html
web-components - Nativ web components for typographic projects: <foot-note>, <inline-note>, <note-list>
panel - Web Components + Virtual DOM: web standards for powerful UIs
WCFactory - A factory that churns out web components, library agnostic with a unified development, testing, and build to production pipeline.
WebComponentFactory - Make use of JavaScript web components while keeping your code in .html for LSP features
web-components - A set of high-quality standards based web components for enterprise web applications. Part of Vaadin 20+
lit-style - Shared component styles for LitElement
butterfloat - The greatest view engine for the modern web
Kiss! - :hash: :wrench: Shareable agnostics templates (Keep It Stupid Simple) / Integrated with Atom IDE #cli #nodejs #atom
cable-shared-worker - ActionCable and AnyCable Shared Worker support