Comments (4)
An example if you need
// hello.js
class Hello extends HTMLElement {
constructor() {
super();
if (!this.shadowRoot) {
this.attachShadow({ mode: "open" }).innerHTML = `
Hello World from SSR Web Components <slot></slot>!
`;
}
}
}
customElements.define("x-hello", Hello);
module.exports = Hello;
server.route({
method: "GET",
path: "/hello",
handler(request, response) {
const hello = `./pages/hello.js`;
const Hello = fs.existsSync(hello)
? require(hello)
: require("./pages/404.js");
return render(Object.assign(new Hello(), request.params));
}
});
This is how we do with Web Components, but I need a class to do it, if hybrids' define methods returned a class, this would be easy
from hybrids.
Yes, it does, but only if you use define
function. However, it not only creates a class, but also use customElements.define
to register it in the document. I think you want to avoid it on the server side.
When I was designing API, I haven't SSR in mind, so I assumed that the library will be only executed in the browser environment. Because of that, some of the factories calls DOM APIs on the module level, for example parent
factory here. Also, I encourage you to look at the #18 issue. It explains lazy approach to render in the hybrids. I think that your skatejs solution would produce empty internal structure (if you would have your required class).
Of course, you can experiment with SSR if you want. With the current code you need to polyfill document.addEventListener
and customElements.define
methods - they don't have to do anything, just define them in the global scope. With those changes, you can call define
function from the hybrids, and this function returns class constructor, which you want.
from hybrids.
I tried doing it with Hybrids, and an error was thrown
from hybrids.
I didn't mean that it is easy :P. Unfortunately, I have no time now to focus on SSR. I am in the middle of a big rewrite of the documentation.
What I can recommend you is to follow errors and try to create structures that will fix them. The attached screenshot shows that event listener callback requires the event argument to support composedPath method.
I think you may try to use dom-js or another project, which adds DOM API to the nodejs.
If you find a solution feel free to re-open and show your results! Happy coding!
from hybrids.
Related Issues (20)
- Typings issue with manual rendering HOT 3
- Nested arrays and objects in store could use more 'splaining HOT 2
- import as node module (import {...} from 'hybrids') doesn't work HOT 3
- Update to documentation HOT 2
- Custom methods on component ? HOT 2
- Tailwind integration HOT 2
- Update Store based on previous value HOT 10
- How to compile statically? HOT 5
- Typing Issue When Redefining HTMLElement Built-In Properties HOT 2
- AsyncIterator HOT 2
- Initializing object properties with `undefined` no longer accepted in v8.0.0 HOT 4
- Feature Request: Custom Elements Manifest Analyzer HOT 1
- Class attribute mix-in _on_ the web-component HOT 12
- Extension for FLIP / Miotion Animations in planning? HOT 10
- Timing of connect during instantiation HOT 13
- Rendering components without the ShadowDOM? HOT 1
- Working with Chart.js HOT 1
- `class` attribute changes rendering in v8.1.7 HOT 4
- render function mutating host property breaks rendering in v8.1.6 HOT 5
- Properties assigned undefined when accessing them for the first time HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hybrids.