# DOMtastic **Repository Path**: mirrors_singod/DOMtastic ## Basic Information - **Project Name**: DOMtastic - **Description**: Small, fast, and modular DOM and event library for modern browsers. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-25 - **Last Updated**: 2026-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DOMtastic * Small, fast, and modular **DOM & Event** library for modern browsers. * Same familiar API as jQuery (but without the extra "weight" of modules like `$.ajax`, `$.animate`, and `$.Deferred`). * Dependency-free. Weighs in at only 1KB to 12KB (minified), depending on included modules. Full bundle is about 4KB gzipped. * Works great stand-alone or paired up with e.g. Backbone or Angular. * The [source](https://github.com/webpro/DOMtastic) is written in ES6 format. * [Rollup](http://rollupjs.org) and [babel](https://babeljs.io) are used to create a [UMD](https://github.com/umdjs/umd) bundle (supporting AMD, CommonJS, and fallback to browser global). * Supercharge your components and extend from the [base class](#es6-class). * Easy to create a [custom build](#custom-build) to include or exclude parts. * DOMtastic also serves as a starting point for your own application-specific DOM API ([read more](#build-a-custom-api-for-your-application)). ## Quicklinks * Bundled sources: [domtastic.js](https://cdn.jsdelivr.net/npm/domtastic@latest/dist/domtastic.js), [domtastic.min.js](https://cdn.jsdelivr.net/npm/domtastic@latest/dist/domtastic.min.js) * [API documentation](https://domtastic.js.org/doc/) * [Run tests](https://domtastic.js.org/test/) * Coverage: [Istanbul](https://domtastic.js.org/coverage/), [Coveralls](https://coveralls.io/github/webpro/DOMtastic) * [Run benchmarks](https://domtastic.js.org/benchmark/) [](https://travis-ci.org/webpro/DOMtastic) [](https://coveralls.io/github/webpro/DOMtastic)  [](https://codeclimate.com/github/webpro/DOMtastic) [](https://greenkeeper.io) [](https://unpkg.com/domtastic/dist/domtastic.min.js) ## Usage ### ES6 (with e.g. Babel) ```bash npm install domtastic ``` ```javascript import $ from 'domtastic'; ``` ### CommonJS (with e.g. Browserify) ```bash npm install domtastic ``` ```javascript var $ = require('domtastic'); ``` ### AMD ```bash bower install domtastic ``` ```javascript requirejs.config({ baseUrl: 'bower_components', packages: [{ name: 'domtastic', main: 'domtastic' }] }); require(['domtastic'], function($) { $('.earth').addClass('evergreen').on('sunrise', '.people', awake); }); ``` ### Browser Global ```html ``` ```javascript $('.planet').addClass('evergreen').on('sunrise', '.grass', grow); ``` ### ES6 Class ```javascript import $ from 'domtastic'; class MyComponent extends $.BaseClass { progress(value) { return this.attr('data-progress', value); } } let component = new MyComponent('.my-anchor'); component.progress('ive').append('
enhancement
'); ``` Read more in the [baseClass article](https://medium.com/@webprolific/domtastic-s-baseclass-437f142e8bf4) or the [docs](https://domtastic.js.org/doc/#baseClass). ## API ### [Array](https://domtastic.js.org/doc/#array) every filter forEach (alias: each) indexOf map pop push reduce reduceRight reverse shift some unshift ### [CSS](https://domtastic.js.org/doc#css) css ### [DOM](https://domtastic.js.org/doc/#dom/index) after append before clone prepend ### [DOM/attr](https://domtastic.js.org/doc#dom/attr) attr removeAttr ### [DOM/class](https://domtastic.js.org/doc#dom/class) addClass hasClass removeClass toggleClass ### [DOM/contains](https://domtastic.js.org/doc#dom/contains) contains ### [DOM/data](https://domtastic.js.org/doc#dom/data) data prop ### [DOM/extra](https://domtastic.js.org/doc#dom/extra) appendTo empty remove replaceWith text val ### [DOM/html](https://domtastic.js.org/doc#dom/html) html ### [Event](https://domtastic.js.org/doc/#event/index) on (alias: bind) off (alias: unbind) one ### [Event/ready](https://domtastic.js.org/doc#event/ready) ready ### [Event/trigger](https://domtastic.js.org/doc#event/trigger) trigger triggerHandler ### [NoConflict](https://domtastic.js.org/doc#noconflict) noConflict ### [Selector](https://domtastic.js.org/doc/#selector/index) $ find matches ### [Selector/closest](https://domtastic.js.org/doc#selector/closest) closest ### [Selector/extra](https://domtastic.js.org/doc#selector/extra) children concat contents eq first get parent siblings slice ### [Type](https://domtastic.js.org/doc#type) isArray isFunction ### [Util](https://domtastic.js.org/doc/#util) extend ## But it doesn't even have _awesomest-method_! As mentioned in the introduction, DOMtastic doesn't feature methods for Ajax, Animation, Promise, etc. Please find your own libraries to fill in the gaps as needed. Here are just some examples: * Ajax: [microjs#ajax](http://microjs.com/#ajax), [rest.js](https://github.com/cujojs/rest) * Animation: [microjs#animation](http://microjs.com/#animation), [Move.js](http://visionmedia.github.io/move.js/), [Animate.css](https://daneden.me/animate/) * Promises: [when.js](https://github.com/cujojs/when), [RSVP.js](https://github.com/tildeio/rsvp.js) Please note that you can extend the `$.fn` object, just like [jQuery Plugins](http://learn.jquery.com/plugins/basic-plugin-creation/). Feel free to [open an issue](https://github.com/webpro/DOMtastic/issues) if you feel an important method is missing. ## Browser Support Latest versions of Chrome, Firefox, Safari, Opera, Android, Chrome Mobile iOS, and Mobile Safari. Internet Explorer 10 and up. IE9 requires a polyfill for `classList`. ## Performance Run the [benchmark suite](https://domtastic.js.org/benchmark/) to compare the performance of various methods of jQuery, Zepto and DOMtastic (tl/dr; it's fast!). ## Custom Build You can build a custom bundle that _excludes_ specific modules that you don't need: ```bash git clone git@github.com:webpro/DOMtastic.git cd DOMtastic npm install npm run bundle -- --exclude=css,dom/html,event/trigger ``` Alternatively, you can do the opposite and _include_ what you need: ```bash npm run bundle -- --include=array,selector/index,dom/class ``` Find the output in the `dist/` folder. ### jQuery Compatibility Some iterator method signatures in jQuery are different (i.e. non-standard), most notably the `index` before `element` argument in `each`, `filter` and `map`). However, a custom build that is compatible with jQuery can be created by using the `--jquery-compat` flag: ```bash npm run bundle -- --jquery-compat ``` ### Build a custom API for your application You can also build a custom API from the ground up. By default, DOMtastic [does it](https://github.com/webpro/DOMtastic/blob/master/src/index.js) for you, but you can easily do it yourself in a highly custom approach. Grab the `$` function from the `selector`, and extend the `$.fn` object with methods from specific modules: ```javascript var selector = require('domtastic/commonjs/selector'), dom = require('domtastic/commonjs/dom'); var $ = selector.$; $.fn = {}; $.fn.append = dom.append; // Or e.g. _.extend($, dom) $.fn.prepend = dom.prepend; module.exports = $; ``` This way, you don't have the slight overhead of the UMD boilerplate in a custom bundle, and a single location/module to define the API for your application. Works great with either AMD or Browserify. ## Tests Run the hosted [test suite](https://domtastic.js.org/test/) in your browser. You can also clone this repo, and run the tests locally with [jsdom](https://github.com/tmpvar/jsdom) (using `npm test`). ## Credits Many thanks to these sources of inspiration: * [jQuery](http://jquery.com/) * [madrobby/zepto](https://github.com/madrobby/zepto/) * [remy/min.js](https://github.com/remy/min.js) * [Knockout](https://github.com/knockout/knockout/blob/master/src/utils.js) * [inkling/Backbone.Native](https://github.com/inkling/backbone.native/blob/master/backbone.native.js) Thanks to [jsDelivr](https://www.jsdelivr.com/) for [hosting DOMtastic](https://www.jsdelivr.com/projects/domtastic). ## License [MIT](http://webpro.mit-license.org)