JSFiddle - React, Tailwind, and code Playground

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone-min.js"></script>

JavaScript

var tabsView = Backbone.View.extend({
  tagName: 'div',
  
  // Initialize add <ul> for ui tabs menu
  initialize : function() {
    this.isRendered = false;
    this.$tabs = $('<ul>');
    this.$el.append(this.$tabs);
    this.tabCnt = 0;
  },
  
  // Add this.$el to body and inizialize ui.tabs
  render : function() {
    if (this.isRendered) return;
    this.isRendered = true;
    $('body').append(this.$el);
    this.$el.tabs();
    return this;
  },
  
    // Adding a new tab. Params: Tab name and Backbone.View
  addTab : function(name, view) {
    var tabId = 'tab' + this.tabCnt++;
    var a = $('<a>').attr('href', '#' + tabId).text(name);
    this.$tabs.append($('<li>').append(a));
    
    // Seting id to the view and append the view content to this.$el
    view.$el.attr('id', tabId);
    this.$el.append(view.render().$el);
    
    // Refresh ui.tabs
    if(this.isRendered) this.$el.tabs('refresh');
    
    // Example: Binding events -> Bounce tab on collection items added
    if (view.collection) {
      view.collection.on('add', function() {
        a.effect('bounce', {}, 500);
      })
    }
  }
});

// Views: product, order and category
var productView = Backbone.View.extend({
  render : function() {
    this.$el.text('Product listing here');
    return this;
  }
});

var orderView = Backbone.View.extend({
  render : function() {
    this.$el.text('Order listing here');
    return this;
  }
});

var categoryView = Backbone.View.extend({
  render : function() {
    this.$el.text('Category listing here');
    return this;
  }
});


// Dumy collection to illustrate
var orderCollection = Backbone.Collection.extend({});
var orders = new orderCollection;


var t = new tabsView();

// Adding tabs
t.addTab('Products', new productView);
t.addTab('Orders', new orderView({collection : orders}));
t.addTab('Categories', new categoryView);

// Render tabs
t.render();


// Adding some data to orders after 1s, 3s and 6s
setTimeout(function(){
   ...