Warning The DOM Mixin API is currently experimental and may change.
With the release of Marionette 3.2, developers can remove the dependency on jQuery and integrate with the DOM using a custom mixin.
The DOM mixin manages the DOM on behalf of View and CollectionView. It
defines the methods that actually attach and remove views and children.
The default mixin depends on Backbone's jQuery $ object however it does not
rely on jQuery-specific behavior. This should make it easier to develop your own
API. You will, however, need to also handle Backbone's jQuery integration.
createBuffer()Returns a new HTML DOM node instance. The resulting node can be passed into the other DOM functions.
appendChildren(el, children)Takes the DOM node el and appends the rendered children to the end of the
element's contents.
beforeEl(el, sibling)Add sibling to the DOM immediately before the DOM node el. The sibling
will be at the same level as el.
replaceEl(newEl, oldEl)Remove oldEl from the DOM and put newEl in its place.
detachContents(el)Remove the inner contents of el from the DOM while leaving el itself in the
DOM.
setInnerContent(el, html)Replace the contents of el with the HTML string of html. Unlike other DOM
functions, this takes a literal string for its second argument.
removeEl(el)Remove el from the DOM.
findEls(selector, context)Lookup the selector string within the DOM node for context. The optional
context argument will come in as a DOM Node reference to run the selector
search. If context hasn't been set, then findEls should search the entire
document for the selector.
To implement your own DOM API for View, override the provided functions to
provide the same functionality provided and mix it in using _.extend as such:
var Mn = require('backbone.marionette');
var MyDOMMixin = require('./mixins/mydom');
module.exports = Mn.View.extend(MyDOMMixin);
This would need to be applied to CollectionView, Region and TemplateCache.
Backbone.js is tied to jQuery's API for managing DOM manipulation. If you want to completely remove jQuery from your Marionette app, you'll also have to provide your own versions of the following methods:
The DOM Mixin takes care of the other DOM manipulation methods for you. The Backbone Wiki has a good reference for removing jQuery from the app, including Browserify and Webpack configuration hooks.