Difference between revisions of "Short Notes on JS"
From PaskvilWiki
| Line 1: | Line 1: | ||
| + | == Simple Mapping == | ||
| + | |||
| + | <pre> | ||
| + | let a = {a: 1, b: 2, c: 3}; | ||
| + | |||
| + | Object.keys(a).map(i => console.log(i)); | ||
| + | > a | ||
| + | > b | ||
| + | > c | ||
| + | >> [undefined, undefined, undefined] | ||
| + | |||
| + | a = [1, 2, 3]; | ||
| + | a.map((i, k) => console.log(i, k)); | ||
| + | > 1 0 | ||
| + | > 2 1 | ||
| + | > 3 2 | ||
| + | >> [undefined, undefined, undefined] | ||
| + | |||
| + | // fill() is required here, as it materializes the Array; | ||
| + | // otherwise, Array(8) would be treated as empty array by map() | ||
| + | Array(8).fill().map((_, i) => i * i); | ||
| + | >> [0, 1, 4, 9, 16, 25, 36, 49] | ||
| + | |||
== Fetch Patterns == | == Fetch Patterns == | ||
Latest revision as of 21:12, 11 December 2020
Simple Mapping
let a = {a: 1, b: 2, c: 3};
Object.keys(a).map(i => console.log(i));
> a
> b
> c
>> [undefined, undefined, undefined]
a = [1, 2, 3];
a.map((i, k) => console.log(i, k));
> 1 0
> 2 1
> 3 2
>> [undefined, undefined, undefined]
// fill() is required here, as it materializes the Array;
// otherwise, Array(8) would be treated as empty array by map()
Array(8).fill().map((_, i) => i * i);
>> [0, 1, 4, 9, 16, 25, 36, 49]
== Fetch Patterns ==
<pre>fetch("url", { options... })
.then((response) => {
if (!response.ok)
throw new Error('Network response was not ok');
return response.json(); // or response.blob(), etc.
})
.then((data) => {
// do something with the data received
})
.catch((error) => {
console.error('Failed to fetch:', error);
});
Environment Variables in WebPack
WebPack does not have access to environment (duh), so you need to "bake" any relevant environment variables in the WebPack during build:
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
STAGE: JSON.stringify(process.env.STAGE),
// ...
}
})
Debugging in VS Code on Linux
- install Debugger for Chrome extension
- open the launch.json file, and edit as follows:
- custom profile - user-data-dir - is used, to make sure you have clean (enough) slate
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"runtimeExecutable": "/usr/bin/chromium-browser",
"runtimeArgs": ["--remote-debugging-port=9222", "--user-data-dir=/home/user/tmp/remote-profile"],
"name": "Launch Chrome against localhost",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}"
}
]
}
- run the npm (the port used should correspond to the url key above)
- hit debug in VS Code, add breakpoints, etc., and enjoy!
- this will actually open new browser window, as subwindow of VS Code, neat!