Использование Component в Symfony2

В статье Менеджеры Js/Css библиотек мы рассматривали какие есть варианты использования менеджеров зависимости. В данной статье мы рассмотрим как использовать Component для Symfony2.

Настройки для Component

В файле composer.json добавим

{
    "config": {
//…
        "component-dir": "web/components",
        "component-baseurl": "/components"
    }
}

Параметр component-dir указывает куда копировать необходимые нам файлы скриптов, стилей или картинки указанные в настройках библиотек. И component-baseurl это настройка для requirejs указывает путь который доступен из браузера.

Установка библиотек типа component

Установка в таком случае ничем не отличается от стандартной установки например components/bootstrap, просто выполняем команду composer require components/bootstrap

Библиотека скачивается в нашем случае в папку vendor, но файлы указанные в настройках composer.json

{
  "extra": {
    "component": {
      "scripts": [
        "js/bootstrap.js"
      ],
      "files": [
        "js/*.js",
        "css/*.css",
        "css/*.map",
        "fonts/*",
        "less/mixins/*.less",
        "less/*.less"
      ],
      "shim": {
        "deps": ["jquery"]
      }
    }
  }
}

Копируют в папку web/components файлы указанные в files. Также добавляется конфигурация в requirejs, например зависимости библиотеки.

Библиотека без поддержки component

Библиотека добавлена в composer, только без подержки component например bootstrap-select/bootstrap-select. Добавляем в composer.json

{
    "require": {
        "robloach/component-installer": "*",
        "bootstrap-select/bootstrap-select": "~1.7"
    },
    "extra": {
        "component": {
            "bootstrap-select/bootstrap-select": {
                "scripts": [
                    "dist/js/bootstrap-select.js"
                ],
                "files": [
                    "dist/js/*.js",
                    "dist/js/i18n/*.js",
                    "dist/js/*.map",
                    "dist/css/*.css",
                    "dist/css/*.map",
                    "less/*.less"
                ],
                "shim": {
                    "deps": [
                        "jquery"
                    ]
                }
            }
        }
    }
}

Устанавливаем командой composer update bootstrap-select/bootstrap-select.

Библиотеки без поддержки composer

Очень часто библиотеку добавляют в bower, реже в component, и очень редко добавляют в packagist. Для добавления такой библиотеки, воспользуемся инструкцией и добавим в composer.json

{
    "require": {
        "robloach/component-installer": "*",
        "google/code-prettify": "dev-master"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "google/code-prettify",
                "type": "component",
                "version": "master",
                "source": {
                    "url": "https://github.com/google/code-prettify",
                    "type": "git",
                    "reference": "master"
                },
                "extra": {
                    "component": {
                        "scripts": [
                            "src/prettify.js"
                        ],
                        "styles": [
                            "src/prettify.css"
                        ]
                    }
                },
                "require": {
                    "robloach/component-installer": "*"
                }
            }
        }
    ]
}

Установим командой composer update google/code-prettify

Выводы

Используя composer и robloach/component-installer очень легко следить за js/css библиотеками и поддерживать актуальные версии. Единственное хотелось бы чтобы разработчики добавляли свои библиотеки не только в bower, но и в другие менеджеры где возможно использовать библиотеку. В данном случае разработчик использует что ему удобно. Одно из преимуществ данного подхода это то, что только необходимые нам файлы доступны из браузера. Для более детального изучения настроек воспользуетесь документацией.

Читайте также:

Изпользование CSS вместе с RequireJS

В нашей разработке мы используем RequireJS. Но часто для использования библиотек необходимо подключить стили. Для этого мы воспользуемся плагинами для RequireJS и стандартным файлом настройки. Для того чтобы подгрузить необходимы библиотеки можете прочитать статью.

Как избегать распространенных ошибок в JavaScript

Время от времени все мы делаем ошибки. Это может произойти по многим причинам: недостаток опыта, плохое настроение, поджимают сроки сдачи, головная боль и т.д. Не смотря на то, что какие-то моменты в JavaScript'е могут казаться незначительными, они могут стать причиной серьезных проблем и ночной отладки кода в будущем. Поэтому вне зависимости от внешних факторов вы должны уделять внимание деталям во время программирования. Я хочу дать вам пару советов для улучшения всей этой ситуации.

Менеджеры Js/Css библиотек при работе над Symfony проектом

В процессе разработки, нам необходимо использовать стороние библиотеки, и соответсвенно необходимо централизованно их устанавливать. Прошли те времена когда для того чтобы поставить библиотеку, надо было скачать скрипты и распаковать их себе в проект. Сейчас для этого используют менеджеры библиотек, их очень много например: Сomposer, Bower, Npm, Component и другие. В проектах на Symfony2 используется Composer, но им не очень удобно устанавливать js/css библиотеки, поскольку все библиотеки ставятся в папку которая не должна быть доступна из браузера. Мы рассмотрим какими способами в Symfony2 проекте можно ставить js/css библиотеки, некоторые способы подойдут любому проекту в котором используется Composer.

Звездный рейтинг

Доброго времени суток дамы и господа. С помощью этой статьи я хотел бы познакомиться с вами, а заодно опробовать себя в качестве автора. А для того чтобы это знакомство не проходило зря, мы рассмотрим с вами некоторые варианты создания инструмента для оценки чего либо. В интернете прижился такой визуальный элемент как “звездочки”: К примеру: Хотя в последнее время все больше используются оценочные инструменты со сторонних сервисов, например “лайки” от Facebook'a или от Вконтакте, которые позволяют оценить материал только в положительном ключе. Хорошо это или плохо, мы с вами решим как - нибудь в другой раз, а сейчас давайте рассмотрим несколько вариантов реализации традиционных “звездочек”.