ΠΠ°Π²Π½ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Ρ Π²Π°ΠΌΠΈ ΠΎ serverless, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ serverless ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°
β GitHub Trending #3
- https://github.com/cristianbote/goober - π₯ goober, a less than 1KB πcss-in-js alternative with a familiar API
- https://github.com/jgraph/mxgraph - mxGraph is a fully client side JavaScript diagramming library ( draw.io is our production-grade example that demonstrates extending the functionality of this library and how to deploy it in a secure, scalable manner. The sources to draw.io are also available.)
- https://github.com/aws-amplify/amplify-cli - A CLI toolchain for simplifying serverless web and mobile development.
- https://github.com/ngneat/transloco - π π The internationalization (i18n) library for Angular https://transloco.netlify.com/
- https://github.com/swimlane/ngx-charts π Declarative Charting Framework for Angular https://swimlane.github.io/ngx-charts/
- https://github.com/nrwl/nx - Extensible Dev Tools for Monorepos https://nx.dev
- https://github.com/cobidev/simplefolio - A clean, beautiful and responsive portfolio template for Developers! https://simplfolio.netlify.com
- https://github.com/microsoft/TypeScript-Node-Starter - A starter template for TypeScript and Node with a detailed README describing how to use the two together.
- https://github.com/saket/Press - A cross-platform markdown editor written in Kotlin Multiplatform (work in progress)
- https://github.com/cristianbote/goober - π₯ goober, a less than 1KB πcss-in-js alternative with a familiar API
- https://github.com/jgraph/mxgraph - mxGraph is a fully client side JavaScript diagramming library ( draw.io is our production-grade example that demonstrates extending the functionality of this library and how to deploy it in a secure, scalable manner. The sources to draw.io are also available.)
- https://github.com/aws-amplify/amplify-cli - A CLI toolchain for simplifying serverless web and mobile development.
- https://github.com/ngneat/transloco - π π The internationalization (i18n) library for Angular https://transloco.netlify.com/
- https://github.com/swimlane/ngx-charts π Declarative Charting Framework for Angular https://swimlane.github.io/ngx-charts/
- https://github.com/nrwl/nx - Extensible Dev Tools for Monorepos https://nx.dev
- https://github.com/cobidev/simplefolio - A clean, beautiful and responsive portfolio template for Developers! https://simplfolio.netlify.com
- https://github.com/microsoft/TypeScript-Node-Starter - A starter template for TypeScript and Node with a detailed README describing how to use the two together.
- https://github.com/saket/Press - A cross-platform markdown editor written in Kotlin Multiplatform (work in progress)
ΠΡΡΠ·ΡΡ, ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΡΠΎ-ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² IDE? Π’ΡΠ΅ΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ, Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π»ΠΈ, ΡΠ΄ΠΎΠ±Π½ΠΎ Π»ΠΈ? ΠΠΎΠ»Π΅Π·Π½ΠΎ Π»ΠΈ? ΠΠ°Π΅Ρ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΎΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π½Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΡΠ°ΡΠ΅Π½ΠΎ Π² IDE?
ΠΠΎΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΡΡΠ΅ΠΊΠ΅ΡΠΎΠ²:
https://wakatime.com/
https://github.com/wakatime/wakatime
#ide #tools
ΠΠΎΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΡΡΠ΅ΠΊΠ΅ΡΠΎΠ²:
https://wakatime.com/
https://github.com/wakatime/wakatime
#ide #tools
WakaTime
WakaTime - Dashboards for developers
Open source IDE plugins for programmers.
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ±ΡΠ°Π»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ
Π²ΠΈΠ΄Π΅ΠΎΠΊΡΡΡΠΎΠ² Π΄Π»Ρ Web ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
β Awesome: ΡΠΏΠΈΡΠΊΠΈ "ΠΏΡΠΈΠΊΠΎΠ»ΡΠ½ΡΡ
" ΡΡΡΠ»ΠΎΠΊ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ°ΠΌ - ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ ΡΠ΅ΠΌΠ° Π½Π° github, Π·Π΄Π΅ΡΡ ΡΠΎΠ±ΡΠ°Π½Ρ ΡΠΏΠΈΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ javascript ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΈΡΠΊΠΎΠ² Π² ΡΡΡΠ»ΠΊΠ΅ ΡΠ½ΠΈΠ·Ρ.
https://github.com/sorrycc/awesome-javascript - π’ A collection of awesome browser-side JavaScript libraries, resources and shiny things.
https://github.com/sindresorhus/awesome-nodejs - β‘οΈ Delightful Node.js packages and resources https://node.cool
https://github.com/standard/awesome-standard - Documenting the explosion of packages in the standard ecosystem! https://standardjs.com
https://github.com/sindresorhus/awesome-electron - Useful resources for creating apps with Electron
https://github.com/parro-it/awesome-micro-npm-packages - A curated list of small, focused npm packages.
https://github.com/feross/awesome-mad-science - Delightful npm packages that make you say "wow, didn't know that was possible!"
https://github.com/kucherenko/awesome-project-questions - list of questions that engineers / architects / managers should ask before the start of a project.
https://github.com/sorrycc/awesome-javascript - π’ A collection of awesome browser-side JavaScript libraries, resources and shiny things.
https://github.com/sindresorhus/awesome-nodejs - β‘οΈ Delightful Node.js packages and resources https://node.cool
https://github.com/standard/awesome-standard - Documenting the explosion of packages in the standard ecosystem! https://standardjs.com
https://github.com/sindresorhus/awesome-electron - Useful resources for creating apps with Electron
https://github.com/parro-it/awesome-micro-npm-packages - A curated list of small, focused npm packages.
https://github.com/feross/awesome-mad-science - Delightful npm packages that make you say "wow, didn't know that was possible!"
https://github.com/kucherenko/awesome-project-questions - list of questions that engineers / architects / managers should ask before the start of a project.
β ΠΡ Ρ Π²Π°ΠΌΠΈ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ, ΡΡΠΎ Π½Π° javascript ΡΠ΅ΡΠ°ΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ: web, backend Π½Π° node.js, mobile Ρ react native ΠΈ Ρ.ΠΏ., Π½ΠΎ Π΅ΡΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠ·Π½Π°Π² ΠΎ ΠΊΠΎΡΠΎΡΡΡ
ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΎΠΌ: "ΠΠ° Π»Π°Π΄Π½ΠΎ, ΡΡΠΎ Π½Π° JavaScript?", Π² ΡΡΠΎ ΠΏΠΎΡΡΠ΅ ΡΠΎΠ±ΡΠ°Π½Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, Π½Π°ΠΏΠΈΡΠ°Π½ΡΠ΅ Π½Π° JS ΠΈΠ· ΡΠ°Π·ΡΡΠ΄Π° "ΠΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ":
https://github.com/mmckegg/notevil - javascript javascript interpreter, useful for running untrusted code safely.
https://www.npmjs.com/package/google-distance - Easily get distance data between locations
https://www.npmjs.com/package/node-jvm - java virtual machine in pure node.js
https://github.com/mattytemple/speak-js - Text-to-Speech in JavaScript
https://github.com/DanielRapp/doppler - detect motion with the doppler effect using only the microphone and speakers
https://www.npmjs.com/package/cylon - JavaScript framework for robotics, drones, and the Internet of Things (IoT) https://cylonjs.com
https://github.com/rwaldron/johnny-five - JavaScript Robotics and IoT programming framework, developed at Bocoup.
https://github.com/mmckegg/notevil - javascript javascript interpreter, useful for running untrusted code safely.
https://www.npmjs.com/package/google-distance - Easily get distance data between locations
https://www.npmjs.com/package/node-jvm - java virtual machine in pure node.js
https://github.com/mattytemple/speak-js - Text-to-Speech in JavaScript
https://github.com/DanielRapp/doppler - detect motion with the doppler effect using only the microphone and speakers
https://www.npmjs.com/package/cylon - JavaScript framework for robotics, drones, and the Internet of Things (IoT) https://cylonjs.com
https://github.com/rwaldron/johnny-five - JavaScript Robotics and IoT programming framework, developed at Bocoup.
ΠΡΡΠ·ΡΡ, ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅ΠΌ!
ΠΡ ΡΠ°Π΄Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ, ΡΡΠΎ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ΅ΠΆΠΈΠΌ #ΠΏΡΡΠ»ΡΡΠ²ΡΡ Π½Π°Π±ΠΈΡΠ°Π΅Ρ ΠΎΠ±ΠΎΡΠΎΡΡ, Ρ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΏΠ»Π°Π½Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π³ΠΎΠ΄! π
ΠΡ Π³ΠΎΡΠΎΠ²Ρ Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΈΠ²Π΅Π½Ρ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Growing Seniorityβ ΡΠΎΡΡΠΎΠΈΡΡΡ ΠΎΠ½ 22 ΡΠ½Π²Π°ΡΡ ΠΈ ΡΠΏΠΈΠΊΠ΅ΡΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π»ΠΈΡΡ ΠΏΡΡΠΌΠΎ ΡΠΊΠ°ΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅:
β©
β©
ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΈΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π½Ρ ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΡΠ·Π½Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ, Π½ΠΎ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΎΠ±ΡΠΎΠ΅ Π΄Π΅Π»ΠΎ β Π²ΡΠ΅ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Ρ ΡΡΠΎΠΉ Π²ΡΡΡΠ΅ΡΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ Π±Π»Π°Π³ΠΎΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠΎΠ½Π΄Ρ ΠΠ»Π°Π³ΠΎΠΌΠ°ΠΉ Π½Π° ΠΎΠ΄Π½Ρ ΠΈΠ· Π±Π»Π°Π³ΠΎΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π° ΠΊΠ°ΠΊΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ β ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΆΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠΊΠΎΡΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅Π±ΡΡΠ° ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠΈΠ½Π°Π»ΠΈΠ·ΠΈΡΡΡΡ ΠΏΠ»Π°Π½Ρ Π½Π° 2020 Π³ΠΎΠ΄. ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π΄ΠΎΠ±ΡΡΠ΅ Π΄Π΅Π»Π° Π²ΠΌΠ΅ΡΡΠ΅ π
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² ΠΈ ΡΡΡΠ»ΠΊΠ° Π½Π° Π±ΠΈΠ»Π΅ΡΡ Π²ΠΎΡ Π·Π΄Π΅ΡΡ.
ΠΡ ΡΠ°Π΄Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ, ΡΡΠΎ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ΅ΠΆΠΈΠΌ #ΠΏΡΡΠ»ΡΡΠ²ΡΡ Π½Π°Π±ΠΈΡΠ°Π΅Ρ ΠΎΠ±ΠΎΡΠΎΡΡ, Ρ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΏΠ»Π°Π½Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π³ΠΎΠ΄! π
ΠΡ Π³ΠΎΡΠΎΠ²Ρ Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΈΠ²Π΅Π½Ρ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Growing Seniorityβ ΡΠΎΡΡΠΎΠΈΡΡΡ ΠΎΠ½ 22 ΡΠ½Π²Π°ΡΡ ΠΈ ΡΠΏΠΈΠΊΠ΅ΡΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π»ΠΈΡΡ ΠΏΡΡΠΌΠΎ ΡΠΊΠ°ΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅:
β©
Martin Chaov, Software Architect @SBTech Ρ ΡΠ΅ΠΌΠΎΠΉ βThe Mythical Senior Developerββ©
Oleksandr Poshtaruk, Senior front-end developer @ITecGurus Ρ ΡΠ΅ΠΌΠΎΠΉ βMentor it, blog it, talk it, record itβΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΈΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π½Ρ ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΡΠ·Π½Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ, Π½ΠΎ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΎΠ±ΡΠΎΠ΅ Π΄Π΅Π»ΠΎ β Π²ΡΠ΅ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Ρ ΡΡΠΎΠΉ Π²ΡΡΡΠ΅ΡΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ Π±Π»Π°Π³ΠΎΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠΎΠ½Π΄Ρ ΠΠ»Π°Π³ΠΎΠΌΠ°ΠΉ Π½Π° ΠΎΠ΄Π½Ρ ΠΈΠ· Π±Π»Π°Π³ΠΎΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π° ΠΊΠ°ΠΊΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ β ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΆΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠΊΠΎΡΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅Π±ΡΡΠ° ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠΈΠ½Π°Π»ΠΈΠ·ΠΈΡΡΡΡ ΠΏΠ»Π°Π½Ρ Π½Π° 2020 Π³ΠΎΠ΄. ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π΄ΠΎΠ±ΡΡΠ΅ Π΄Π΅Π»Π° Π²ΠΌΠ΅ΡΡΠ΅ π
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² ΠΈ ΡΡΡΠ»ΠΊΠ° Π½Π° Π±ΠΈΠ»Π΅ΡΡ Π²ΠΎΡ Π·Π΄Π΅ΡΡ.
Mathrandom
Math.random(): Growing Seniority
We are the community of software engineers connected around JS-based stack of technologies. The main goal is to gather together people and share knowledge between them. We are going to deep dive into interesting areas of information technologies, developmentβ¦
β "ΠΠ΅Π·Π³ΠΎΠ»ΠΎΠ²ΡΠ΅" ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ (Headless CMS) - ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ
ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠ² Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΌΠΈΡΠ΅ Π² ΡΡΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ. ΠΠΎΠΏΡΠ»ΡΡΠ½Π΅ΠΉΡΠ°Ρ Π±Π»ΠΎΠ³ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Wordpress Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΡΠ°ΡΡΡΡ
ΠΎ headless CMS. Drupal ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΡΠ΅Π±Ρ Π½Π°Π·ΡΠ²Π°Π΅Ρ headless CMS. ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠ±Π»Π°ΡΠ½ΡΡ
ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΠΎΡΠΊΡΡΡΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΡΡ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ headless CMS.
Π’Π°ΠΊ Π² ΡΠ΅ΠΌ-ΠΆΠ΅ ΠΈΠ΄Π΅Ρ?
ΠΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠ°Ρ - Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΡΠΎΠΌ ΠΈ API, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ, CMS Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π½Π°Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΊ Π½ΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°.
Π§ΡΠΎ ΡΡΠΎ Π½Π°ΠΌ Π΄Π°Π΅Ρ:
- Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° backend ΠΈ frontend ΡΠ°Π·Π²Π΅Π΄Π΅Π½Ρ Π² ΡΠ°Π·Π½ΡΠ΅ ΡΠ³Π»Ρ ΠΈ ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· API
- ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΡΠ½ΠΈΠΆΠ°Π΅ΡΡΡ
- Frontend ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠΌ
Π§ΡΠΎ Π΅ΡΡΡ Π² node.js Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ?
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² - https://strapi.io/, ΠΎΡΠ΅Π½Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠΈΠΉΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ Π΄Π΅Π»Π°ΡΡ headless CMS.
Π’Π°ΠΊ Π² ΡΠ΅ΠΌ-ΠΆΠ΅ ΠΈΠ΄Π΅Ρ?
ΠΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠ°Ρ - Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΡΠΎΠΌ ΠΈ API, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ, CMS Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π½Π°Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΊ Π½ΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°.
Π§ΡΠΎ ΡΡΠΎ Π½Π°ΠΌ Π΄Π°Π΅Ρ:
- Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° backend ΠΈ frontend ΡΠ°Π·Π²Π΅Π΄Π΅Π½Ρ Π² ΡΠ°Π·Π½ΡΠ΅ ΡΠ³Π»Ρ ΠΈ ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· API
- ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΡΠ½ΠΈΠΆΠ°Π΅ΡΡΡ
- Frontend ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠΌ
Π§ΡΠΎ Π΅ΡΡΡ Π² node.js Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ?
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² - https://strapi.io/, ΠΎΡΠ΅Π½Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠΈΠΉΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ Π΄Π΅Π»Π°ΡΡ headless CMS.
β ΠΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ, ΠΎΡΠΊΡΡΡΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ wiki Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
Π₯ΠΎΡΠΎΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ Ρ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΡΡΠΎΠ²Π½ΡΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ°, ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Π΄ΠΈΠ° ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Π΄Ρ.
Π₯ΠΎΡΠΎΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ Ρ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΡΡΠΎΠ²Π½ΡΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ°, ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Π΄ΠΈΠ° ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Π΄Ρ.
β Π Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅? Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π€Π) - ΡΡΠΎ ΡΠ°Π·Π΄Π΅Π» ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ ΠΈ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ:
f(x) = y
ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°: Π² ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ (stateless). ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π²Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ - ΠΈΠ½Π°ΡΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ (side effect), ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ Π±ΡΡΡ ΡΠΈΡΡΠΎΠΉ (pure function), ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ. ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ-ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π€Π ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΡ (https://en.wikipedia.org/wiki/Lambda_calculus)
Π ΡΡΡΠ»ΠΊΠ°Ρ ΡΠ½ΠΈΠ·Ρ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ awesome functional programming + ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠ½ΠΈΠΆΠΊΡ ΠΏΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠ°ΠΉΠΊΠ°ΠΉΡΠ΅ ΠΏΠΎΡΡ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΎ Π€Π, Π΄ΠΎΠ±Π°Π²Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅.
#ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅_ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
f(x) = y
ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°: Π² ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ (stateless). ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π²Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ - ΠΈΠ½Π°ΡΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ (side effect), ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ Π±ΡΡΡ ΡΠΈΡΡΠΎΠΉ (pure function), ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ. ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ-ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π€Π ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΡ (https://en.wikipedia.org/wiki/Lambda_calculus)
Π ΡΡΡΠ»ΠΊΠ°Ρ ΡΠ½ΠΈΠ·Ρ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ awesome functional programming + ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠ½ΠΈΠΆΠΊΡ ΠΏΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠ°ΠΉΠΊΠ°ΠΉΡΠ΅ ΠΏΠΎΡΡ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΎ Π€Π, Π΄ΠΎΠ±Π°Π²Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅.
#ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅_ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
20 ΡΠΎΠ²Π΅ΡΠΎΠ² ΠΏΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² angular
https://dev.to/rahul626/20-tips-for-angular-performance-2j1d
https://dev.to/rahul626/20-tips-for-angular-performance-2j1d
DEV Community
20 tips for Angular performance(Part 1)
Load Time Performance AOT: As opposed to JIT Compilation where the compilation is done in the brows...
β ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΆΠ°ΡΠ³ΠΎΠ½ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², Π½Π°ΡΠ½Π΅ΠΌ Ρ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π²ΡΠ΅Ρ Π½Π° ΡΠ»ΡΡ Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° (high order function / HOF) - ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄ΡΡΠ³ΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
ΠΡΠΌΠ±Π΄Π° (Lambda) - ΡΡΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΌΠ±Π΄Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ. ΠΡΠΌΠ±Π΄Ρ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
;(
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π² ΡΡΡΠ»ΠΊΠ΅ ΠΏΠΎΠ΄ ΡΡΠ°ΡΡΠ΅ΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° javascript Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅.
#ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅_ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΆΠ°ΡΠ³ΠΎΠ½ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², Π½Π°ΡΠ½Π΅ΠΌ Ρ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π²ΡΠ΅Ρ Π½Π° ΡΠ»ΡΡ Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° (high order function / HOF) - ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄ΡΡΠ³ΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
const filter = (predicate, xs) => xs.filter(predicate)
const is = (type) => (x) => Object(x) instanceof type
filter(is(Number), [0, '1', 2, null]) // [0, 2]
ΠΡΠΌΠ±Π΄Π° (Lambda) - ΡΡΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΌΠ±Π΄Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ. ΠΡΠΌΠ±Π΄Ρ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
;(
function (a) {
return a + 1
})
;(a) => a + 1
const add1 = (a) => a + 1
[1, 2].map((a) => a + 1)
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π² ΡΡΡΠ»ΠΊΠ΅ ΠΏΠΎΠ΄ ΡΡΠ°ΡΡΠ΅ΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° javascript Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅.
#ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅_ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ· ΡΠΈΠΊΠ»Π° "ΠΡΠΎ ΡΡΠΎ Π½Π° javascript?"
Isomorphic git - git, Π½Π°ΠΏΠΈΡΠ°Π½ΡΠΉ Π½Π° javascript. Π Π°Π±ΠΎΡΠ°Π΅Ρ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ ΠΈ Π² node.js. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ , ΡΡΠΎ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠΉ git.
https://github.com/isomorphic-git/isomorphic-git
Isomorphic git - git, Π½Π°ΠΏΠΈΡΠ°Π½ΡΠΉ Π½Π° javascript. Π Π°Π±ΠΎΡΠ°Π΅Ρ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ ΠΈ Π² node.js. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ , ΡΡΠΎ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠΉ git.
https://github.com/isomorphic-git/isomorphic-git
GitHub
GitHub - isomorphic-git/isomorphic-git: A pure JavaScript implementation of git for node and browsers!
A pure JavaScript implementation of git for node and browsers! - isomorphic-git/isomorphic-git
β Π‘ΡΠΎΡΠ½ΠΎ Π² Π½ΠΎΠΌΠ΅Ρ! 18 Π΄Π΅ΠΊΠ°Π±ΡΡ 2019-Π³ΠΎ Π³ΠΎΠ΄Π° Π²ΡΡΠ»Π° 8-Ρ Π²Π΅ΡΡΠΈΡ javascript engine V8:
Performance (size & speed)
- Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ~40% ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ
- ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ built-in fns
JS
- Optional chaining
( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining )
- Nullish coalescing
( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator )
ΠΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅!
Performance (size & speed)
- Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ~40% ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ
- ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ built-in fns
JS
- Optional chaining
const nameLength = db?.user?.name?.length;( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining )
- Nullish coalescing
props.enabled ?? true( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator )
ΠΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅!
β Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ 2 ΡΠ΅ΡΠΌΠΈΠ½Π° ΠΈΠ· ΠΆΠ°ΡΠ³ΠΎΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΡΡΠΎ ΠΌΠΎΠ½ΠΎΠΈΠ΄ ΠΈ ΠΌΠΎΠ½Π°Π΄Π°. ΠΡΠ°ΠΊ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ:
ΠΠΎΠ½ΠΎΠΈΠ΄ (monoid) - ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ-ΠΆΠ΅ ΡΠΈΠΏΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
1 + 1
[1, 2].concat([3, 4])
ΠΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΠΌΠΎΠ½ΠΎΠΈΠ΄Π°Ρ , ΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (identity), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ:
1 + 0
0 - Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (identity)
[1,2].concat([])
[] - Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (identity)
ΠΠΎΠ½Π°Π΄Π° (Monad) - ΡΡΡΠ½ΠΎΡΡΡ ΠΈΠ· ΠΌΠΈΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠΎΠ½Π°Π΄ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΡ. ΠΡΠΈΠΌΠ΅Ρ:
// Implementation
Array.prototype.chain = function (f) {
return this.reduce((acc, it) => acc.concat(f(it)), [])
}
// Usage
Array.of('cat,dog', 'fish,bird').chain((a) => a.split(',')) // ['cat', 'dog', 'fish', 'bird']
// Contrast to map
Array.of('cat,dog', 'fish,bird').map((a) => a.split(',')) // [['cat', 'dog'], ['fish', 'bird']]
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΌΠΎΠ½Π°Π΄Π°ΠΌΠΈ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Ρ ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ of ΠΈ chain. chain ΠΏΠΎΡ ΠΎΠΆ Π½Π° map, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠ°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². chain ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ flatmap ΠΈΠ»ΠΈ bind.
ΠΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎ ΠΌΠΎΠ½Π°Π΄Ρ Π² ΡΡΠ°ΡΡΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π²Π½ΠΈΠ·Ρ.
#ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅_ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΎΠ½ΠΎΠΈΠ΄ (monoid) - ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ-ΠΆΠ΅ ΡΠΈΠΏΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
1 + 1
[1, 2].concat([3, 4])
ΠΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΠΌΠΎΠ½ΠΎΠΈΠ΄Π°Ρ , ΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (identity), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ:
1 + 0
0 - Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (identity)
[1,2].concat([])
[] - Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (identity)
ΠΠΎΠ½Π°Π΄Π° (Monad) - ΡΡΡΠ½ΠΎΡΡΡ ΠΈΠ· ΠΌΠΈΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠΎΠ½Π°Π΄ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΡ. ΠΡΠΈΠΌΠ΅Ρ:
// Implementation
Array.prototype.chain = function (f) {
return this.reduce((acc, it) => acc.concat(f(it)), [])
}
// Usage
Array.of('cat,dog', 'fish,bird').chain((a) => a.split(',')) // ['cat', 'dog', 'fish', 'bird']
// Contrast to map
Array.of('cat,dog', 'fish,bird').map((a) => a.split(',')) // [['cat', 'dog'], ['fish', 'bird']]
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΌΠΎΠ½Π°Π΄Π°ΠΌΠΈ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Ρ ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ of ΠΈ chain. chain ΠΏΠΎΡ ΠΎΠΆ Π½Π° map, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠ°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². chain ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ flatmap ΠΈΠ»ΠΈ bind.
ΠΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎ ΠΌΠΎΠ½Π°Π΄Ρ Π² ΡΡΠ°ΡΡΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π²Π½ΠΈΠ·Ρ.
#ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅_ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΎ ΡΡΠΎ Π½Π° Javascript?
WebTorrent - torrent client Π½Π°ΠΏΠΈΡΠ°Π½ΡΠΉ Π½Π° javascript, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΈ Π² node.js.
https://github.com/webtorrent/webtorrent
WebTorrent - torrent client Π½Π°ΠΏΠΈΡΠ°Π½ΡΠΉ Π½Π° javascript, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΈ Π² node.js.
https://github.com/webtorrent/webtorrent
GitHub
GitHub - webtorrent/webtorrent: β‘οΈ Streaming torrent client for the web
β‘οΈ Streaming torrent client for the web. Contribute to webtorrent/webtorrent development by creating an account on GitHub.