Как украсть лучшие практики в Rails и как избавить Rails от ruby-based фронтенда (Часть 4)
А можем ли мы иметь полностью идентичную систему, которую реализует Rails, но с использованием только 1 инструмента?
Чтобы фронтендщики были полностью погружены в свои привычные инструменты, могли легко ставить и использовать все что им нужно, иметь эффективную сборку и хеши для ассетов любых типов?
То, что это можно — это бесспорно. Vite или Webpack может это организовать.
Нужно понять сложность. А она не такая большая.
Допустим, у нас есть файл assets/images/logo.jpg который лежит в каталоге app/assets/images/logo.jpg
1️⃣ Чтобы он был доступен в среде разработки нам нужно всего лишь одну rails или vite миддлвару (я бы предпочел vite), которая будет перехватывать имя файла и отдавать его из фактического каталога нашего проекта.
2️⃣ в production среде ассеты компилируются (в том числе добавляется hash) и их оригинальное имя assets/images/logo.jpg сохраняется в manifest, и в нем разрешается в условное assets/images/logo-akdh86d.jpg
На стороне ruby/rails делается простой хелпер, который читает манифест и находит фактический файл.
Что одно, что другое — дело 3-4 javascript или ruby функции. Понимая идею — это может сделать любой новичок.
И эти 3-4 функции адаптируются к любому сборщику, любой версии в любой момент.
Если бы DHH не цеплялся за ruby код — он бы мог не тратить силы на написание своего сборщика, а сделать все тоже самое на JS примерно за 1 рабочий день.
Post #986
274
- 👍 2