Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
a small, simple, and fast DOM creation utility
Writing HTML is stupid. It's slow, messy, and should not be done in JavaScript.
The best way to make DOM elements is via document.createElement, but making lots of DOM with it is tedious.
crel.js makes the process easier.
Inspiration was taken from https://github.com/joestelmach/laconic, but crel wont screw with your bad in-DOM event listeners, and is smaller, faster, etc...
Signature:
crel(tagName/dom element [, attributes, child1, child2, childN...])
where childN
may be
textNode
,null
, which will be ignored, orArray
containing any of the aboveFor browserify:
npm i crel
var crel = require('crel');
For standard script tag style:
<script src="crel.min.js"></script>
To make some DOM:
Example:
var element = crel('div',
crel('h1', 'Crello World!'),
crel('p', 'This is crel'),
crel('input', {type: 'number'})
);
// Do something with 'element'
You can create attributes with dashes, or reserved keywords, but using strings for the objects keys:
crel('div', {'class':'thing', 'data-attribute':'majigger'});
You can pass an already available element to crel, and it will be the target of the attributes/child elements
crel(document.body,
crel('h1', 'Page title')
)
You can assign child elements to variables during creation:
var button,
wrapper = crel('div',
button = crel('button')
);
You could probably use crel to rearrange existing dom..
crel(someDiv,
crel(someOtherDiv, anotherOne)
)
But don't.
If you are using crel in an environment that supports Proxies, you can also use the new API:
var crel = require('crel').proxy;
var element = crel.div(
crel.h1('Crello World!'),
crel.p('This is crel'),
crel.input({type: 'number'})
);
Crel works in everything (as far as I know), but of course...
If you require this library to work in IE7, add the following after declaring crel.
var testDiv = document.createElement('div'),
testLabel = document.createElement('label');
testDiv.setAttribute('class', 'a');
testDiv['className'] !== 'a' ? crel.attrMap['class'] = 'className':undefined;
testDiv.setAttribute('name','a');
testDiv['name'] !== 'a' ? crel.attrMap['name'] = function(element, value){
element.id = value;
}:undefined;
testLabel.setAttribute('for', 'a');
testLabel['htmlFor'] !== 'a' ? crel.attrMap['for'] = 'htmlFor':undefined;
less than 1K minified about 500 bytes gzipped
crel is fast. Depending on what browser you use, it is up there with straight document.createElement calls.
http://jsperf.com/dom-creation-libs/10
MIT
FAQs
A small, simple, and fast DOM creation utility
We found that crel demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.