0.4.4 • Published 6 years ago

node-zam v0.4.4

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

Overview/Philosophy

A small toolset that simplifies DOM traversal, event handling, and Ajax.

This library was created with one goal in mind — to stay close to vanilla.

Import

<script src="https://cdn.jsdelivr.net/gh/roecrew/zam@0.4.4/zam.min.js"></script>
npm install node-zam

Speed Tests

Event binding

With 2,500 div tags with events mouseover and mouseleave.

Zam is 5.38 times faster than jQuery.

Run 1Run 2Run 3Run 4Run 5AverageLibrary
8ms8ms8ms10ms8ms8.4mszam
42ms50ms42ms50ms42ms45.2msjQuery

With 10,000 div tags with events mouseover and mouseleave.

Zam is 7.09 times faster than jQuery.

Run 1Run 2Run 3Run 4Run 5AverageLibrary
20ms21ms21ms21ms22ms21mszam
164ms160ms153ms122ms146ms149msjQuery

With 50,000 div tags events mouseover and mouseleave.

Zam is 6.74 times faster than jQuery.

Run 1Run 2Run 3Run 4Run 5AverageLibrary
117ms114ms106ms112ms111ms112mszam
713ms766ms732ms772ms794ms755.4msjQuery

Setting CSS

jsPerf findings https://jsperf.com/zam-vs-jquery

With 2,500 div tags setting all divs to font-size: 40px.

Zam is 1.47 times faster than jQuery.

Run 1Run 2Run 3Run 4Run 5AverageLibrary
10ms9ms9ms10ms11ms9.8mszam
14ms15ms14ms15ms14ms14.4msjQuery

With 10,000 div tags setting all divs to font-size: 40px.

Zam is 1.62 times faster than jQuery.

Run 1Run 2Run 3Run 4Run 5AverageLibrary
38ms30ms35ms26ms29ms31.6mszam
49ms48ms49ms52ms58ms51.2msjQuery

With 50,000 div tags setting all divs to font-size: 40px.

Zam is 1.41 times faster than jQuery.

Run 1Run 2Run 3Run 4Run 5AverageLibrary
170ms160ms166ms128ms170ms158.8mszam
219ms236ms205ms201ms255ms223.2msjQuery

With 250,000 div tags setting all divs to font-size: 40px.

jQuery errors out. Zam doesn't.

Run 1Run 2Run 3Run 4Run 5AverageLibrary
1496ms1484ms1471ms1480ms1478ms1481.8mszam
*****unknownjQuery

* 'Maximum call stack size exceeded'

Methods

.e(selector)

String 'selector' -> optional | If undefined then last used selector is used.

Returns static NodeList

.index(element)

DOMElement 'element' -> required

Returns index

.html(html, selector)

String 'html' -> required

String or DOMElement 'selector' -> optional | If undefined then last used selector (String) is used.

Returns nothing

.on(events, selector, func)

String 'events' -> required

String 'selector' -> required

Function or String 'func' -> required

Returns nothing

.off(events, selector, func)

String 'events' -> required

String 'selector' -> required

Function or String 'func' -> required

Returns nothing

.css(declarations, selector)

String 'declarations' -> required

String or DOMElement 'selector' -> optional | If undefined then last used selector (String) is used.

Returns nothing

.each(selector, callback)

String 'selector' -> optional | If undefined then last used selector is used.

Function 'callback' -> required

Returns nothing

.addStyle(innerHTML, id)

String 'innerHTML' -> required

String 'id' -> required

Returns nothing

.removeStyle(id)

String 'id' -> required

Returns nothing

.ajax(options)

Object 'options' -> required

Returns Promise

.router(routes)

Object 'routes' -> required

See the example below to get a better idea of how .router() works.

Example

For more examples visit http://zamjs.com/examples

Router - Frontend

<html>
  <head>
    <style>
      .section {
        position: absolute;
        left 0;
        top: 60px;
        width:100%
        height: calc(100vh - 60px);
      }
      .bar-tab {
        width: 100%;
        height: 60px;
        display: flex;
        jusitify-content: center;
        align-items: center;
      }
    </style>
  </head>
  <body>
  <div class="bar-tab">
    <div id="home-tab">
      HOME
    </div>
    <div id="stuff-tab">
      STUFF
    </div>
    <div id="about-tab">
      ABOUT
    </div>
  </div>
  <div class="section" id="home">
      ... some content ...
    </div>
    <div class="section" id="stuff">
      ... some content ...
    </div>
    <div class="section" id="about">
      ... some content ...
    </div>
  </div>
<script src="https://cdn.jsdelivr.net/gh/roecrew/zam@0.4.1/zam.js"></script>
<script>
var zam = new Zam();
zam.router({
    'home-tab': {view: '#home', 'display': 'flex'}, //the first route will always be the root route. i.e www.somesite.com/
    'stuff-tab': {view: '#stuff', 'display': 'flex'},
    'about-tab': {view: '#about', 'display': 'flex'}
})
</script>
</body>
</html>

Router - Backend

const http = require("http");
const fs = require("fs");
const express = require("express");
const app = express();

app.get("/*", function(req, res) {
  res.sendFile(__dirname + "/dist/home.html");
});

const httpServer = http.createServer(app);
httpServer.listen(80);
0.4.4

6 years ago

0.4.3

6 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.3.8

6 years ago

0.3.6

6 years ago

0.3.5

6 years ago

0.3.2

6 years ago

0.3.1

6 years ago