ws-element/README.md

51 lines
1.9 KiB
Markdown
Raw Normal View History

2023-10-18 16:54:45 -04:00
WSElement
---------
A demo for a `WebSocket` based `WebComponent` custom `Element`.
Motivation
----------
As I've embraced WebComponent increasingly I find myself writing less and less JavaScript.
One place it doesn't seems to have decreased is around WebSockets, so why not try to pass
some of this complexity off to an extensible WebComponent?
In a prior project I had experimented with this and it look feasible, but my one off code
didn't feel generic enough for general use. This code represents a cleaner more trimmed down
version I feel accomplishes this goal better.
Code and Usage
--------------
This codebase provides a trimmed down base Element, `WSElement`, who's default behavior is
simply to update it's own `innerText`. This could be simply used on it's own, embedded in
other HTML or extended to provide more complex behavior with in a custom WebComponent.
In addition two subclass Elements are provided to examples of extending the base class.
`WSTime` provides a slightly more complex example, adding several child elements and perform
a partial update.
`WSTable` increases the complexity by parsing incoming `JSON` data and dynamically building
a `Table`. It also demonstrates using attributes to control behavior.
### Demo Server
To see this in action a demo server has been provided based on `Flask`. To run it....
```
python -m venv .
pip install -r requirements.txt
. bin/activate
flask run --debug #optional
```
(Lack of) Licensing
-------------------
This isn't really meant to be a consumable module but more of a how-to, feel free to use as
you wish under no formal license, with no guarantees.
If/As I developer this further, this may change, please feel free to make suggestions, though
again, with no guarantees.
Future
------
I do hope to develop this further, specifically I'm mulling how this would look when also
sending data over the socket, something I haven't needed as much yet.