! Deprecated - further development will be done on https://codeberg.org/codeandcreate/sApi !
A minimalistic javascript api: The core is a little javascript that can extend itself with other objects or functions by calling $s.extend()
. If a extention should be packed within the minifing, it must be just placed into sApi_modules.
Version | Info |
---|---|
202203.01 | Sync with internal version. Mostly bugfixes |
202112.01 | Init for bundled sApi_modules, bugfix for $s.require.object() |
202012.01 | First public version of sApi, based on smdQS/smdApi from Schwäbisch Media Digital |
202106.01 | Some little fixes |
- extend() - the core functionality
$s.extend({
_objectReady: false, //optional if a function wants to check if init was called...
myExtention: {
myFunction: function(param)
{
// Just a sample how to check if i'm ready...
if (this._objectReady !== false) {
//...
}
},
init: function()
{
// some stuff i want to execute in the moment this object will be added to sApi
}
}
});
- onApiReady() - checks if $s has an extention loaded
$s.onApiReady("myExtention", function()
{
$s.myExtention.myFunction("something");
});
Also works with "myExtention.subExtention" if needed.
- ajax() call:
$s.ajax({
url: "/testscript.php", //required
method: "GET",
data: {},
callback: function( returnData ) { //required
console.log(returnData);
},
errorCallback: function( XMLHttpRequest ) {
console.log(XMLHttpRequest);
}
});
- ready() - Execute something on document ready:
$s.ready(function() {
console.log("document is ready");
}
- require.js() - load an other js:
$s.require.js("/js/somejsfile.js", function() {
console.log("js file is loaded.");
}
- require.css() - load an other css:
$s.require.css("/css/somecssfile.css", function() {
console.log("css file is loaded.");
}
- require.object() - waits till a javascript object (outside of sApi) is loaded
$s.require.object(
"javascriptObjectName"
function()
{
// some callback stuff
},
"optionalListenerName" // if param is not set, there runs a time in background to wait for javascriptObjectName.
);
- shortcut for document.querySelectorAll():
let myNode = $s.qs(".classOfMyNode");
- working with a array of nodes:
var aListOfNodes = $s.qs(".btn");
if (aListOfNodes !== null) {
var isAList = aListOfNodes.isList;
//...
aListOfNodes.forEach(function(oneOfThisNodes, index, array)
{
oneOfThisNodes.removeAttribute("onclick");
oneOfThisNodes.addEventListener("click", function()
{
console.log("You have clicked on the button with the index " + index);
});
});
}
If the javascript variable sApi_jsHost is set, $s.ajax() and $s.require.js() uses it as hostname to call all requests to. If a url has already a hostname the variable is ignored.
The default minifing is done by packer (http://dean.edwards.name/packer/). To make own minified build either install yui compressor or place the packer php file from http://joliclic.free.fr/php/javascript-packer/en/ into tools/packer.
To pack (and optionally minify) sApi: bash build.sh sApi.js
This version includes a forked version of docReady (https://github.com/jfriend00/docReady)
Matthias Weiß