Может ли Bootstrap (4) быть интегрирован вместе с Angular Материалом (2)?
Я бы хотел использовать библиотеку Angular Material 2 из-за ее (растущего списка) компонентов. Но я привык к загрузке, и это хорошо, как отзывчивые утилиты и легкий пользовательский интерфейс для типичных вещей. By Bootstrap Я в основном имею в виду его часть CSS, мне почти никогда не нужна ее функциональность JS.
Например, в Material lilbrary существует практически нулевой стиль для группы списков, а Bootstrap дает это с помощью css.
Я помню, как читал, что объединение их - не очень хорошая идея, главным образом потому, что их глобальные стили приложения будут сталкиваться. Я не могу найти этот источник, и я любопытство - это правда с текущими версиями? Если это так, то, что конфликтует и как его можно обойти?
Ответы
Ответ 1
Angular Material 2 - это новая библиотека, которая все еще находится в активной разработке, поэтому вам пока не стоит ожидать от нее многих интересных функций nice to have
, но в долгосрочной перспективе вы получите множество преимуществ, используя Material 2
в своем угловом приложении, Вот краткий обзор:
Комплект для разработки компонентов
В последних выпусках Material 2
команда представила @angular/cdk
, которая является ядром для Material 2
, а также дает разработчикам прекрасную почву для написания собственных сторонних компонентов. Документов по @angular/cdk
пока нет, но вы можете отследить эту проблему https://github.com/angular/material2/issues/2789, чтобы быть в курсе этого вопроса.
Отзывчивые богини
В Material 2
нет встроенной функциональности, которая дает вам отзывчивые богини. В этом отношении вы должны использовать @angular/flex-layout, который полностью отделен от Material 2
- в основном это хорошая абстракция поверх Flexbox CSS. При этом вам не нужно писать целую кучу отзывчивых css mediaQueries.
Поддержка браузеров
Material 2
: IE11+
Bootstrap 4
IE10+
Bootstrap 3
IE8+
Bootstrap + Материал?
Нет причин, по которым вы хотите объединить обе Frameworks в своем приложении, если вы думаете об общем размере ваших пакетов, имеющих ссылки на две мощные интерфейсные среды. Также в этом случае вы должны заботиться о конфликтах, которые могут возникнуть при использовании обоих в одном проекте.
Ответ 2
Поскольку Bootstrap является модульным, одним из альтернативных подходов может быть использование Angular Material, а затем просто выбрать из Bootstrap только те части, которые вам действительно нужны.
Примечание: что бы вы ни собирались импортировать, вы должны сначала установить загрузчик:
npm install bootstrap --save
И импортируйте требуемый файл sass в свой глобальный style.scss
:
// Imports functions, variables, and mixins that are needed by other Bootstrap files
@import "~bootstrap/scss/functions";
@import "~bootstrap/scss/variables";
@import "~bootstrap/scss/mixins";
Например, вы можете использовать Bootstrap Reboot, чтобы все браузеры отображали элементы более согласованно и в соответствии с веб-стандартами.
Тогда вам нужно только импортировать:
// Import Roboot
@import "~bootstrap/scss/reboot";
Возможно, вы также захотите использовать Bootstrap Grid System, в таком случае вы можете добавить:
@import "~bootstrap/scss/grid"; // add the grid
Таким образом, вы сможете использовать его в своих HTML-шаблонах:
<div class="container">
<div class="row">
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
</div>
</div>
Вы также можете использовать Bootstrap Utilities, в таком случае добавьте также:
@import "~bootstrap/scss/utilities"; // add css utilities
Мой ответ основан на том, что подробно объясняется здесь: https://www.amadousall.com/the-good-parts-of-bootstrap-4-you-are-missing-in-your-angular-material-projects/
Ответ 3
Хотя ответ Кунцевича прав, я думаю, мы также должны добавить следующее:
- Angular Материал неявно обновляет/понижает уровни элементов DOM
а Bootstrap - нет. Это означает, что в Bootstrap вы получаете то, что
вы видите, в то время как в Angular Материал, некоторые элементы автоматически
оказаны. Итак, я не могу понять, как вы можете объединить эти два, даже если
вы хотите. Добавление, Angular просмотр инкапсуляции в миксе, вещи
становитесь еще более грязными.
- Единственная часть, где я вижу место для сотрудничества, находится в сетке. Вы
может использовать Bootstrap для сетки и Angular Материал для остальных, но с Angular Flex
Макет (как уже упоминал Кунцевич) вам действительно не нужно.
Там есть небольшая кривая обучения, но это того стоит, если вы используете
Angular.
- Bootstrap CSS конфликтует с Angular Материалом CSS. При использовании
вместе я заметил, что некоторые элементы, такие как значки внутри
плавающие кнопки не центрированы правильно и т.д. Это не должно быть
трудно исправить, но зачем беспокоиться, когда вы можете использовать Angular Flex?
Надеюсь, что это поможет.
Ответ 4
На конференции Angular в 2019 году они объяснили, нормально ли это, сочетая бутстрап и angular материал.https://www.youtube.com/watch?v=xLj1qw82oAo&feature=youtu.be