• This repository has been archived on 24/Feb/2022
  • Stars
    star
    763
  • Rank 59,519 (Top 2 %)
  • Language
    JavaScript
  • Created over 11 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Small, fast, and modular DOM and event library for modern browsers.

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 is written in ES6 format.
  • Rollup and babel are used to create a UMD bundle (supporting AMD, CommonJS, and fallback to browser global).
  • Supercharge your components and extend from the base class.
  • Easy to create a custom build to include or exclude parts.
  • DOMtastic also serves as a starting point for your own application-specific DOM API (read more).

Quicklinks

Build Status Coverage Status BrowserStack Status Code Climate gzip size

Usage

ES6 (with e.g. Babel)

npm install domtastic
import $ from 'domtastic';

CommonJS (with e.g. Browserify)

npm install domtastic
var $ = require('domtastic');

AMD

bower install domtastic
requirejs.config({
  baseUrl: 'bower_components',
  packages: [
    {
      name: 'domtastic',
      main: 'domtastic'
    }
  ]
});

require(['domtastic'], function($) {
  $('.earth').addClass('evergreen').on('sunrise', '.people', awake);
});

Browser Global

<script src="//cdn.jsdelivr.net/npm/domtastic"></script>
$('.planet').addClass('evergreen').on('sunrise', '.grass', grow);

ES6 Class

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('<p>enhancement</p>');

Read more in the baseClass article or the docs.

API

Array

every
filter
forEach (alias: each)
indexOf
map
pop
push
reduce
reduceRight
reverse
shift
some
unshift

CSS

css

DOM

after
append
before
clone
prepend

DOM/attr

attr
removeAttr

DOM/class

addClass
hasClass
removeClass
toggleClass

DOM/contains

contains

DOM/data

data
prop

DOM/extra

appendTo
empty
remove
replaceWith
text
val

DOM/html

html

Event

on (alias: bind)
off (alias: unbind)
one

Event/ready

ready

Event/trigger

trigger
triggerHandler

NoConflict

noConflict

Selector

$
find
matches

Selector/closest

closest

Selector/extra

children
concat
contents
eq
first
get
parent
siblings
slice

Type

isArray
isFunction

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:

Please note that you can extend the $.fn object, just like jQuery Plugins.

Feel free to open an issue 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 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:

git clone [email protected]: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:

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:

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 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:

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 in your browser. You can also clone this repo, and run the tests locally with jsdom (using npm test). Run npm run test:bs to run the tests in real browsers using BrowserStack.

Credits

Many thanks to these sources of inspiration:

Thanks to the jsDelivr Open Source CDN for hosting DOMtastic.

Thanks to BrowserStack for their real device cloud.

License

MIT

More Repositories

1

awesome-dotfiles

A curated list of dotfiles resources.
8,206
star
2

reveal-md

reveal.js on steroids! Get beautiful reveal.js presentations from any Markdown file
JavaScript
3,365
star
3

programming-principles

Categorized overview of programming principles & design patterns
2,424
star
4

knip

βœ‚οΈ Find unused files, dependencies and exports in your JavaScript and TypeScript projects. Knip it before you ship it!
TypeScript
1,842
star
5

dotfiles

Dotfiles for macOS
Shell
983
star
6

dyson

Node server for dynamic, fake JSON.
JavaScript
832
star
7

awesome-newsletters

The best (weekly) newsletters
379
star
8

component-styleguide

Simple styleguide framework
JavaScript
122
star
9

Automated-SPA-Testing

Automated unit & functional testing for web applications
105
star
10

responsive-web-apps

Building Responsive Web Applications
JavaScript
63
star
11

grunt-release-it

Interactive release task for Git repositories. Optionally release a build to distribution/component repository.
JavaScript
48
star
12

versionify

Browserify transform to replace placeholder with package version
JavaScript
33
star
13

react-redux-demo

Fun Fair
JavaScript
30
star
14

baseplate

The baseplate project provides excellent workflow & tooling to develop, build, and test non-trivial SPAs.
JavaScript
24
star
15

bron

πŸƒβ€β™‚οΈ Fast & tiny test runner for Node.js
JavaScript
18
star
16

frameground

Compare JavaScript Frameworks. Please share your knowledge!
JavaScript
17
star
17

dyson-generators

Fake data generators, used by dyson and dyson-image
JavaScript
17
star
18

dyson-demo

Demo package for dyson
JavaScript
14
star
19

requirejs-handlebars

Simple Handlebars plugin for RequireJS
JavaScript
13
star
20

precompiled-templates

Performance, footprint and configuration of template engines and precompiled templates
JavaScript
12
star
21

ts-morph-helpers

Helpers for ts-morph
TypeScript
12
star
22

component-styleguide-example

Example for component-styleguide
CSS
9
star
23

DuckJS

Tiny and powerful module loader to lazy load HTML+CSS+JS
JavaScript
8
star
24

benchrunner

Benchmark Suite Runner for benchmark.js
JavaScript
8
star
25

sandbox

Source files for sandbox.webpro.nl (offline)
JavaScript
6
star
26

dyson-image

JavaScript
6
star
27

webpro.nl

Source code of webpro.nl
Astro
6
star
28

doxstrap

Yet another documentation generator
HTML
5
star
29

vars

Common patterns in Vue, Angular, React and Svelte
JavaScript
5
star
30

parse-openapi

OpenAPI v3 parser
TypeScript
5
star
31

nx-tsc

Nx executor to type-check project source files using `tsc --noEmit`
JavaScript
5
star
32

hyte

HYbrid TEmplating for the browser and Node
JavaScript
4
star
33

Websites-vs-Web-Applications

Responsive Adaptive Rainwebs FTW!
4
star
34

release-it-monorepo

4
star
35

github-pages-example

GitHub Pages Example
3
star
36

bookstore

Simple application to learn GraphQL and Next.js.
JavaScript
3
star
37

markdown-rambler

Yet another opinionated & powerful static site generator.
TypeScript
3
star
38

bump-file

Bump JSON files (e.g. package.json and friends)
JavaScript
3
star
39

openapi-parser

OpenAPI v3 parser
TypeScript
2
star
40

fix-sourcemaps

Fix sources and file in sourcemaps
JavaScript
2
star
41

jaguarundi

Ant build script to optimize and version Javascript, CSS, and HTML files
JavaScript
2
star
42

requirejs-hogan

Simple Hogan plugin for RequireJS
JavaScript
2
star
43

requirejs-dust

Simple Dust plugin for RequireJS
JavaScript
2
star
44

deprecated-obj

Compares deprecations against a configuration object, and returns a compliant object and violations
JavaScript
2
star
45

DOMtastic-release

JavaScript
1
star
46

is-subdir

Check if a directory is a subdirectory
JavaScript
1
star
47

SpringbokJS

Installs modules (traditional object or AMD-style) based on HTML attributes.
JavaScript
1
star
48

last-publish

Get the date of the last published version of a package in the npm registry
JavaScript
1
star