Introduction

Get started with Front, Responsive Website Template for building responsive, mobile-first sites, with Bootstrap and a template starter page.

File Structure

front
  • src
    • assets
      • css - Compiled CSS files
      • img - Image files
      • json - JSON files
      • js - Core Javascript and library wrapper files
      • scss - SASS (SCSS) source files
      • svg - SVG files
      • svg-src - SVG source files where variables can be passed (files will be generated into svg folder)
      • vendor - Third pary libraries (plugins)
    • partials - HTML partials, learn more details on Front's Gulp Documentation page
    • snippets - Ready-to-use combined components
    • documentation - Documentation pages
    • demo-* - Demo options with inner pages, such as Courses, App Marketplace etc.
    • favicon.ico
    • index.html
    • ...
  • dist - Generated distribution files
  • gulpfiles - Gulp Toolkit files
  • build - Generated performance ready fully production files (by default the folder is not included)
  • node_modules - NPM dependencies (by default the folder is not included)
  • config.js
  • gulpfile.js
  • package-lock.json
  • package.json
  • README.md

Starter template

Starter template is a snippet code for blank HTML page. Use the below snippet as a way to quickly start any new blank page. If you are using Front's Gulp Toolkit, you may use HTML (Gulp) snippet code (read more about it on Gulp page).

JavaScript structure

Core JavaScript

The foundation of the JavaScript structure in Front is based on one main object which does not change the root when the new functionalities are added, but instead, it only extends without affecting the behavior of the core object. The name of the object is HSCore and the content of this object looks like this:

            
              /*
              * HSCore
              * @version: 2.0.0 (Mon, 25 Nov 2019)
              * @requires: jQuery v3.0 or later
              * @author: HtmlStream
              * @event-namespace: .HSCore
              * @license: Htmlstream Libraries (https://htmlstream.com/licenses)
              * Copyright 2020 Htmlstream
              */
              'use strict';

              $.extend({
                HSCore: {
                  init: function () {
                    $(document).ready(function () {
                      // Botostrap Tootltips
                      $('[data-toggle="tooltip"]').tooltip();

                      // Bootstrap Popovers
                      $('[data-toggle="popover"]').popover();
                    });
                  },

                  components: {}
                }
              });

              $.HSCore.init();
            
          

Essentials of HS data-attributes

data-hs-*-options - Using the date-attribute, you can completely specify the settings for all plug-in parameters (except for functions) that are in the official documentation. Special cases will be described in the documentation of the corresponding wrappers/plugins. *- name of the wrapper/plugin.

Parameter names must be enclosed in double quotation marks "". "param": ...

For strings, quotation marks are required. "stringParam": "Test string", "hexParam": "#ff0000"

For numbers, quotation marks are optional. "intParam": 10

For boolean values, quotation marks can lead to not obvious consequences (due to implicit type conversion). It is recommended that you specify Boolean values without quotation marks. "boolParam": true

For arrays and objects - quotation marks can lead to errors, this does not apply to elements of arrays and objects, which can be simple types (see the description for simple types above).

            
              "arrayParam": [1, "Test string", "#ff0000", false, 5],
              "objectParam": {
                "intParam": 1,
                "stringParam": "Test string",
                "hexParam": "#ff0000",
                "boolParam": false,
                "intParam2": 5
              }
            
          

Advantages

  • Avoiding the probabilities of conflicts between Front codes and third party plugins (libraries).
  • Intuitive clear architecture.
  • Everything is structured, each component in its own file and in its component in the main object.
  • The ability of extending functionality without affecting the behavior of the core object and not changing the existing functionality.
  • Creation of wrapper components simply solves complicated initializations structures for the users.
  • Very easy access to any starters components and core settings from anywhere in the template.