vue-material-design-icons vs vue-awesome
Vue.js Icon Libraries Comparison
1 Year
vue-material-design-iconsvue-awesome
What's Vue.js Icon Libraries?

Icon libraries for Vue.js provide a collection of scalable vector icons that can be easily integrated into Vue applications. These libraries offer customizable icons that enhance the visual appeal of web applications, improve user experience, and provide intuitive visual cues for actions, navigation, and content. They often come with features like icon search, theming, and support for various icon sets, making it easy for developers to find and use the right icons for their projects. vue-awesome is a Vue.js component that allows you to use Font Awesome icons as Vue components, providing a simple and efficient way to integrate scalable vector icons into your application. It supports all Font Awesome icon styles, including solid, regular, and brands, and allows for easy customization of size, color, and other properties. vue-material-design-icons is a collection of Material Design icons for Vue.js, offering a wide range of icons designed according to Google’s Material Design guidelines. This library provides a straightforward way to use Material Design icons as Vue components, with support for customization and theming, making it ideal for projects that follow Material Design principles.

NPM Package Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
vue-material-design-icons25,0921668.23 MB63 months agoMIT
vue-awesome19,6442,4312.58 MB37-MIT
Feature Comparison: vue-material-design-icons vs vue-awesome

Icon Set

  • vue-material-design-icons:

    vue-material-design-icons offers a large collection of Material Design icons, which are designed to be simple, clean, and highly recognizable. While the icon set is not as extensive as Font Awesome, it is well-curated and follows Material Design principles, making it suitable for modern web applications.

  • vue-awesome:

    vue-awesome provides access to the entire Font Awesome icon set, which includes thousands of icons across different styles (solid, regular, brands). This extensive collection allows for versatile use in various applications, from simple to complex designs.

Customization

  • vue-material-design-icons:

    vue-material-design-icons provides good customization options for Material Design icons, including size and color. The icons are designed to be easily styled with CSS, and the library encourages the use of theming to match the icons with the overall design of the application.

  • vue-awesome:

    vue-awesome allows for basic customization of Font Awesome icons, including size, color, and rotation. However, more advanced customization may require additional CSS or the use of Font Awesome’s built-in features.

Installation and Setup

  • vue-material-design-icons:

    vue-material-design-icons also offers a straightforward installation process. You can install the package via npm and start using the Material Design icons in your Vue components with minimal configuration.

  • vue-awesome:

    vue-awesome is easy to install and set up, especially if you are already using Font Awesome in your project. Simply install the package, import the desired icons, and use them as Vue components.

Performance

  • vue-material-design-icons:

    vue-material-design-icons is designed with performance in mind, but like any icon library, the impact on performance depends on how many icons you use. The library encourages the use of only the icons you need to keep the bundle size manageable.

  • vue-awesome:

    vue-awesome is performance-friendly, as it allows you to import only the icons you need, reducing the overall bundle size. This selective importing helps optimize loading times and resource usage in your application.

Ease of Use: Code Examples

  • vue-material-design-icons:

    Using Material Design Icons with vue-material-design-icons

    <template>
      <div>
        <md-icon name="home" />
        <md-icon name="favorite" />
      </div>
    </template>
    
    <script>
    import { MdIcon } from 'vue-material-design-icons';
    
    export default {
      components: {
        MdIcon,
      },
    };
    </script>
    
  • vue-awesome:

    Using Font Awesome Icons with vue-awesome

    <template>
      <div>
        <font-awesome-icon icon="user" />
        <font-awesome-icon icon="coffee" />
      </div>
    </template>
    
    <script>
    import { FontAwesomeIcon } from 'vue-awesome';
    import 'vue-awesome/icons/user';
    import 'vue-awesome/icons/coffee';
    
    export default {
      components: {
        FontAwesomeIcon,
      },
    };
    </script>
    
How to Choose: vue-material-design-icons vs vue-awesome
  • vue-material-design-icons:

    Choose vue-material-design-icons if you are looking for a comprehensive collection of Material Design icons that adhere to Google’s design guidelines. This package is ideal for projects that prioritize Material Design aesthetics and require a wide variety of icons.

  • vue-awesome:

    Choose vue-awesome if you need a simple and efficient way to integrate Font Awesome icons into your Vue application. It is particularly useful if you are already using Font Awesome and want to leverage its extensive icon library with minimal setup.

README for vue-material-design-icons

Vue Material Design Icon Components

This library is a collection of Vue single-file components to render Material Design Icons, sourced from the MaterialDesign project. It also includes some CSS that helps make the scaling of the icons a little easier.

Getting started

  1. Install the package

    yarn add vue-material-design-icons
    

    OR

    npm i vue-material-design-icons
    
  2. Import the icon, and declare it as a local component:

    import MenuIcon from 'vue-material-design-icons/Menu.vue';
    
    components: {
      MenuIcon;
    }
    

    OR

    Declare it as a global component:

    import MenuIcon from 'vue-material-design-icons/Menu.vue';
    
    Vue.component('menu-icon', MenuIcon);
    

    Note Icon files are pascal cased, e.g. CheckboxMarkedCircle.vue, and their default name has Icon appended e.g. CheckboxMarkedCircleIcon.

  3. Then use it in your template code!

    <menu-icon />
    
  4. Optional Add the included stylesheet. This few lines of CSS will cause the icons to scale with any surrounding text, which can be helpful when you primarily style with CSS. Note that if you intend to handle sizing with the size prop, you probably don't want to use this as it may conflict.

    import 'vue-material-design-icons/styles.css';
    

Props

  • title - This changes the hover tooltip as well as the title shown to screen readers. For accessibility purposes, if a title is not provided, then the icon is hidden from screen readers. This is to force developers to use meaningful titles for their icon usage.

    Example:

    <android-icon title="this is an icon!" />
    
  • fillColor - This property allows you to set the fill colour of an icon via JS instead of requiring CSS changes. Note that any CSS values, such as fill: currentColor; provided by the optional CSS file, may override colours set with this prop.

    Example:

    <android-icon fillColor="#FF0000" />
    
  • size - This property overrides the width and height attributes on the SVG. The default is 24.

    Example:

    <android-icon :size="48" />
    

Icons

A list of the icons can be found at the Material Design Icons website. The icons packaged here are pascal cased versions of the names displayed on the website, to match the Vue Style Guide. For example, the icon named ultra-high-definition would be imported as "vue-material-design-icons/UltraHighDefinition.vue".

Tips

  • Use resolve in your Webpack config to clean up the imports:

    resolve: {
      alias : {
        "icons": path.resolve(__dirname, "node_modules/vue-material-design-icons")
      },
      extensions: [
        ".vue"
      ]
    }
    

    This will give you much shorter and more readable imports, like import Android from "icons/Android", rather than import Android from "vue-material-design-icons/Android.vue". Much better!

  • If you want custom sizing, add your own css to adjust the height and width of the icons

    .material-design-icon.icon-2x {
      height: 2em;
      width: 2em;
    }
    
    .material-design-icon.icon-2x > .material-design-icon__svg {
      height: 2em;
      width: 2em;
    }
    

    Then add your size class

    <fullscreen-icon class="icon-2x" />
    

    While I recommend using CSS for styling, you can also pass in a size prop, detailed in the Props section above.

Credits

Austin Andrews / Templarian for the MaterialDesign project. This supplies the SVG icons for this project, which are packaged as Vue single file components.

Elliot Dahl for this article on prototypr.io. This is where the recommended CSS comes from.

Attila Max Ruf / therufa for the mdi-vue library which inspired this one. It also produces single file components from material design icons.