Building web applications involves having to use different technologies and tools, dealing with database manipulation, server side operations, and also client side handling and displaying of the data that comes from the server. Before starting a new project, all the tools and project structure has to be setup, which is a time consuming task. Using a framework or a stack for this task can speed up development and ease the work for the developer.
This is how the authors of the MEAN stack define it on their website. It's very clear that MEAN is targeting all kinds of JavaScript developers (both server and client side) and also that it is a stack platform which, indicates that there are several components comprising it.
These components are:
As you can see, MEAN brings together four of the most used and appreciated technologies for JavaScript development, laying down the foundation for easily building complex web applications.
Another option available from here is to clone the Git repository. Just open a terminal and issue the following command:
and then using yo to create the app:
The example above assumes installation of the
Addy Osmani wrote a very interesting blog postabout MEAN stack and Yeoman generators for it. I strongly recommend reading that, in order to find out how to install the stack using generators.
For the purpose of this article, I will use the Git cloning approach.
I bet you are curious to see some code up to now... So let's check it out. The MEAN stack folder structure should be like the following:
The
This is the file that starts the entire application. If you do not want to use
The
The
This folder contains the application configuration files. Inside you can find an
Also, there are files containing the configuration for the application itself, the express part and the passport configuration for logging in.
The
Inside the
By default, there are controllers for the articles, users, and an index file for the root path. Also, models for the articles and users are created and routes for articles, users, and the root path are created during installation.
As for the default created views, the following structure is created:
The
The
In the root of the
Special attention should be paid to the
Finally, the
Something important to mention that JSHint is provided and all the JavaScript code is linted. Also, using Grunt, the project can be watched for modifications and rebuilt automatically.
Stay tuned for the second part!
What Is MEAN
"MEAN is a fullstack JavaScript platform for modern web applications".This is how the authors of the MEAN stack define it on their website. It's very clear that MEAN is targeting all kinds of JavaScript developers (both server and client side) and also that it is a stack platform which, indicates that there are several components comprising it.
These components are:
As you can see, MEAN brings together four of the most used and appreciated technologies for JavaScript development, laying down the foundation for easily building complex web applications.
Installation
The MEAN stack can be installed in two ways:Installing MEAN Using Its Site
This method is quite simple. You just have to visit the mean.io site and then you can download the framework as azip
file by clicking on the big green button.Another option available from here is to clone the Git repository. Just open a terminal and issue the following command:
1 | git clone https: //github .com /linnovate/mean .git |
Installing MEAN Using Yeoman
There are several Yeoman generators, written by different developers. Using a generator to install MEAN is done in two steps, first installing the generator:1 | npm install -g generator-meanstack |
1 | yo meanstack |
meanstack
generator and also that Yeoman is installed. For a list of MEAN generators, check this link and filter by "mean". For information on installing Yeoman, check the Yeoman site.Addy Osmani wrote a very interesting blog postabout MEAN stack and Yeoman generators for it. I strongly recommend reading that, in order to find out how to install the stack using generators.
For the purpose of this article, I will use the Git cloning approach.
Post Installation
After installation, justcd
into the folder where you installed the MEAN stack and issue the grunt
command (you should have grunt-cli
installed). This command will start a server listening on port 3000, so visiting http://localhost:3000
in the browser will display something like this:What We've Got After Installation
The MEAN stack is in fact a fully functional blog engine application. It has authentication using various methods: Facebook, GitHub, Twitter or Google and also by simple e-mail and password.I bet you are curious to see some code up to now... So let's check it out. The MEAN stack folder structure should be like the following:
The Server Part
The server is split over two folders and one file:app
folder - contains the controllers, models and views that make up the applicationconfig
folder - contains the files that control how the parts of the app behaveserver.js
- is the entry point of the application
The server.js
File
This is the file that starts the entire application. If you do not want to use grunt
you can use node server,js
in order to start the server.The
server.js
file is responsible for:- Loading configuration. The files for configuring the application itself, authentication and database connection are loaded.
- Bootstrapping the models. This is done by iterating through the models folder and loading all the files inside that folder (or its subdirectories).
- Bootstrap passport
- Initialize the express application
- Configure the express application
- Configure express application routes
- Start listening on the configured port.
The config
Folder
This folder contains the application configuration files. Inside you can find an env
folder containing configurations for the development, production and test modes for running the application.Also, there are files containing the configuration for the application itself, the express part and the passport configuration for logging in.
The app
folder
Inside the app
folder, resides the entire server side code. This folder contains sub-folders for the controllers, models and views that compose the MVC server application and also a folder for the routes that are served.By default, there are controllers for the articles, users, and an index file for the root path. Also, models for the articles and users are created and routes for articles, users, and the root path are created during installation.
As for the default created views, the following structure is created:
The
includes
folder contains the footer and header parts of the pages which are inserted into all the pages belonging to the app. The layout
folder contains the base HTML for the page layout. This layout is extended into the index.html
file from the views
folder.The
users
folder contains the markup code for signing in, signing up and authenticating.In the root of the
views
folder, beside the index.html
file, there are files containing the markup for 404 and 500 errors.The Client Part
The client part code resides in thepublic
folder. This folder contains a css
subfolder for application styling and an img
folder containing the images used in the application. Special attention should be paid to the
js
folder which contains the Angular code for the client side app, the initialization code, some directives and filters code (currently empty files) and the controllers and services for the articles and the header part of the application.The views
folder contains the markup for article creation, editing, displaying and viewing.Finally, the
lib
folder contains the Angular library code.Application Testing
Thetest
folder contains the files for testing the application. Mainly there are files for testing the server part using Mocha and files for testing the client part using Karma.Tools Provided
While using the MEAN stack, you as the developer, also have access to npm, bower, and grunt which should be installed,Something important to mention that JSHint is provided and all the JavaScript code is linted. Also, using Grunt, the project can be watched for modifications and rebuilt automatically.
Conclusion
This article is intended to be followed-up by a second tutorial, in which a complete application will be built on top of the MEAN stack, showing you how MEAN can be configured and adapted, to be used for other types of applications.Stay tuned for the second part!
No comments:
Post a Comment