mirror of
https://github.com/JeremyLikness/vanillajs-deck
synced 2024-11-14 17:44:56 +00:00
What's new with js
This commit is contained in:
parent
dad9a93078
commit
2086a20e3c
41
pwa.js
41
pwa.js
@ -33,7 +33,7 @@ class Pwa {
|
|||||||
* Cache version
|
* Cache version
|
||||||
* @type {number}
|
* @type {number}
|
||||||
*/
|
*/
|
||||||
this.CACHE_VERSION = 1.2;
|
this.CACHE_VERSION = 1.3;
|
||||||
/**
|
/**
|
||||||
* Pre-emptive files to cache
|
* Pre-emptive files to cache
|
||||||
* @type {string[]}
|
* @type {string[]}
|
||||||
@ -181,27 +181,28 @@ class Pwa {
|
|||||||
this.scope.addEventListener('fetch', event => {
|
this.scope.addEventListener('fetch', event => {
|
||||||
event.respondWith(
|
event.respondWith(
|
||||||
caches.open(this.CACHE_NAME).then(async cache => {
|
caches.open(this.CACHE_NAME).then(async cache => {
|
||||||
if (!event.request.url.startsWith("http://localhost")) {
|
if (event.request.url.startsWith("http://localhost")) {
|
||||||
const response = await cache.match(event.request);
|
return fetch(event.request.clone());
|
||||||
if (response) {
|
}
|
||||||
// found it, see if expired
|
const response = await cache.match(event.request);
|
||||||
const headers = response.headers.entries();
|
if (response) {
|
||||||
let date = null;
|
// found it, see if expired
|
||||||
for (let pair of headers) {
|
const headers = response.headers.entries();
|
||||||
if (pair[0] === 'date') {
|
let date = null;
|
||||||
date = new Date(pair[1]);
|
for (let pair of headers) {
|
||||||
break;
|
if (pair[0] === 'date') {
|
||||||
}
|
date = new Date(pair[1]);
|
||||||
}
|
break;
|
||||||
if (!date) {
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
const age = parseInt(((new Date().getTime() - date.getTime()) / 1000).toString());
|
|
||||||
const ttl = this.getTTL(event.request.url);
|
|
||||||
if (ttl === null || (ttl && age < ttl)) {
|
|
||||||
return response;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!date) {
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
const age = parseInt(((new Date().getTime() - date.getTime()) / 1000).toString());
|
||||||
|
const ttl = this.getTTL(event.request.url);
|
||||||
|
if (ttl === null || (ttl && age < ttl)) {
|
||||||
|
return response;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// not found or expired, fresh request
|
// not found or expired, fresh request
|
||||||
return fetch(event.request.clone()).then(resp => {
|
return fetch(event.request.clone()).then(resp => {
|
||||||
|
@ -2,25 +2,20 @@
|
|||||||
<h1>Arrow Functions (Gosinta)</h1>
|
<h1>Arrow Functions (Gosinta)</h1>
|
||||||
<pre>
|
<pre>
|
||||||
var solarsystem = {
|
var solarsystem = {
|
||||||
planets: ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter',
|
planets: ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto (?)'],
|
||||||
'Saturn', 'Uranus', 'Neptune', 'Pluto (?)'],
|
|
||||||
showPlanets: function() {
|
showPlanets: function() {
|
||||||
this.planets.forEach(function(planet, idx) {
|
this.planets.forEach(function(planet, idx) {
|
||||||
console.log(this.planets[idx]);
|
console.log(this.planets[idx]);});
|
||||||
})
|
}};
|
||||||
}
|
|
||||||
};
|
|
||||||
solarsystem.showPlanets(); // crash! ⛔
|
solarsystem.showPlanets(); // crash! ⛔
|
||||||
</pre>
|
</pre>
|
||||||
<pre class="appear">
|
<pre class="appear">
|
||||||
var solarsystem = {
|
var solarsystem = {
|
||||||
planets: ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter',
|
planets: ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto (?)'],
|
||||||
'Saturn', 'Uranus', 'Neptune', 'Pluto (?)'],
|
|
||||||
showPlanets: function() {
|
showPlanets: function() {
|
||||||
this.planets.forEach((planet, idx) => {
|
this.planets.forEach((planet, idx) => {
|
||||||
console.log(this.planets[idx]);
|
console.log(this.planets[idx]);});
|
||||||
})
|
}};
|
||||||
}
|
|
||||||
};
|
|
||||||
solarsystem.showPlanets(); // success! 🌍
|
solarsystem.showPlanets(); // success! 🌍
|
||||||
</pre>
|
</pre>
|
||||||
|
<next-slide>130-string-power</next-slide>
|
13
slides/130-string-power.html
Normal file
13
slides/130-string-power.html
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<title>String Power</title>
|
||||||
|
<h1>String Power</h1>
|
||||||
|
<pre>
|
||||||
|
const code = "Pure JavaScript and clean code make great apps";
|
||||||
|
</pre>
|
||||||
|
<pre class="appear">
|
||||||
|
if (code.startsWith("Pure JavaScript") &&
|
||||||
|
code.includes("clean code")) {
|
||||||
|
console.log(`${code} is ${code.endsWith("great apps")}`);
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
<pre class="appear">"Pure JavaScript and clean code make great apps is true"</pre>
|
||||||
|
<next-slide>140-spread-operator</next-slide>
|
21
slides/140-spread-operator.html
Normal file
21
slides/140-spread-operator.html
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<title>The Spread Operator</title>
|
||||||
|
<h1>The Spread Operator</h1>
|
||||||
|
<pre>
|
||||||
|
const list = [1,1,2,3,5];
|
||||||
|
const bigger_list = [...list, 8, 13];
|
||||||
|
// [1, 1, 2, 3, 5, 8, 13];
|
||||||
|
</pre>
|
||||||
|
<pre class="appear">
|
||||||
|
const fn = (x, y, z) => x + y + z;
|
||||||
|
fn(bigger_list);
|
||||||
|
// "1,1,2,3,5,8,13ndefinedundefined" ([1,1,2,3,5,8,13] + undefined + undefined)
|
||||||
|
fn(...bigger_list);
|
||||||
|
// 4 (1 + 1 + 2)
|
||||||
|
</pre>
|
||||||
|
<pre class="appear">
|
||||||
|
const src = { foo: "bar" };
|
||||||
|
const cpy = { ...src }; // { foo: "bar" }
|
||||||
|
const tgt = { ...src, bar: "foo" }
|
||||||
|
// { foo: "bar", bar: "foo" }
|
||||||
|
</pre>
|
||||||
|
<next-slide>150-destructuring</next-slide>
|
21
slides/150-destructuring.html
Normal file
21
slides/150-destructuring.html
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<title>Destructuring</title>
|
||||||
|
<h1>Destructuring</h1>
|
||||||
|
<pre>
|
||||||
|
var [x,y] = [1,2];
|
||||||
|
// x=1, y=2
|
||||||
|
[x,y] = [y,x];
|
||||||
|
// x=2, y=1
|
||||||
|
</pre>
|
||||||
|
<pre class="appear">
|
||||||
|
const obj = { foo: "bar", bar: "foo" };
|
||||||
|
const {foo: f, bar} = obj;
|
||||||
|
// f = "bar", bar = "foo";
|
||||||
|
</pre>
|
||||||
|
<pre class="appear">
|
||||||
|
const twoRandos = () => [Math.random(), Math.random()];
|
||||||
|
const randos = twoRandos();
|
||||||
|
// [0.45235454, 0.6455656]
|
||||||
|
const [random1, random2] = twoRandos();
|
||||||
|
// random1 = 0.45235454, random2 = 0.6455656
|
||||||
|
</pre>
|
||||||
|
<next-slide>160-classes</next-slide>
|
16
slides/160-classes.html
Normal file
16
slides/160-classes.html
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<title>Classes</title>
|
||||||
|
<h1>Classes</h1>
|
||||||
|
<pre>
|
||||||
|
class shape {
|
||||||
|
constructor(sides) {
|
||||||
|
this._sides = sides;
|
||||||
|
}
|
||||||
|
get sides() { return this._sides; }
|
||||||
|
static makeShape(sides) {
|
||||||
|
return new shape(sides);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const triangle = shape.makeShape(3);
|
||||||
|
// triangle.sides = 3
|
||||||
|
</pre>
|
||||||
|
<next-slide>165-classes-2</next-slide>
|
15
slides/165-classes-2.html
Normal file
15
slides/165-classes-2.html
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<title>Classes (2)</title>
|
||||||
|
<h1>Classes</h1>
|
||||||
|
<pre>
|
||||||
|
class square extends shape {
|
||||||
|
constructor() {
|
||||||
|
super(4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const sq = new square();
|
||||||
|
// square.sides = 4;
|
||||||
|
|
||||||
|
const hex = sq.makeShape(6);
|
||||||
|
// error: static method isn't inherited
|
||||||
|
</pre>
|
Loading…
Reference in New Issue
Block a user