deepCompare
performs a deep comparison of two objects. It automatically unwraps JS Map
s, Set
s, and ImmutableJS objects.
deepCompare(left, right)
// Will output:
// {
// isEqual: false,
// A copy-pasteable useWhyDidYouUpdate hook, adopted from the old & good usehooks.com (http://web.archive.org/web/20230203011511/https://usehooks.com/useWhyDidYouUpdate/). | |
// | |
// This hook will log whenever a component rerenders – and will print the props (or any other values | |
// you passed into it) that have changed between the rerenders. | |
// | |
// Usage: | |
// | |
// function MyComponent(props) { | |
// useWhyDidYouUpdate('MyComponent', props) | |
// |
Here’s how to make api.my-app.com
available under my-app.com/api
, using CloudFront or Cloudflare.
If both my-app.com
and api.my-app.com
are hosted in AWS, you can route requests to these instances using the CloudFront CDN.
Here’s what you’ll need to do:
Cloudflare is a web-performance-and-security-as-a-service company.
To configure your web app to run faster, you need to:
I hereby claim:
To claim this, I am signing this object:
(Для канала про бизнес: @iamakulov_learning_biz)
Депозиты. Доходность на февраль 2018 года — 1...2% годовых. Это примерно равно или ниже инфляции доллара. Вклады чаще неотзывные (то есть забрать просто так не получится). На короткие вклады процент меньше, плюс нужно платить подоходный налог (если вклад до двух лет).
На примере выпуска №244:
In 2017, Chrome, Firefox and Safari added support for passive event listeners. They help to make scrolling work smoother and are enabled by passing {passive: true}
into addEventListener()
.
The explainer mentions that passive: true
works for wheel and touch events. I practically analyzed when passive: true
actually helps:
Event | Works better with passive: true |
Is passive by default |
---|---|---|
wheel ¹ |
Yes (Chrome), No (Firefox) | No (Chrome), No (Firefox) |
touchstart |
Yes (Chrome), ?² (Firefox) | Yes (Chrome), ?² (Firefox) |
// This import should be dropped in production, | |
// because it's very large and contains development data | |
// (like locales for all languages). | |
import load from './very.large' | |
export const main = () => { | |
let data = {} | |
if (process.env.NODE_ENV !== 'development') { | |
data = load() |
This is an example to my article “How webpack’s ContextReplacementPlugin works”
You have the moment.js library, and you have a dynamic import:
require('./locale/' + name + '.js')
This is an example to my article “How webpack’s ContextReplacementPlugin works”
Each time webpack encounters a dynamic import like this:
require('./locale/' + name + '.js')