Прошло много времени с тех пор, как я занялся какой-либо существенной веб-разработкой, и я хотел бы воспользоваться новейшими практиками, но я изо всех сил пытаюсь визуализировать рабочий процесс, чтобы включить все.
Вот что я хочу использовать:
- CakePHP Framework
- JSMIN (JavaScript Minify)
- SASS (Synctactically Awesome StyleSheets)
- Гит
CakePHP:
Довольно понятно, внесите изменения и обновите источник.
JSMin:
Когда вы изменяете скрипт, вы вручную запускаете jsmin для вывода нового уменьшенного кода, или было бы лучше запустить ловушку перед фиксацией, которая автоматически генерирует выходные данные jsmin файлов javascript, которые изменились. Предположим, что у меня нет знаний о реализации хуков коммитов.
SASS:
Мне действительно нравится то, что предлагает SASS, но я также знаю, что код SASS не поддерживается браузерами по умолчанию, поэтому в какой-то момент код SASS необходимо преобразовать в обычный CSS. На каком этапе рабочего процесса это сделано.
Гит
Я с ужасом признаю это, но в прошлый раз, когда я занимался какой-либо существенной веб-разработкой, я не использовал систему контроля версий SCM (IE, я действительно использовал систему контроля версий, но она состояла из очень подробного журнала изменений с резервными копиями).
С тех пор у меня был большой опыт использования Git (а также Mercurial и SVN) для разработки десктопов, но мне интересно, как наилучшим образом реализовать его для веб-разработки).
Является ли обычной практикой внедрение удаленного репозитория на веб-хосте, чтобы я мог перенести изменения непосредственно на рабочий сервер, или есть какой-то кроссплатформенный (windows / linux) инструмент, который позволяет легко загружать только измененные файлы на рабочий сервер , Существуют ли веб-хостинговые компании, которые облегчают внедрение удаленного репозитория, нужен ли мне доступ по SSH и т. Д ...
Я знаю, как выполнить это на моем собственном тестовом сервере с удаленным репозиторием с отдельной удаленной ветвью отслеживания, но я никогда раньше не делал этого на удаленном производственном веб-хостинге, поэтому пока не знаю вариантов.
Дополнительно:
Я рассматривал возможность реализации инфраструктуры javascript, в которой отдельные файлы javascript, используемые на странице, компилируются в один файл для каждой страницы на рабочем сервере, чтобы ограничить количество загрузок файлов, необходимых для каждой страницы.
Что-то подобное уже существует? Уже есть проект с открытым исходным кодом, который реализует нечто подобное, что я мог бы использовать и внести свой вклад?
Учитывая то, как параноидальные веб-разработчики влияют на производительность (и тот факт, что количество запросов файлов на веб-сайте сильно сказывается на производительности), я предполагаю, что в сети есть какой-то хакер-волшебник, который уже решил эту проблему.
источник
JSMin
Если у вас нет тонны JS, вы можете настроить что-то, чтобы минимизировать каждый раз, когда вы нажимаете сохранить. Если у вас много JS, включите его в процесс развертывания (см. Git ниже).
SASS
Используйте Compass Framework . Он включает в себя SASS, а также небольшой скрипт, который «следит» за вашим каталогом SASS и компилирует файлы в CSS (включая уменьшенный CSS, если хотите) каждый раз, когда вы сохраняете. Он построен с учетом RoR, но вы можете легко использовать его с любым веб-фреймворком, создав файл конфигурации Compass и выполнив команду «compass watch». Compass также включает в себя множество других удобных инструментов, таких как Blueprint , полезные миксины и автоматическую генерацию спрайтов с помощью плагина Lemonade (который должен быть встроен в Compass в следующем выпуске ).
Гит
В зависимости от размера / сложности сайта, рассмотрите следующие Capistranoмодель развертывания. Не уверен, что вы можете использовать Capistrano напрямую с CakePHP, но суть такова: у каждого производственного сервера есть «текущая» папка, которая содержит весь код, работающий в данный момент. Каждый раз, когда вы хотите развернуть новый код, вы запускаете сценарий, который ssh на каждом рабочем сервере, и он (а) копирует содержимое «текущей» папки в резервную папку (с именем выпуска / отметкой времени на нем), ( б) извлеките последний код из Git в «текущую» папку и (в) начните обслуживать этот новый код из «текущей» папки. Таким образом, вы можете откатиться до любого предыдущего выпуска, если это необходимо, и точно сказать, какая ревизия находится в производстве. Capistrano также позволяет добавлять все виды пользовательских задач в рамках процесса развертывания, включая минификацию JS / CSS,
дополнительный
Да, есть куча. Google для чего-то вроде "CSS / JS concat". Вот быстрый пример, который я нашел для CakePHP: Asset Packer .
источник