Package Exports
- marko
- marko/common/accessor
- marko/common/accessor.debug
- marko/common/attr-tag
- marko/common/compat-meta
- marko/common/errors
- marko/common/for
- marko/common/helpers
- marko/common/meta
- marko/common/opt
- marko/common/types
- marko/debug/common/accessor
- marko/debug/common/accessor.debug
- marko/debug/common/attr-tag
- marko/debug/common/compat-meta
- marko/debug/common/errors
- marko/debug/common/for
- marko/debug/common/helpers
- marko/debug/common/meta
- marko/debug/common/opt
- marko/debug/common/types
- marko/debug/dom
- marko/debug/dom/abort-signal
- marko/debug/dom/compat
- marko/debug/dom/control-flow
- marko/debug/dom/controllable
- marko/debug/dom/dom
- marko/debug/dom/event
- marko/debug/dom/parse-html
- marko/debug/dom/queue
- marko/debug/dom/reconcile
- marko/debug/dom/renderer
- marko/debug/dom/resolve-cursor-position
- marko/debug/dom/resume
- marko/debug/dom/schedule
- marko/debug/dom/scope
- marko/debug/dom/signals
- marko/debug/dom/template
- marko/debug/dom/walker
- marko/debug/html
- marko/debug/html/attrs
- marko/debug/html/compat
- marko/debug/html/content
- marko/debug/html/dynamic-tag
- marko/debug/html/for
- marko/debug/html/inlined-runtimes
- marko/debug/html/serializer
- marko/debug/html/template
- marko/debug/html/writer
- marko/debug/translator/core/attrs
- marko/debug/translator/core/await
- marko/debug/translator/core/client
- marko/debug/translator/core/const
- marko/debug/translator/core/debug
- marko/debug/translator/core/define
- marko/debug/translator/core/effect
- marko/debug/translator/core/export
- marko/debug/translator/core/for
- marko/debug/translator/core/html-comment
- marko/debug/translator/core/html-script
- marko/debug/translator/core/html-style
- marko/debug/translator/core/id
- marko/debug/translator/core/if
- marko/debug/translator/core/import
- marko/debug/translator/core/index
- marko/debug/translator/core/let
- marko/debug/translator/core/lifecycle
- marko/debug/translator/core/log
- marko/debug/translator/core/return
- marko/debug/translator/core/script
- marko/debug/translator/core/server
- marko/debug/translator/core/static
- marko/debug/translator/core/style
- marko/debug/translator/core/textarea
- marko/debug/translator/core/try
- marko/debug/translator/index
- marko/debug/translator/interop/build-aggregate-error
- marko/debug/translator/interop/feature-detection
- marko/debug/translator/interop/index
- marko/debug/translator/util/assert
- marko/debug/translator/util/binding-has-downstream-expressions
- marko/debug/translator/util/binding-prop-tree
- marko/debug/translator/util/body-to-text-literal
- marko/debug/translator/util/entry-builder
- marko/debug/translator/util/evaluate
- marko/debug/translator/util/for-each-identifier
- marko/debug/translator/util/generate-uid
- marko/debug/translator/util/get-accessor-char
- marko/debug/translator/util/get-compile-stage
- marko/debug/translator/util/get-defined-binding-expression
- marko/debug/translator/util/get-known-attr-values
- marko/debug/translator/util/get-parent-tag
- marko/debug/translator/util/get-root
- marko/debug/translator/util/get-style-file
- marko/debug/translator/util/get-tag-name
- marko/debug/translator/util/is-core-tag
- marko/debug/translator/util/is-event-or-change-handler
- marko/debug/translator/util/is-invoked-function
- marko/debug/translator/util/is-non-html-text
- marko/debug/translator/util/is-only-child-in-parent
- marko/debug/translator/util/is-static
- marko/debug/translator/util/known-tag
- marko/debug/translator/util/marko-config
- marko/debug/translator/util/nested-attribute-tags
- marko/debug/translator/util/normalize-string-expression
- marko/debug/translator/util/optional
- marko/debug/translator/util/plugin-hooks
- marko/debug/translator/util/references
- marko/debug/translator/util/runtime
- marko/debug/translator/util/runtime-info
- marko/debug/translator/util/scope-read
- marko/debug/translator/util/sections
- marko/debug/translator/util/serialize-guard
- marko/debug/translator/util/serialize-reasons
- marko/debug/translator/util/set-tag-sections-downstream
- marko/debug/translator/util/signals
- marko/debug/translator/util/simplify-fn
- marko/debug/translator/util/state
- marko/debug/translator/util/tag-name-type
- marko/debug/translator/util/to-first-expression-or-block
- marko/debug/translator/util/to-first-statement-or-block
- marko/debug/translator/util/to-property-name
- marko/debug/translator/util/translate-attrs
- marko/debug/translator/util/translate-var
- marko/debug/translator/util/traverse
- marko/debug/translator/util/visitors
- marko/debug/translator/util/walks
- marko/debug/translator/util/with-comment
- marko/debug/translator/util/with-previous-location
- marko/debug/translator/util/writer
- marko/debug/translator/visitors/cdata
- marko/debug/translator/visitors/comment
- marko/debug/translator/visitors/declaration
- marko/debug/translator/visitors/document-type
- marko/debug/translator/visitors/function
- marko/debug/translator/visitors/import-declaration
- marko/debug/translator/visitors/placeholder
- marko/debug/translator/visitors/program/dom
- marko/debug/translator/visitors/program/html
- marko/debug/translator/visitors/program/index
- marko/debug/translator/visitors/program/pre-analyze
- marko/debug/translator/visitors/referenced-identifier
- marko/debug/translator/visitors/scriptlet
- marko/debug/translator/visitors/tag/attribute-tag
- marko/debug/translator/visitors/tag/custom-tag
- marko/debug/translator/visitors/tag/dynamic-tag
- marko/debug/translator/visitors/tag/index
- marko/debug/translator/visitors/tag/native-tag
- marko/debug/translator/visitors/text
- marko/dom
- marko/dom/abort-signal
- marko/dom/compat
- marko/dom/control-flow
- marko/dom/controllable
- marko/dom/dom
- marko/dom/event
- marko/dom/parse-html
- marko/dom/queue
- marko/dom/reconcile
- marko/dom/renderer
- marko/dom/resolve-cursor-position
- marko/dom/resume
- marko/dom/schedule
- marko/dom/scope
- marko/dom/signals
- marko/dom/template
- marko/dom/walker
- marko/html
- marko/html/attrs
- marko/html/compat
- marko/html/content
- marko/html/dynamic-tag
- marko/html/for
- marko/html/inlined-runtimes
- marko/html/serializer
- marko/html/template
- marko/html/writer
- marko/package.json
- marko/tags/await.d.marko
- marko/tags/const.d.marko
- marko/tags/debug.d.marko
- marko/tags/define.d.marko
- marko/tags/effect.d.marko
- marko/tags/html-comment.d.marko
- marko/tags/html-script.d.marko
- marko/tags/html-style.d.marko
- marko/tags/id.d.marko
- marko/tags/let.d.marko
- marko/tags/lifecycle.d.marko
- marko/tags/log.d.marko
- marko/tags/script.d.marko
- marko/tags/try.d.marko
- marko/translator
- marko/translator/core/attrs
- marko/translator/core/await
- marko/translator/core/client
- marko/translator/core/const
- marko/translator/core/debug
- marko/translator/core/define
- marko/translator/core/effect
- marko/translator/core/export
- marko/translator/core/for
- marko/translator/core/html-comment
- marko/translator/core/html-script
- marko/translator/core/html-style
- marko/translator/core/id
- marko/translator/core/if
- marko/translator/core/import
- marko/translator/core/index
- marko/translator/core/let
- marko/translator/core/lifecycle
- marko/translator/core/log
- marko/translator/core/return
- marko/translator/core/script
- marko/translator/core/server
- marko/translator/core/static
- marko/translator/core/style
- marko/translator/core/textarea
- marko/translator/core/try
- marko/translator/index
- marko/translator/interop/build-aggregate-error
- marko/translator/interop/feature-detection
- marko/translator/interop/index
- marko/translator/util/assert
- marko/translator/util/binding-has-downstream-expressions
- marko/translator/util/binding-prop-tree
- marko/translator/util/body-to-text-literal
- marko/translator/util/entry-builder
- marko/translator/util/evaluate
- marko/translator/util/for-each-identifier
- marko/translator/util/generate-uid
- marko/translator/util/get-accessor-char
- marko/translator/util/get-compile-stage
- marko/translator/util/get-defined-binding-expression
- marko/translator/util/get-known-attr-values
- marko/translator/util/get-parent-tag
- marko/translator/util/get-root
- marko/translator/util/get-style-file
- marko/translator/util/get-tag-name
- marko/translator/util/is-core-tag
- marko/translator/util/is-event-or-change-handler
- marko/translator/util/is-invoked-function
- marko/translator/util/is-non-html-text
- marko/translator/util/is-only-child-in-parent
- marko/translator/util/is-static
- marko/translator/util/known-tag
- marko/translator/util/marko-config
- marko/translator/util/nested-attribute-tags
- marko/translator/util/normalize-string-expression
- marko/translator/util/optional
- marko/translator/util/plugin-hooks
- marko/translator/util/references
- marko/translator/util/runtime
- marko/translator/util/runtime-info
- marko/translator/util/scope-read
- marko/translator/util/sections
- marko/translator/util/serialize-guard
- marko/translator/util/serialize-reasons
- marko/translator/util/set-tag-sections-downstream
- marko/translator/util/signals
- marko/translator/util/simplify-fn
- marko/translator/util/state
- marko/translator/util/tag-name-type
- marko/translator/util/to-first-expression-or-block
- marko/translator/util/to-first-statement-or-block
- marko/translator/util/to-property-name
- marko/translator/util/translate-attrs
- marko/translator/util/translate-var
- marko/translator/util/traverse
- marko/translator/util/visitors
- marko/translator/util/walks
- marko/translator/util/with-comment
- marko/translator/util/with-previous-location
- marko/translator/util/writer
- marko/translator/visitors/cdata
- marko/translator/visitors/comment
- marko/translator/visitors/declaration
- marko/translator/visitors/document-type
- marko/translator/visitors/function
- marko/translator/visitors/import-declaration
- marko/translator/visitors/placeholder
- marko/translator/visitors/program/dom
- marko/translator/visitors/program/html
- marko/translator/visitors/program/index
- marko/translator/visitors/program/pre-analyze
- marko/translator/visitors/referenced-identifier
- marko/translator/visitors/scriptlet
- marko/translator/visitors/tag/attribute-tag
- marko/translator/visitors/tag/custom-tag
- marko/translator/visitors/tag/dynamic-tag
- marko/translator/visitors/tag/index
- marko/translator/visitors/tag/native-tag
- marko/translator/visitors/text
Readme
A declarative, HTML-based language that makes building web apps fun 🔥
Docs ∙ Try Online ∙ Contribute ∙ Get Support
Intro
Marko is HTML reimagined as a language for building dynamic and reactive user interfaces. Almost any valid HTML is valid Marko, and Marko extends HTML for building modern applications more declaratively. Among these extensions are components, conditionals and loops, and a full reactivity system.
Example Component
The following renders a button and a counter of how many times the button has been pressed:
click-count.marko
// HTML + JavaScript = 💜
<let/count=0>
<button onClick() { count++ }>
Clicked ${count} times
</button>Getting Started
npm init marko- Read the docs
Community & Support
|
Hang out in our Discord server to ask questions & discuss marko |
Keep up with the community on Bluesky at @markojs.com |
Tweet to @MarkoDevTeam or use the #markojs hashtag |
Browse the code, open issues, & make pull requests on GitHub |
Contributors
Marko would not be what it is without all those who have contributed ✨
Get Involved!
- Pull requests are welcome!
- Submit GitHub issues for any feature enhancements, bugs, or documentation problems
- Read the Contribution Tips and Guidelines
- Participants in this project agree to abide by its Code of Conduct