22.05.2012, 02:55
|
|
Профессор
|
|
Регистрация: 05.06.2009
Сообщений: 1,703
|
|
автоматизация рутины
Рассказ о том как я избавляюсь он некоторого колличества рутинной работы. Хотелось бы услышать кто что думает? Может кто то знает более красивые решения? Вообще занимается кто нибудь подобной ерундой? Я относительно недавно к этому пришёл.
Структура каталога js-скриптов:
Код:
|
- js/
- script_1/
- fub_1.script_1.js
- fub_2.script_1.js
- script_2/
- fub_1.script_2.js
- fub_2.script_2.js
- script_1.min.js
- script_2.min.js |
- Принцип именования файлов только для наглядности, его задача - показать, что все файлы которые в последствии будут сшиты в "script_1.min.js" находятся в папке "script_1".
- Также в папке "js" лежит файл "javascript.php". Он подключает скрипты на страницу. Либо "исходники", либо сжатые файлы, в зависимости от $_SERVER['HTTP_HOST'];. В "javascript.php" дял каждого файла определён массив вида: array('version' => 'x.xx', 'pages' => array('xxx', 'yyy')), где version - версия скрипта, pages - разделы сайта к которым скрипт подключается. На сервере настроено кеширование (заголовки Expires , Cache-Control).
- Сжатие скриптов производится Google Closure Compiler'ом. Есть скрипт генерирующий инструкци для командной строки запускающие сжатие скриптов.
- Папки script_1, script_2, ... script_n добавлены в список исключений в настройках развёртывания WebStorm.
Итого (как всё происходит):
1. Пишем код добавляя/удаляя файлы в папках script_x. Заботиться о подключении не нужно, всё настраивается один раз. Сами файлы script_1.min.js у меня достаточно большие, поэтому очень удобно в процессе разработки разбивать их на более мелкие фрагменты.
2. Правим значение version дял изменённых файлов и сжимаем файлы.
3. Заливаем папку "js" на сервер. Благодаря настройкам развёртывания зальются только сжатые скрипты и файл "javascript.php".
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)
|
|
22.05.2012, 09:45
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
В таких моделях возникает проблема слежения за зависимостями между файлами.
Допустим понадобился вам script1.js, подключили к проекту, а он, оказывается, требует себе script2.js. Ну без проблем, подключили script2.js, всё работает. Через пол-года script1.js по каким-то причинам стал не нужен, но его зависимости уже никто не помнит. script1.js исключаем из проекта, script2.js продолжает там болтаться мёртвым грузом.
Второй случай: миграция скриптов между проектами. Проектами в узком смысле этого слова, просто между страницами одного проекта. Подключаем скрипт с другой страницы, а он, оказывается, хочет ещё один оттуда же, а тот в свою очередь ещё парочку. Подключаем скрипты один за другим, попутно разрешая возникающие конфликты. И вместо того, чтобы писать код, пол дня ушло на подключение своих же скриптов в свой же проект, но на другую страницу.
Я предпочитаю, когда в каждом файле указаны его зависимости. У меня это выглядит, как серия комментариев //#include script.js в начале файла. В результате нужно думать, только какие функции из какого файла нужны в текущем файле, а подключаемые файлы свои зависимости сами привезут.
|
|
22.05.2012, 09:54
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
у меня чуть по-другому :
Код:
|
- scripts
- myscript
- begin.js
- end.js
- functions.js
- myscript 2
- тоже
- разбито
- по смысловым файлам |
в папке scripts - все скрипты. далее, в ней находятся папки с скриптами (частные имена), а в них - разбитые по смысле файлы, которые воедино собранные, составляют сам скрипт.
процесс сборки: где-нибудь лежит Makefile (ещё не определился с его местонахожденим, но пока в каждой папке скрипта он лежит), который собирает скрипт и "компилирует", т.е. обрабатывает его в GCC в обычном\advanced режиме.
пример Makefile :
Код:
|
TARGET=anim.js
MIN=$(TARGET).min
COMPILER_PATH=/home/melky/GCC/compiler.jar
all: clean build min
min: build
/usr/bin/java -jar $(COMPILER_PATH) --js $(TARGET) --warning_level VERBOSE
--js_output_file $(MIN) --formatting PRETTY_PRINT --compilation_level SIMPLE_OPTIMIZATIONS
adv-min: build
/usr/bin/java -jar $(COMPILER_PATH) --js $(TARGET) --warning_level VERBOSE
--js_output_file $(MIN) --formatting PRETTY_PRINT --compilation_level ADVANCED_OPTIMIZATIONS
build:
cat {begin,init,transitions,classic,css,end}.js > $(TARGET)
clean:
rm -f $(TARGET) |
в будущем буду добаратывать этот способ сборки файлов да и сам Makefile коряв, я знаю. писался на скорую руку.
пишу в Vim, там сборка под рукой :
когда вношу изменения в файл, ввожу две команды
Код:
|
:w (сохранить файл)
:make build (пересобрать текущий скрипт) |
хочу это соединить в одну, но пока до прочтения манов тоже руки не доходят
Последний раз редактировалось melky, 22.05.2012 в 09:58.
|
|
22.05.2012, 10:03
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от melky
|
пишу в Vim, там сборка под рукой :
|
Сборка должна быть не под рукой, а на лету при разработке
|
|
22.05.2012, 10:15
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от Kolyaj
|
Сборка должна быть не под рукой, а на лету при разработке
|
она будет на лету, будучи включенной в команду сохранения )
|
|
22.05.2012, 10:31
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от Tim
|
Вообще занимается кто нибудь подобной ерундой?
|
Ну я занимался. Там ещё не всё сделано, но твою логику сборки можно настроить без проблем.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
22.05.2012, 12:04
|
|
Профессор
|
|
Регистрация: 05.06.2009
Сообщений: 1,703
|
|
B~Vladi,
Было в закладках уже. Видимо встречал тему на форуме, но забыл. Времени как то всё нет. А эта штука под виндой запустится?
melky,
Make-файлы и vim это не для меня. У меня стоит убунта свежая, я там даже апач настроил полностью, но привыкнуть не могу не как. Месяца 2 уже не запускал её. Если бы не было семёрки я бы точно на линукс перебрался, а так пока нет.
Kolyaj,
С инклудами хорошая идея, возьму на вооружение. Правда у меня пока не на столько всё сложно.
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)
|
|
22.05.2012, 12:21
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от Tim
|
А эта штука под виндой запустится?
|
Да, это полностью кроссплатформенно. Я позже ещё займусь им, можем вместе развивать.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
22.05.2012, 12:21
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Наш кэп,
ну то есть при разработке то, что понаписал, запускать необязательно? Ну так, ради интереса, работает ли.
|
|
22.05.2012, 12:38
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от Tim
|
melky,
Make-файлы и vim это не для меня. У меня стоит убунта свежая, я там даже апач настроил полностью, но привыкнуть не могу не как. Месяца 2 уже не запускал её. Если бы не было семёрки я бы точно на линукс перебрался, а так пока нет.
|
а я легко смог перебраться, т.к. с нуля "настраивал линупс", и сделал всё, как мне удобно. правда, время на это потратил... но у меня оно есть. Makefile легко заменяется на BATCH.
тут ещё зависит кое-что другое... вы в чём код пишете?
я раньше любил notepad++ и не любил IDE'шки. но в нём мне не хватало навигатора по коду, что я с лёгкостью сделал в виме. в принципе, последний у меня превращён в notepad++ на линуксе.
|
|
|
|