Server Side Rendering
With the introduction of SVG’s to Font Awesome we can now render icons on the server if you are generating or serving your pages with JavaScript. By rendering server side you save the browser the effort required to download additional files or perform the rendering calculations. For this example we’re going to use a static site generator called Metalsmith.
Setting Things Up
Clone the project and use the static-site example. Also, remember to install dependencies right after that.
Create a Helper
Create a file in the static-site
directory called helpers.js
.
Add this to the Metalsmith File
Edit index.js
and require the new helper file.
Edit Layout & Reference Icon
Edit layouts/layout.html
and add this to the <head>
. After that change the header.
Build the Static Content
Open build/index.html
to see the rendered icon.
CSS
Server side rendering introduces an interesting problem when we consider the CSS that is needed to render an icon effectively.
The classes svg-inline--fa
, fa-w-16
, and fa-lg
all have a critical role in controlling the size of the icon and the placement in the DOM. If the CSS is missing when this icon displays in the browser it will flash from a very large icon down to a properly sized one a moment later. Here’s how to solve it…
As we saw in the example we can inline the CSS directly into the page.
This Handlebars helper is calling dom.css()
which returns a String
representing all the styles required for displaying icons at the correct size. You can link to the external CSS, which is specific to using SVG with JavaScript. It can be found in the svg-with-js/css/fa-svg-with-js.css
folder.
Use it similar to this: