Tic-Tac-Vue is a simple JavaScript Single Page Application (SPA) written with Vue, Vuex and Vue Router. Its goal is to be a "case study" for beginners who want to learn Vue and its powerful ecosystem.
Click here to try the online demo version.
In this project I adopted two methodologies I currently use in MotorK (the company I've been working with) to have a better factored code and organized source files: BEM and Atomic Design.
BEM (which means Block Element Modifier) is a methodology that helps you to create reusable components in front-end development. It's all about splitting your CSS classes using Blocks, Elements and Modifiers. The final DOM could be verbose, but you will have a better factored source code and, because of you don't have to nest CSS classes, your CSS bundle will result less heavy.
To read more about BEM pattern, click here.
Atomic Design is a methodology for creating design systems. Similarly to chemistry, you can organize your components file (in this scenario Vue Single File Components) using atoms, molecules and organisms.
Atoms are the basic building blocks of matter. Applied to web interfaces, atoms are our HTML tags, such as a form label, an input or a button.
Molecules are groups of atoms bonded together and are the smallest fundamental units of a compound.
Organisms are groups of molecules joined together to form a relatively complex, distinct section of an interface.
To read more about Atomic Design pattern, click here.
(This project doesn't have organisms: it only has atoms, molecules and pages.)
First of all, I strongly suggest you to have a look at Vue documentation, especially to:
- Vue instance
- Vue lifecycle
- Vue data
- Vue methods
- Vue props
- Vue computed properties
- Vue Single File Components
- Vuex state
- Vuex getters
- Vuex mutations
- Vue Router
These are the minimum requirements to have a better approach with Tic-Tac-Vue.
You can install Tic-Tac-Vue cloning the project:
git clone https://github.com/Sanfra1407/tic-tac-vue.git
then install npm dependencies:
npm install
Since this project has been developed with the amazing Vue-CLI, you can use its own integrated CLI commands to serve or build the application.
npm run serve
npm run build
npm run lint