Comments (3)
Custom tags are resolved to a "renderer" module at compile-time so it is not possible to support something like <app-test-${path} ...>
. However, a custom tag is mapped directly to a renderer and you can invoke the renderer directly to have the HTML be written to the output stream. One option is to create a custom tag that delegates rendering to the appropriate renderer based on some internal logic. Something like the following:
src/components/app-test/renderer.js
:
var rendererA = require('./variant-A/renderer');
var rendererB = require('./variant-B/renderer');
var rendererC = require('./variant-C/renderer');
module.exports = function render(input, out) {
if (input.type === 'A') {
rendererA(input, out);
} else if (input.type === 'B') {
rendererB(input, out);
} else if (input.type === 'C') {
rendererC(input, out);
}
}
This nice thing about that approach is that to the outside world there is only a single tag, but internally the custom tag renderer can delegate to the appropriate implementation.
Let us know if that works or doesn't work for you.
from marko.
ping.
Can you please let me know if the proposed solution meets your needs so that I can close this issue or keep it open? Thanks.
from marko.
This will work. Thanks.
from marko.
Related Issues (20)
- Webpack error on Marko versions greater than 5.31.0 HOT 5
- Deprecation warnings in Chrome HOT 5
- `onInput` is not running when it is used in `component-browser.ts` HOT 1
- Static functions or arrow functions do not work on components without a class statement
- How does routing work? HOT 2
- Marko not properly tracking dependency updates in some situations when using the tags-api
- `Marko is not defined` when index.marko imports module from component.ts
- Cannot break generic parameter declarations into multiple lines HOT 3
- Specify Node Engine Constraint in package.json
- Removing a class attribute results in a "null" class HOT 5
- Out-of-order HTML streaming without JS using Declarative Shadow DOM HOT 15
- Uncaught DOMException on Marko 5.33.14 HOT 15
- Difference in dev/production builds
- `<await>` tag doesn't render correctly with `client-reorder` when inside `<table>` element HOT 3
- Unexpected rename destructed property data to input
- Marko + react
- Marko on Codepen HOT 1
- Marko load: Rank index.marko.js higher over index.js HOT 1
- Branch Coverage that can't be ignored HOT 1
- Broken prettier plugin 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 marko.