@@ -196,3 +196,78 @@ The result will be a variable `images`, containing the following information:
196196[node-url]: https://nodejs.org
197197[deps]: https://david-dm.org/ArtyomResh/image-resolution-loader.svg
198198[deps-url]: https://david-dm.org/ArtyomResh/image-resolution-loader
199+
200+
201+
202+
203+
204+
205+
206+
207+
208+
209+
210+
211+
212+
213+
214+
215+ [![npm][npm]][npm-url]
216+ [![node][node]][node-url]
217+ [![deps][deps]][deps-url]
218+
219+ Проблемы/TODO:
220+ Imgproxy url'ы можно составлять как в билдтайме, так и в рантайме.
221+ Набор инструментов в этой библиотеке заточен под подготовку url в билдтайме.
222+ На это есть несколько причин:
223+ 1. Лучше потратить процессорное время в билдтайме, чем в рантайме
224+ 2. Подпись url в imgproxy возможна только в билдтайме
225+ 3. В билдтайме у нас есть доступТо что мы можем получить все возможные брейкпоинты по картинкам в билдтайме
226+
227+ Минусы такого подхода:
228+ 1. Неудобно использовать урлы с подписью? Не поиграешь
229+ 2. Нельзя воспользоваться require context dynamic
230+
231+ 3. Импорт через require.context('./myImage') и функцию-хелпер/компонент
232+ 4. Во время импорта все ссылки на изображения imgproxy собираем в один json
233+
234+ <picture class="image css-1bv363l e1mofdgw0">
235+ <source media="(max-width: 767px)" type="image/webp"
236+ srcset="/_next/static/images/core-values/mobile.all/reliability-c770d411@1x.webp 1x,/_next/static/images/core-values/mobile.all/reliability-6c497195@2x.webp 2x,/_next/static/images/core-values/mobile.all/reliability-67dc4bb0@3x.webp 3x">
237+ <img
238+ srcset="/_next/static/images/core-values/desktop.m/reliability-8b8b8b67@1x.png 1x,/_next/static/images/core-values/desktop.m/reliability-a5845164@2x.png 2x,/_next/static/images/core-values/desktop.m/reliability-db64bb29@3x.png 3x"
239+ src="/_next/static/images/core-values/desktop.m/reliability-8b8b8b67@1x.png"
240+ alt="Illustration: a man folds a wall of lego">
241+ </picture>
242+
243+ Проблемы:
244+ 1. Разработка на локалхосте, запускать докер или делать bypass всей этой логики?
245+ 2. Порядок source в picture, первый подошедший используется
246+ 3. Picture компонент можно удалить в пользу обобщения
247+ 4. Объединить Picture компоненты новые и старые
248+ 5. Собирать статистику какие картинки запрашиваются
249+ 6. Собирать все урлы и потом по ним проходить после сборки стенда
250+ 7. Поправить file-loader
251+
252+ Идеи:
253+ 1. Загружать picture тег асинхронно, например, как кусок html
254+ img src='csssr.com/getimage/myimagename'
255+ server.use('/getimage/:imagename', () => {})
256+
257+
258+ Порядок в srcSet не имеет значения
259+ Порядок в source имеет значение, первое подошедшее правило срабатывает
260+
261+
262+ Ожидается file-loader перед этим лоадером
263+
264+ Можно потом вынести imgproxy в options loader'а
265+
266+ [MIT](./LICENSE)
267+
268+ [npm]: https://img.shields.io/npm/v/image-resolution-loader.svg
269+ [npm-url]: https://npmjs.com/package/image-resolution-loader
270+ [node]: https://img.shields.io/node/v/image-resolution-loader
271+ [node-url]: https://nodejs.org
272+ [deps]: https://david-dm.org/ArtyomResh/image-resolution-loader.svg
273+ [deps-url]: https://david-dm.org/ArtyomResh/image-resolution-loader
0 commit comments