A friendly (and fast!) UI library from eBay that makes building web apps fun
Branch: master
Clone or download
Latest commit e4137ba Feb 5, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github simplify PR template Aug 28, 2018
benchmark regenerate package-lock and run prettier Dec 11, 2018
bin add a quiet option to markoc (#1030) Apr 6, 2018
docs update to new htmljs-parser which supports pipe params, add flagged t… Jan 17, 2019
helpers Format + lint (#1016) Mar 9, 2018
scripts Add migrator for w-config (#1214) Dec 28, 2018
src Fix regression with escaped sequences in non standard template litera… Feb 5, 2019
test Fix regression with escaped sequences in non standard template litera… Feb 5, 2019
.editorconfig Adding test case for issue #556 Feb 1, 2017
.eslintignore add coverage directory to eslintignore Mar 23, 2018
.eslintrc.json Add extension to .eslintrc (#1152) Oct 9, 2018
.gitignore Optional migrations & basic w-bind migration (#1192) Dec 14, 2018
.npmignore Updated component docs Jul 11, 2017
.npmrc Add lock file. Jun 15, 2018
.prettierignore fix formatting, ignore ~* when formatting Jun 25, 2018
.travis.yml drop node 4/9 add node 10 Jun 19, 2018
CHANGELOG.md Update changelog: Feb 5, 2019
LICENSE MIT license Jan 3, 2017
README.md spellcheck (#1100) Dec 6, 2018
browser-refresh.js Format + lint (#1016) Mar 9, 2018
compiler-browser.marko Fix 'marko is using deprecated features' message (#1250) Jan 31, 2019
compiler.js Format + lint (#1016) Mar 9, 2018
components-browser.marko Fix 'marko is using deprecated features' message (#1250) Jan 31, 2019
components.js Format + lint (#1016) Mar 9, 2018
env.js Format + lint (#1016) Mar 9, 2018
express.js Format + lint (#1016) Mar 9, 2018
hot-reload.js Format + lint (#1016) Mar 9, 2018
index-browser.marko Fix 'marko is using deprecated features' message (#1250) Jan 31, 2019
index.js Format + lint (#1016) Mar 9, 2018
jquery.marko Fix 'marko is using deprecated features' message (#1250) Jan 31, 2019
legacy-components-browser.marko Fix 'marko is using deprecated features' message (#1250) Jan 31, 2019
legacy-components.js Format + lint (#1016) Mar 9, 2018
node-require.js Format + lint (#1016) Mar 9, 2018
package-lock.json 4.14.25 Feb 5, 2019
package.json 4.14.25 Feb 5, 2019
ready.marko Fix 'marko is using deprecated features' message (#1250) Jan 31, 2019

README.md

Marko logo

Marko is a friendly (and fast!) UI library that makes building web apps fun. Learn more on markojs.com, and even Try Marko Online!

Build Status Coverage Status Gitter NPM Downloads

Get Involved

  • Contributing: Pull requests are welcome!
  • Support: Join our gitter chat to ask questions to get support from the maintainers and other Marko developers
  • Discuss: Tweet using the #MarkoJS hashtag and follow @MarkoDevTeam

Installation

npm install marko --save

Examples

Marko provides an elegant and readable syntax for both single-file components and components broken into separate files. There are plenty of examples to play with on Marko's Try-Online. Additional component documentation can be found on the Marko.js website.

Single file

The following single-file component renders a button and a counter with the number of times the button has been clicked. Try this example now!

click-count.marko

class {
    onCreate() {
        this.state = { count:0 };
    }
    increment() {
        this.state.count++;
    }
}

style {
    .count {
        color:#09c;
        font-size:3em;
    }
    .example-button {
        font-size:1em;
        padding:0.5em;
    }
}

<div.count>
    ${state.count}
</div>
<button.example-button on-click('increment')>
    Click me!
</button>

Multi-file

The same component as above split into an index.marko template file, component.js containing your component logic, and style.css containing your component style:

index.marko

<div.count>
    ${state.count}
</div>
<button.example-button on-click('increment')>
    Click me!
</button>

component.js

module.exports = {
  onCreate() {
    this.state = { count: 0 };
  },
  increment() {
    this.state.count++;
  }
};

style.css

.count {
  color: #09c;
  font-size: 3em;
}
.example-button {
  font-size: 1em;
  padding: 0.5em;
}

Concise Syntax

Marko also supports a beautifully concise syntax as an alternative to HTML syntax. Find out more about the concise syntax here.

<!-- Marko HTML syntax -->
<ul>
    <li for(color in ['a', 'b', 'c'])>
        ${color}
    </li>
</ul>
// Marko concise syntax
ul
    li for(color in ['a', 'b', 'c'])
        -- ${color}

Changelog

See CHANGELOG.md

Maintainers

Code of Conduct

This project adheres to the eBay Code of Conduct. By participating in this project you agree to abide by its terms.

License

MIT