Full-Stack Web Development with Jakarta EE and Vue.js: Your One-Stop Guide to Building Modern Full-Stack Applications with Jakarta EE and Vue.js
()
About this ebook
Harness the power of Jakarta EE to build sturdy back ends while applying Vue.js on the front end. The demand for modern, high-performing enterprise web applications is growing swiftly. The basic HTML front end is no longer enough to meet customer demands. This book shows you how to unlock professional full-stack web development using Jakarta EE and Vue.js.
First, you will review the fundamental concepts of Vue.js and essential features of Jakarta EE. You'll then see how to build web applications through every stage of the process, taking into consideration requirement analysis, data model design, code design, the UI, and technical designs, all the way through to implementation, testing, production deployment, and monitoring. Towards the end of the book, you will also learn about the key design patterns and best practices that underpin professional full-stack web development.
Full-stack development is the way forward on the web, and using JakartaEE and Vue.js is a great place to start. Get up-to-speed using this book today.
What You'll Learn
- Connect an application's frontend and backend with Vue.js and Jakarta EE
- Build enterprise web applications from start to finish
- Test, secure and deploy your enterprise web applications
- Apply common patterns when building full stack applications
- Understand the current IT architecture situation of a company, and define a roadmap to accomplish the company goals
- Create decoupled applications using software craftsmanship ideas
Who This Book Is For
Java/Jakarta EE developers who would like to gain a stronghold on both frontend and backend development. Basic knowledge of Java EE is assumed.
Related to Full-Stack Web Development with Jakarta EE and Vue.js
Related ebooks
Building Progressive Web Applications with Vue.js: Reliable, Fast, and Engaging Apps with Vue.js Rating: 0 out of 5 stars0 ratingsLearn Java for Web Development: Modern Java Web Development Rating: 0 out of 5 stars0 ratingsBuilding Scalable Apps with Redis and Node.js Rating: 0 out of 5 stars0 ratingsImplementing C# 11 and .NET 7.0: Learn how to build cross-platform apps with .NET Core (English Edition) Rating: 0 out of 5 stars0 ratingsBeginning Java EE 7 Rating: 4 out of 5 stars4/5Building React Apps with Server-Side Rendering: Use React, Redux, and Next to Build Full Server-Side Rendering Applications Rating: 0 out of 5 stars0 ratingsCode with Java 21: A practical approach for building robust and efficient applications (English Edition) Rating: 0 out of 5 stars0 ratingsGetting to Know Vue.js: Learn to Build Single Page Applications in Vue from Scratch Rating: 0 out of 5 stars0 ratingsReact.js Essentials Rating: 4 out of 5 stars4/5Vue.js for Jobseekers: A complete guide to learning Vue.js, building projects, and getting hired (English Edition) Rating: 0 out of 5 stars0 ratingsMastering MEAN Stack: Build full stack applications using MongoDB, Express.js, Angular, and Node.js (English Edition) Rating: 0 out of 5 stars0 ratingsLearn Angular: 4 Angular Projects Rating: 0 out of 5 stars0 ratingsJavaScript Frameworks for Modern Web Development: The Essential Frameworks, Libraries, and Tools to Learn Right Now Rating: 0 out of 5 stars0 ratingsReact Native for Mobile Development: Harness the Power of React Native to Create Stunning iOS and Android Applications Rating: 0 out of 5 stars0 ratingsPractical Oracle JET: Developing Enterprise Applications in JavaScript Rating: 0 out of 5 stars0 ratingsBuilding Web Applications with .NET Core 2.1 and JavaScript: Leveraging Modern JavaScript Frameworks Rating: 0 out of 5 stars0 ratingsCloud Native Integration with Apache Camel: Building Agile and Scalable Integrations for Kubernetes Platforms Rating: 0 out of 5 stars0 ratingsBeginning Backbone.js Rating: 3 out of 5 stars3/5Practical Enterprise React: Become an Effective React Developer in Your Team Rating: 0 out of 5 stars0 ratingsLearn JavaScript with p5.js: Coding for Visual Learners Rating: 0 out of 5 stars0 ratingsJump Start Vue.js Rating: 4 out of 5 stars4/5Docker: Up and Running: Build and deploy containerized web apps with Docker and Kubernetes (English Edition) Rating: 0 out of 5 stars0 ratingsBeginning Java MVC 1.0: Model View Controller Development to Build Web, Cloud, and Microservices Applications Rating: 0 out of 5 stars0 ratingsWeb Applications with Elm: Functional Programming for the Web Rating: 0 out of 5 stars0 ratingsPro Java Microservices with Quarkus and Kubernetes: A Hands-on Guide Rating: 0 out of 5 stars0 ratingsReactJS for Jobseekers: The Only Guide You Need to Learn React and Crack Interviews (English Edition) Rating: 0 out of 5 stars0 ratingsBeginning Jakarta EE: Enterprise Edition for Java: From Novice to Professional Rating: 0 out of 5 stars0 ratings
Internet & Web For You
The $1,000,000 Web Designer Guide: A Practical Guide for Wealth and Freedom as an Online Freelancer Rating: 5 out of 5 stars5/5The Logo Brainstorm Book: A Comprehensive Guide for Exploring Design Directions Rating: 4 out of 5 stars4/5Beginner's Guide To Starting An Etsy Print-On-Demand Shop Rating: 0 out of 5 stars0 ratingsGrokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5How To Make Money Blogging: How I Replaced My Day-Job With My Blog and How You Can Start A Blog Today Rating: 4 out of 5 stars4/5Python QuickStart Guide: The Simplified Beginner's Guide to Python Programming Using Hands-On Projects and Real-World Applications Rating: 0 out of 5 stars0 ratingsCoding All-in-One For Dummies Rating: 4 out of 5 stars4/5The Mega Box: The Ultimate Guide to the Best Free Resources on the Internet Rating: 4 out of 5 stars4/5Coding For Dummies Rating: 5 out of 5 stars5/5The Digital Marketing Handbook: A Step-By-Step Guide to Creating Websites That Sell Rating: 5 out of 5 stars5/5The Designer's Web Handbook: What You Need to Know to Create for the Web Rating: 0 out of 5 stars0 ratingsCybersecurity For Dummies Rating: 4 out of 5 stars4/5Everybody Lies: Big Data, New Data, and What the Internet Can Tell Us About Who We Really Are Rating: 4 out of 5 stars4/5200+ Ways to Protect Your Privacy: Simple Ways to Prevent Hacks and Protect Your Privacy--On and Offline Rating: 0 out of 5 stars0 ratingsHow To Start A Profitable Authority Blog In Under One Hour Rating: 5 out of 5 stars5/5How To Start A Podcast Rating: 4 out of 5 stars4/5Mike Meyers' CompTIA Security+ Certification Guide, Third Edition (Exam SY0-601) Rating: 5 out of 5 stars5/5Hacking : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Ethical Hacking Rating: 5 out of 5 stars5/5Six Figure Blogging Blueprint Rating: 5 out of 5 stars5/5Social Engineering: The Science of Human Hacking Rating: 3 out of 5 stars3/5How to Disappear and Live Off the Grid: A CIA Insider's Guide Rating: 0 out of 5 stars0 ratingsThe Internet Is Not What You Think It Is: A History, a Philosophy, a Warning Rating: 4 out of 5 stars4/5Remote/WebCam Notarization : Basic Understanding Rating: 3 out of 5 stars3/5How to Be Invisible: Protect Your Home, Your Children, Your Assets, and Your Life Rating: 4 out of 5 stars4/5Podcasting For Dummies Rating: 4 out of 5 stars4/5Stop Asking Questions: How to Lead High-Impact Interviews and Learn Anything from Anyone Rating: 5 out of 5 stars5/5
Reviews for Full-Stack Web Development with Jakarta EE and Vue.js
0 ratings0 reviews
Book preview
Full-Stack Web Development with Jakarta EE and Vue.js - Daniel Andres Pelaez Lopez
© Daniel Andres Pelaez Lopez 2021
D. A. P. LopezFull-Stack Web Development with Jakarta EE and Vue.jshttps://doi.org/10.1007/978-1-4842-6342-6_1
1. Full-Stack Web Development with Jakarta EE
Daniel Andres Pelaez Lopez¹
(1)
Medellin, Colombia
In this chapter, we are going to cover the basics of full-stack development with Jakarta EE, talking about general concepts and the environment’s installation, so that you will understand where and how to start your full-stack project in a hands-on manner.
The following topics will be covered in this chapter:
Understanding Java EE and Jakarta EE basics
Using GlassFish application server as an example
Environment installation
Understanding Jakarta EE project structure
Technical Requirements
Java 1.8
Netbeans 11
Eclipse GlassFish
Java Enterprise Edition
Jakarta Enterprise Edition
We are not going to cover Java 1.8 installation in this chapter.
You can check the whole project and code at https://github.com/Apress/full-stack-web-development-with-jakartaee-and-vue.js/tree/master/CH1/.
Using Jakarta Enterprise Edition as a Back-End Layer
The first design we will create in our heads for a software project splits the responsibilities into at least two segments: front-end and back-end.
There are a lot of back-end technologies in different languages and with different features. In this book, we are going to cover Jakarta Enterprise Edition as our back-end framework.
Java Enterprise Edition
Java Enterprise Edition is an enterprise standard created by Sun Microsystems (later bought by Oracle Inc.) that uses different specifications to enrich web applications, from database access to RESTful services. There you will find:
Well-known standards and specifications like JAX-RS or JPA. A programming models based on layers.
Highly featured application servers supporting those standards.
A well-constituted community of developers and companies using the specification.
Note
We are not going to cover the details of how the specification is created and validated in this book. However, I suggest you read more about this interesting process through different people and organizations here: https://javaee.github.io/javaee-spec/.
Java EE applications have been in the market for a long time, from J2EE 1.2 (December 12, 1999) until today, with the current version being Java EE 8 (August 31, 2017). You can have a look at the list of version releases at https://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition.
Note
For the purposes of this book, we assume you have a basic understanding of Java EE applications.
Today, a lot of companies have their systems over the Java EE platform due to their robust application servers and pretty good support. However, its evolution has been slow and other frameworks in the Java ecosystem have shown up, like Spring or Play.
For its own reasons, Oracle Inc. made the choice to open source the Java EE specification. You will learn more details about this in the next section.
Jakarta Enterprise Edition
Java EE has been a great tool to build enterprise applications using Java. However, its evolution has been slower in comparison to other similar frameworks like Spring Framework.
As it was slowly evolving, the leading software vendors (including Oracle Inc.), who supports and implements Java EE, collaborated to move Java EE as open source and named Jakarta EE, handled by the Eclipse Foundation, to boost up its development and evolution.
Tip
Java EE is the Oracle trademark; that’s why the name was changed. You can find more information here: https://blogs.oracle.com/theaquarium/the-road-to-jakarta-ee
In September 2019, Jakarta EE 8 was released by the Eclipse Foundation. In addition, Eclipse released the Eclipse GlassFish 5.1 application server fully compatible with Jakarta EE 8. This first release was not a huge technical one but was more about negotiations, processes, and specifications related to the open sourcing strategy. Also, the Eclipse Foundation released the first Java API specification, changing from the javax.* namespace (Java EE) to jakarta.* namespace (Jakarta EE).
Jakarta EE won’t stop here, as new versions are being planned for release.
Note
You can find more information here: https://www.infoworld.com/article/3437783/eclipse-jakarta-ee-arrives.html
From here, we are going to use Jakarta EE as a specification reference.
Using Eclipse GlassFish Application Server: An Open Source Jakarta EE Reference Implementation
An application server is a comprehensive framework that allows us to create web applications, giving us a set of tools and APIs to facilitate our job. Jakarta EE is a set of specifications defined for application servers. So, in the market, at the time I wrote this book, you find Eclipse GlassFish, OpenLiberty, and WildFly as servers supporting Jakarta EE. You can find more information here: https://jakarta.ee/compatibility.
Note
For Java EE, there are more servers like JBoss, Tomcat EE, WebLogic, and so on.
The Eclipse GlassFish application server is a fully compliant server for Jakarta EE standards and specifications. GlassFish is usually the first server that gets updated when a new Jakarta EE specification arrives.
We are going to install GlassFish through Netbeans IDE in the following section.
Using Apache Netbeans IDE
Netbeans is the default IDE used when developing an application using Java EE. It has the latest Java EE integrations and plugins and is up to date with the current specification; however, it is not upgraded yet to use Jakarta EE by default.
Until Netbeans 8.2, Oracle Inc. handled and sponsored it. After that version, Oracle released the IDE as an open source project to Apache. We have now the 11 incubating version, which has enough features to work with Jakarta EE
For the purposes of this book, we are going to use Netbeans as a default IDE; however, you can choose one at your discretion or just use your favorite one.
Note
For more information on Netbeans and Java EE compatibility, you can have a look at the questions posted at https://stackoverflow.com/questions/45852077/netbeans-how-to-add-a-javaee-version and https://stackoverflow.com/questions/46528103/upgrade-netbeans-to-jee-8.
Tip
At the time of writing this book, Intellj IDE supports Java EE in the Ultimate edition.
Netbeans 11.1 was released while we were writing this book; however, it is
in an unstable state. You can see more information here: https://netbeans.apache.org/download/nb111/index.html.
Installing Apache Netbeans
We are going to use the Netbeans 11 version. For the setup and installation, the following steps need to be performed:
1.
Download the installer for your specific SO from https://netbeans.apache.org/download/nb110/nb110.html.
2.
Unzip the file. You will find the folders shown in Figure 1-1.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig1_HTML.jpgFigure 1-1
Netbeans installation folder
3.
Move to the bin folder and run NetBeans using the right runner for your OS. You will see the window in Figure 1-2.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig2_HTML.jpgFigure 1-2
Netbeans home
Now, let’s integrate the Eclipse GlassFish server into Netbeans.
1.
In the right-top box, search for Server, and click on Server Tools. You will see the window in Figure 1-3.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig3_HTML.jpgFigure 1-3
Window to aggregate a server
2.
Now, click on Add Server, and then select GlassFish Server as shown in Figure 1-4.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig4_HTML.jpgFigure 1-4
Selecting GlassFish Server configuration
3.
Click on Download and Activate ... to start downloading the support for Java EE and Web, as shown in Figure 1-5.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig5_HTML.jpgFigure 1-5
Downloading and activating the Java Web and EE support
4.
After your download is completed and you have activated the features, click on Next. This will bring up the screen in Figure 1-6.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig6_HTML.jpgFigure 1-6
Choosing the latest GlassFish Server version
5.
Choose your GlassFish installation location. You can choose between an already created GlassFish installation or download a new one. In this case, I choose to download the latest GlassFish Server. As I use the server locally, I let it remain as a Local Domain, as shown in Figure 1-7.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig7_HTML.jpgFigure 1-7
Setting the location of the GlassFish installation
6.
Now, set up the environment as local and use root as a user and password for now. Use the default domain as domain1 that is given by GlassFish, as shown in Figure 1-8.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig8_HTML.jpgFigure 1-8
Setting the domain, host, user name, and password to access GlassFish
7.
When you click on Finish, you will see the GlassFish Server summary in Figure 1-9.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig9_HTML.jpgFigure 1-9
GlassFish settings summary
Note that the GlassFish application server includes Java DB (Derby) by default, and following the above process, this database is automatically registered on Netbeans, as shown in Figure 1-10.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig10_HTML.jpgFigure 1-10
Derby database by default
In the following section, we are going to discuss what a Jakarta EE project looks like.
Jakarta EE Project Structure
Now you are going to create a new Java EE project. Remember, Netbeans 11 cannot create Jakarta EE projects, only Java EE 7. So, we are going to use Java EE 7 and upgrade the project to the Jakarta EE at hand.
1.
Navigate to File | New Project, select Java with Maven for category, and Enterprise Application for projects as shown in Figure 1-11.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig11_HTML.jpgFigure 1-11
Choosing the category and project type for the new project
2.
Now, define the basic project data like name, location, and so on. Once this is done, click on Next, as shown in Figure 1-12.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig12_HTML.jpgFigure 1-12
Choosing the location, group id, version, and package for the new project
3.
Choose the latest Java EE version and define the projects’ names, as shown in Figure 1-13. I suggest you do not change the suffix due to the clarity of what the main purpose of those projects is. You will see the meaning of those names later.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig13_HTML.jpgFigure 1-13
Choosing the Java EE version and the default names for each project
4.
Now, you will see this project structure in Figure 1-14.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig14_HTML.jpgFigure 1-14
View of the generated projects
You can see four created projects. Let’s discuss what they mean:
StartWithJEE: This is the Maven parent project, and its only goal is to group the other three projects as modules.
StartWithJEE-web: This is the web module. It will handle web files, web pages, RESTful services, and static resources.
StartWithJEE-ejb: This is the core module. It will handle the Enterprise Java Beans, business logic, and database access.
StartWithJEE-ear: This is the Enterprise Archive, and it has the whole application.
Tip
By default, Netbeans will not create a .gitignore file. So, I suggest adding one, for instance: https://github.com/javaee-samples/javaee8-samples/blob/master/.gitignore
Now, Netbeans adds the right Java EE dependencies (besides others) to the project as you see in Figure 1-15.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig15_HTML.jpgFigure 1-15
Java EE dependencies for StartWIthJEE-ejb and StartWIthJEE-web projects
We found two important dependencies there:
javaee-api-7.0: Java EE general specification, like EJBs.
jarjavaee-web-api-7.0.jar: Java EE web specification, like filters and servlets.
As you can see, those are Java EE 7 APIs, as we created the project using the Java EE 7 specification.
As we want to use Jakarta EE, we need to update some dependencies in the new project. Listing 1-1 provides a fragment of the current pom.xml for StartWithJEE-web.
Listing 1-1
Previous Java EE dependency and plugin on StartWithJEE-web/pom.xml
The following is a description of the code sample:
1.
Here we see the Java EE 7 web dependency. We must update it using the new Jakarta EE API as Listing 1-2 provides.
Listing 1-2
New Jakarta EE dependency on StartWithJEE-web/pom.xml
2.
Here, there is a plugin using the endorsed Java EE 7 web libraries to copy them on the final executable. Jakarta EE does not have endorsed libraries, so let’s remove this plugin from the StartWithJEE-web/pom.xml file.
Now, we must update the pom.xml in the StartWithJEE-ejb. Listing 1-3 provides a fragment of the current pom.xml for StartWithJEE-ejb.
Listing 1-3
Previous Java EE dependency on StartWithJEE-ejb/pom.xml
The following is a description of the code sample:
1.
Here we see the Java EE 7 dependency. We must update it using the new Jakarta EE API as Listing 1-4 provides.
Listing 1-4
New Jakarta EE dependency on StartWithJEE-ejb/pom.xml
2.
Here, there is a plugin using the endorsed Java EE 7 web libraries to copy them on the final executable. Jakarta EE does not have endorsed libraries, so let’s remove this plugin from the StartWithJEE-ejb/pom.xml file.
Now, let’s refresh the Maven dependencies, and you will see the updated libraries as shown in Figure 1-16.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig16_HTML.jpgFigure 1-16
After updating Maven dependencies, you see the new API version
After the poms files are updated, we can build the application:
1.
First, Clean and Build the StartWithJEE-ejb project using the right-click menu, as shown in Figure 1-17.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig17_HTML.jpgFigure 1-17
Menu to clean and build the StartWithJEE-ejb project
2.
And then Clean and Build the StartWithJEE-web project, as you see in Figure 1-18.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig18_HTML.jpgFigure 1-18
Menu to clean and build the StartWithJEE-web project
3.
Finally, Clean and Build the Maven parent project StartWithJEE, as shown in Figure 1-19.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig19_HTML.jpgFigure 1-19
Menu to clean and build the StartWithJEE8 project
You will see an output like that shown in Figure 1-20.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig20_HTML.jpgFigure 1-20
Console output after clean and build the StartWithJEE project
Now we have the new project ready to run in the following section.
Running the Jakarta EE Project
Let’s run our project. We will do so by right-clicking over StartWithJEE-ear and then selecting Run, as shown in Figure 1-21.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig21_HTML.jpgFigure 1-21
Running the StartWithJEE-ear project
Three output consoles will be opened:
The first one is the Run console, as shown in Figure 1-22. You will see the IDE process to run the application, which server you are using and this setup, and finally, which project you are deploying.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig22_HTML.jpgFigure 1-22
Console output for the artifact generation and deployment
The second output console is the Java DB (Derby) process, like in Figure 1-23.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig23_HTML.jpgFigure 1-23
Console output for Java DB process
The third output console is the GlassFish server log, shown in Figure 1-24. You will see the deployment process and what the web context has.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig24_HTML.jpgFigure 1-24
Console output for GlassFish Server
Now the application is running and can be accessed through
http://localhost:8080/StartWithJEE-web/, as shown in Figure 1-25.
../images/499303_1_En_1_Chapter/499303_1_En_1_Fig25_HTML.jpgFigure 1-25
Hello World page for the running application
We just set our back-end environment using Jakarta EE, Netbeans 11, and GlassFish 5.1. We are ready to move to the upper layer, our Vue.js front end.
Summary
Jakarta EE is a pretty good option to choose when you need a back-end framework. It solves plenty of the basic problems you might find while creating any full-stack application.
In this chapter, we saw which software we need to run a Jakarta EE application, how to install the basic elements to start to code it, the structure of a Jakarta EE project, and how to run the project.
In the following chapters, we are going to see details about what Vue.js offers us as a front-end framework.
Extended Knowledge
1.
Why is Oracle changing the JavaEE name to Jakarta?
2.
Can we add more projects to an EAR than just WEB and EJB?
3.
How do we disable Java DB (Derby) to start at the same time as the GlassFish server?
4.
Which servers exist to work with Jakarta EE?
© Daniel Andres Pelaez Lopez 2021
D. A. P. LopezFull-Stack Web Development with Jakarta EE and Vue.jshttps://doi.org/10.1007/978-1-4842-6342-6_2
2. Vue.js as a Front-End Layer
Daniel Andres Pelaez Lopez¹
(1)
Medellin, Colombia
In this chapter, we are going to cover the basics of full-stack development with Vue.js, as a front-end layer, talking about the general concepts and environment installation so that you will understand where to start your full-stack project in a hands-on manner.
The following topics will be covered in this chapter:
Understanding Vue.js basics
Using the CLI to create a project
Using Visual Studio Code to open the project and run it
Installing plugins to help us to work with Vue.js
Debugging a Vue.js application through Visual Studio Code or Google Chrome
Technical Requirements
For this chapter, we are going to require the following:
Node.js 10.13.0
Npm 6.7.0
Nvm 0.34.0
Visual Studio Code 1.33.1
We are not going to cover Visual Studio Code installation in this chapter.
You can check the whole project and code at https://github.com/Apress/full-stack-web-development-with-jakartaee-and-vue.js/tree/master/CH2.
Vue.js
The front-end layer has changed a lot in the last few years, from server-side render using JSP to client-side render using JavaScript, or enhanced versions named single page applications.
Single page applications are a relatively new concept, where the whole front-end application is on the client side, in this case, in the browser. That means the server just serves the initial HTML page (single page) with a set of JavaScript libraries, and the browsers put those together to create the view.
The single page application usually communicates with the back-end layer using RESTful services. Also, there are other alternatives likes WebSockets or events.
Vue.js is a popular single page application framework. Vue.js is defined as:
Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces. Unlike other monolithic frameworks, Vue is designed from the ground up to be incrementally adoptable.
—https://vuejs.org/v2/guide/
We are going to use NPM as a package manager for our Vue.js application. So, let’s see what NPM is in the following section.
Understanding NodeJS and NPM
NodeJS is a JavaScript runtime, offering the option to run JavaScript applications outside a web browser. It uses the Google Chrome engine as its core.
Tip
To compare with something back-end related, NodeJS is to JavaScript as the JVM is to Java.
For our case, we will use NodeJS as a part of the dependency management infrastructure with NPM and NVM.
For dependency management, we mean the library dependencies any project can have, for instance, HTTPs communication or UI enhancements. We will see this in detail in the following sections.
Installing NodeJS through NVM
As the JVM, we can have different NodeJS versions in a machine to peform different tests or create backward-compatible applications.
NVM is a NodeJS Version Manager, a software that allows you to handle different NodeJS versions in your machine.
So, let’s start with the NVM and NodeJS installation:
1.
Install NVM. We won’t show the details about this, but you can follow the installation instructions here: https://github.com/nvm-sh/nvm
2.
After the installation, you can verify the version with the following command, as shown in Figure 2-1.
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig1_HTML.jpgFigure 2-1
Checking the NVM version
nvm--version
3.
Now, let’s install the NodeJS environment:
nvm install 11.3.0
4.
To verify the installation, run the following command, as shown in Figure 2-2.
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig2_HTML.jpgFigure 2-2
Checking the NodeJS version
node --version
After this process, we have NVM to help us control multiple NodeJS versions, and we have one NodeJS version installed.
As NodeJS is just a JavaScript runtime, we will need to add external libraries and frameworks to build JavaScript applications. NPM will help us with that.
Understanding NPM
In a NodeJS environment, you can have multiple plugins or frameworks to help you in your JavaScript development process, like ESLint for static code analysis or Vue.js CLI, which we are going to discuss in the following sections.
NPM is the NodeJS Package Manager; it means you can use it to install, update, or remove any framework you want to have in your application.
Tip
To compare with something back-end related, NPM is the Maven framework for JavaScript developers.
NPM is already included in your NodeJS installation, so, you can check your current version with the following command, as shown in Figure 2-3.
npm --version
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig3_HTML.jpgFigure 2-3
Checking the NPM version
Now we are ready to move to our first Vue.js application.
Hello World Project with a Vue.js CLI
In this section, we will create a Vue.js project from scratch. Vue.js has some utilities that help us to create applications in an easy manner. One of them is the Vue.js CLI.
Vue.js CLI (Command-Line Interface) gives us some useful features:
CLI: Provides the vue command allowing you to create and prototype ideas; moreover, it gives you a graphical user interface to handle your projects.
CLI Service: Built over webpack, it gives you some useful commands and scripts to run and build your application.
CLI Plugins: They are NPM packages to enhance your application like unit testing or TypeScript transpilation.
Installing Vue.js CLI
To install the CLI, use the following command, as shown in Figure 2-4.
npm install -g @vue/cli
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig4_HTML.jpgFigure 2-4
Installing Vue.js CLI
You can check if you have the right version (3.x) or not with the following command, as you can see in Figure 2-5.
vue --version
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig5_HTML.jpgFigure 2-5
Checking Vue.js CLI version
Note
At the time we wrote this book, the Vue.js CLI latest version was 3.7.0.
Creating a New Project
We can use the CLI to create a basic project. We can choose for a Web UI or a CMD (Command Line) to follow the instructions. In this case, we are going to use Web UI:
1.
Run the following command, as shown in Figure 2-6.
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig6_HTML.jpgFigure 2-6
Starting the Web UI tool to create a Vue.js project
vue ui
2.
That command starts a server where you can handle the Vue.js projects and setup. Let’s access the address: http://localhost:8080, as you see in Figure 2-7. You will see the existing projects and you can create new ones. Those will be located on the folder you set in the bottom.
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig7_HTML.jpgFigure 2-7
Home page for the Vue.js CLI UI
3.
Let’s create a new project. Click on the Create option, shown in Figure 2-8. You can choose where you want the project to be created, and click on Create a new project here.
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig8_HTML.jpgFigure 2-8
Initial setup to create a new Vue.js project
4.
You start to add the details, like the location, which package manager to use (by default is NPM), and additional options (let’s leave them by default), as shown in Figure 2-9. Click Next.
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig9_HTML.jpgFigure 2-9
Defining location and package manager for the new Vue.js project
5.
Now, you can add plugins to your application. Let’s click on the Manual option and Next button. This will allow us to customize some plugins we need, like in Figure 2-10.
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig10_HTML.jpgFigure 2-10
Setting the plugins for the new Vue.js project manually
6.
We are going to use Babel, TypeScript, Router, and Vuex plugins, so, let’s check those options, as shown in Figure 2-11 and click Next.
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig11_HTML.jpgFigure 2-11
Adding Babel, TypeScript, Router, and Vuex plugins to the new Vue.js project
Note
We are going to talk about Babel, TypeScript, Router, and Vuex plugins in the following chapters.
7.
Choose the Pick a linter / formatter config as ESLing + Standard Config, as shown in Figure 2-12, and click on Create Project.
../images/499303_1_En_2_Chapter/499303_1_En_2_Fig12_HTML.jpg