JavaScript: Difference between revisions
No edit summary |
|||
Line 128: | Line 128: | ||
Packages which run in the browser and may be useful for developing web applications. | Packages which run in the browser and may be useful for developing web applications. | ||
Note that some of these may overlap with the NodeJS page. | Note that some of these may overlap with the NodeJS page. | ||
===lerp, clamp=== | |||
<syntaxhighlight lang="bash"> | |||
npm i lerp clamp | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="javascript"> | |||
Math.lerp = require("lerp"); | |||
Math.clamp = require("clamp"); | |||
</syntaxhighlight> | |||
===pako=== | ===pako=== | ||
[https://github.com/nodeca/pako pako github]<br> | [https://github.com/nodeca/pako pako github]<br> | ||
Line 133: | Line 145: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
npm install pako | npm install pako | ||
</syntaxhighlight> | |||
===url-join=== | |||
Basically <code>path.join</code> for the browser.<br> | |||
<syntaxhighlight lang="bash"> | |||
npm install url-join | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 16:09, 23 January 2020
This page is a mostly about browser-based JavaScript or ECMAScript usage and interaction with the HTML DOM (window). For server and desktop application JavaScript usage, please see the NodeJS page.
Usage
Canvas
Video
Regular Expressions (Regex)
var myRegex = /(\d+),(\d+)/;
var myStr = "124,52";
var match = myStr.match(myRegex);
// Captures
console.log(match[1], match[2]);
console.table(match);
Classes
Traditionally, classes are done using functions in JavaScript.
function Rectangle(height, width) {
this.height = height;
this.width = width;
}
// To extend some Shape class
Rectangle.prototype = Object.create(Shape.prototype);
// To add to the prototype
Object.assign(Rectangle.prototype, {
constructor: Rectangle,
getSize: function() {
return this.height * this.width;
}
});
Mozilla Reference
ES2015 adds syntax for classes in JavaScript.
class Rectangle extends Shape {
constructor(height, width) {
this.height = height;
this.width = width;
}
getSize() {
return this.height * this.width;<br />
}
}
Compilation
Webpack
Babel
Websockets
How to use Websockets
Getting Started
let ws = new WebSocket(this.SERVER_URL);
ws.onopen = function(event) {
console.log("Websocket opened");
ws.send("Hi");
};
ws.onmessage = function(event) {
console.log("message received");
console.log(event.data);
};
ws.onclose = function() {
console.log("WS Closed");
};
Data Structures
JavaScript traditionally has arrays and objects (hashmap) data structures.
ES2015 (ES6) adds several collections including: Map, Set, WeakMap, WeakSet
ES6 Collections
Arrays
let arr = [1,2,3];
// Map
arr.map(x => x > 2); // [false, false, true]
// Reduce or Fold
// Note that if you do not provide an initial accumulator,
// then the first element will be your accumulator
// I.e. the first call to your function will be (arr[0], arr[1])
arr.reduce((acc, x) => acc + x, 0); // 6
Objects
Objects are maps in JavaScript. They are typically implemented as hashmaps by the JS engine.
Note that you can only use numbers and strings as keys.
let my_map = {};
my_map["my_key"] = "my_value";
"my_key" in my_map;
// Loop over keys
for (let key in a) {
console.log("Key:", key);
}
Map
Set
WeakMap
Unlike map, weakmap holds weak references to its keys. This allows keys to be garbage collected when no reference to it remains. Note that once keys are garbage collected, they are also removed from the weakmap since you can no longer access them. You can not iterate through a weakmap.
WeakSet
Modules
Getting Started
Useful Packages
Packages which run in the browser and may be useful for developing web applications. Note that some of these may overlap with the NodeJS page.
lerp, clamp
npm i lerp clamp
Math.lerp = require("lerp");
Math.clamp = require("clamp");
pako
pako github
"zlib port to javascript, very fast!"
npm install pako
url-join
Basically path.join
for the browser.
npm install url-join