JSFiddle - React, Tailwind, and code Playground
JavaScript
'use strict';
var App = {
appState: {'someData': 'Foo'},
controller: function(innerComponent) {
this.innerCtrl = innerComponent.controller(this.appState);
this.innerView = innerComponent.view;
},
view : function( appController ){
return m("div", [
appController.innerView(appController.innerCtrl)
]);
},
wrap: function(routes) {
var map = {};
Object.keys(routes).map(function(r) {
map[r] = {
controller: function() {
return new App.controller(routes[r]);
},
view: App.view,
appState: App.appState
};
}); // end of "map" ..
return map;
}
};
var Home = {
controller: function() {},
view: function() {
return [
m("h1#main-title", "Home"),
m('a#link[href="/login"]', {config:m.route}, 'Login')
];
}
};
var Login = {
controller: function() {},
view: function() {
return [
m("h1#main-title", "Login"),
m('a#link[href="/"]', {config:m.route}, 'Home')
];
}
};
m.route.mode = "pathname";
m.route(document.body, "/", App.wrap({
"/" : Home,
"/login" : Login
}));