Getting Began with a New Vue.js Challenge in 2023



Constructing Higher Vue.js Functions in 2023

10 min learn

14 hours in the past

Vue.js is a framework constructed on prime of HTML, CSS, and JavaScript that seamlessly presents a component-driven structure to construct mission-critical manufacturing apps. When it was first introduced in 2014, it took the software program business by storm, providing a greater (and extra progressive) method to constructing frontend functions.

In contrast to its rivals (React and Angular), Vue.js was particularly designed to bridge the gaps between React and Angular. It aimed to enhance frontend parts’ maintainability and testability by providing a extra progressive method to creating frontend apps.

It let customers keep JavaScript, HTML, and CSS code, all in a single file, which considerably helped enhance element maintainability and testability.

One essential piece remained the identical. Vue.js builders nonetheless needed to develop and keep their manufacturing apps as a single big monolith. Although this works for small tasks, it doesn’t scale properly for giant apps.

Prospects in 2023 need you to construct advanced apps quicker.

Nonetheless, creating big Vue.js monolithic apps is not going to assist you make such advanced apps shortly. Subsequently, it’s good to take a look at a greater method should you construct manufacturing apps with Vue.js in 2023.

Not too long ago, I got here throughout a modernized method in the direction of frontend improvement by way of distributed component-driven architectures. It focuses on constructing frontend apps in a distributed method, the place every element might be independently designed, developed, examined, and versioned. We are able to considerably enhance how we develop production-ready Vue.js functions by adopting this new method.

A component-driven structure goals to extend element reusability by decomposing massive advanced functions into less complicated parts. Nonetheless, you would possibly discover this complicated as you’ve seemingly constructed many Vue.js apps by way of parts.

Nonetheless, in 2023, constructing parts don’t minimize it. You’re nonetheless trapped inside an enormous monolith utility, and also you lose the flexibility to scale the app as you develop.

That is the place instruments like Bit come into play. Bit is a device that helps builders construct distributed component-driven functions and collaborate on parts unbiased of a Git repo or some other improvement setup. It lets you freely undertake architectural patterns such because the Micro Frontends sample to enhance your improvement productiveness, cut back prices, and align it along with your backend microservice.

Determine: A distributed element tree

As proven above, every element is positioned in a separate house (remoted from the remaining). Adopting such an method lets you design, develop, take a look at, and model a single element in whole isolation.

You not want entry to your whole manufacturing utility to alter a single element! All you will want is entry to your single element, which, as soon as modified and versioned, will cycle again by way of its dependency tree and replace all its dependents.

And, similar to that, this helps save a large period of time as you not want to attend for an app to compile after making a mere change to a element’s background color!

Step 01 — Pre-requisites

First, it’s essential to arrange Bit in your native improvement surroundings earlier than creating a modular Vue.js app.

Should you’ve configured Bit, guarantee you might be on the newest model.

You possibly can set up Bit by executing the command proven beneath:

npx @teambit/bvm set up

To verify the set up, run the command bit --version. It’s best to see the output I’ve illustrated beneath.

Determine: Verifying the set up of Bit

Subsequent, create an account on Bit and create a scope to export the parts you’ll construct together with me on this article!

Determine — Creating the demo scope

Step 02 — Initializing the event surroundings

Subsequent, you will want some improvement house to compose your parts. In Bit, this is named a “Workspace”. Subsequently, it’s essential to create a workspace that can be utilized to develop your Vue.js parts. This may be executed with the command proven beneath.

bit new vue my-workspace --env teambit.vue/vue --default-scope

If you run this command, be sure that you present your group and scope title and change the default “”. For my case, I supplied my Bit username and the scope I created in step 01 — “lakindu2002.demo-vue-js“.

The command above creates a brand new Bit workspace that shall be configured to design and develop Vue.js parts. It makes use of the teambut.vue/vue surroundings to supply a runtime for the Vue.js parts to run.

Subsequent, run bit begin and go to http://localhost:3000 to launch your native improvement surroundings to begin constructing your Vue.js parts. You will notice the snippet beneath.

Determine: Beginning the event server

Step 03 — Making a Vue.js element

Now that your improvement server is working, you can begin constructing your Vue.js parts! With Bit, making a Vue.js element will be executed in a single easy command:

bit create vue <<NAMESPACE>>/<<COMPONENT-NAME>>

Should you’re not accustomed to a namespace is — consider it as a subdirectory to retailer your parts in

So, should you have been making a design element comparable to a button, you’d write the command — bit create vue design/button. This allows you to arrange your parts neatly inside a scope. After you run the command, you may see the listing proven beneath.

The most important distinction is that the Bit element isn’t tied to any Vue.js utility. As an alternative, its Vue.js surroundings can be utilized to independently develop, take a look at, and model the element.

Determine: Exploring the listing

At a single look, it’s evident that this brings about a number of benefits for a developer:

  1. By default, Bit enforces you to undertake TDD by offering a take a look at file spec.ts, making certain that the code you ship out is bug-free.
  2. Subsequent, you’re supplied with a documentation file .md to assist maintain your element documented to make sure most maintainability.
  3. Moreover, you get to outline compositions in your element to showcase the totally different variants you propose to help!
  4. You possibly can undertake an excellent coding customary since you should take into consideration parts independently. You don’t write parts fascinated about its shoppers. This helps you create extra significant property names related to your creating element.

Step 04 — Growing a Vue.js element

Now that we’ve created a easy element (Button), let’s begin constructing the element. Let’s begin by defining the take a look at instances for the element! Open up your button.spec.ts file and embody the code beneath.

import { render } from "@testing-library/vue";
import { BasicButton, BlueButton, ButtonWithCustomGoodByeWorldLabel } from "./button.composition";

it("ought to render with the right textual content", () => {
const { getByText } = render(BasicButton);
const rendered = getByText("Howdy World");
count on(rendered).toBeTruthy();

it("ought to render button with label Howdy World with the blue shade", () => {
const { getByText } = render(BlueButton);
const rendered = getByText("Howdy World");
count on('blue');

it("ought to render button with label Goodbye World", () => {
const { getByText } = render(ButtonWithCustomGoodByeWorldLabel);
const rendered = getByText("Goodbye World");
count on(rendered).toBeTruthy();

We’ve included three take a look at instances in your utility.

  1. The primary take a look at case ensures that the Button renders with the label — Howdy World.
  2. The second take a look at case ensures that the Button renders with the label — Howdy World, and with the background shade – blue.
  3. The ultimate take a look at case ensures the button renders with a customized label — Goodbye World.

These take a look at instances imply that the Button element should have a default label — Howdy World, and we should enable customers to alter this label whereas offering help to alter the background shade.

Properly, let’s begin designing the Button element now.

Open up the button.vue file and embody the code proven beneath:

<script setup lang="ts">
import { defineProps, computed } from "vue";

const props = defineProps({
label: {
sort: String,
default: "Howdy World",
required: false,
fashion: {
sort: Object,
default: () => ({}),
required: false,

const buttonStyle = computed(() => {

<button :fashion="buttonStyle">{{ label }}</button>

The code proven above outlined a easy Button Vue.js element. It accepts two props – label and fashion to assist customise the Button to assist help the necessities of adjusting the label and shade.

Subsequent, save your code and observe the event server to see your element being rendered in actual time!

Determine: The outlined element

Hereafter, you’ll be able to outline your compositions to supply the help in your take a look at instances to perform and showcase your element’s functionality! Subsequently, create two new information contained in the button listing:

  1. button-blue.fixture.vue
  2. button-goodbye-world.fixture.vue

Hereafter, embody the snippets proven beneath to outline the composition.

// button-blue.fixture.vue

<script setup>
import Button from "./button.vue";

<Button label="Howdy World" :fashion="{
background: 'blue'
}" />

// button-goodbye-world.fixture.vue

<script setup>
import Button from "./button.vue";

<Button label="Goodbye World" />

The 2 snippets outlined above showcases the 2 compositions. Hereafter, open the button.composition.ts file and embody the code proven beneath.

import BasicButton from "./button-basic.fixture.vue";
import BlueButton from "./button-blue.fixture.vue";
import ButtonWithCustomGoodByeWorldLabel from "./button-goodbye-world.fixture.vue"

export { BasicButton, BlueButton, ButtonWithCustomGoodByeWorldLabel };

The snippet proven above lets the spec.ts file import the parts outlined to assist run the take a look at instances.

Step 05 — Constructing a Vue.js utility

Now it’s possible you’ll marvel — “I’ve constructed the element, however how do I devour it?” Properly, that is the place the App element comes into play. Bit helps you to create an App element that gives a deployable runtime in your parts and lets you construct absolutely purposeful manufacturing apps utilizing Vue.js!

To create your utility, execute the command proven beneath.

bit create vue-app apps/hello-app

The command above creates a Vue.js utility titled hello-app . This may create the folder construction proven beneath.

Determine: Folder construction for the App element

Open up the hello-app.vue and embody the code beneath that will help you use your customized Button element.

<script setup lang="ts">
import Button from "@lakindu2002/";


<Button label="Howdy World" />

As proven above, that is the Button element that we created earlier! Subsequent, you will want to let the workspace load the App as a separate occasion. To take action, run the command proven beneath.

bit use apps/hello-app

Lastly, run the next command to launch your new Vue.js app!

bit run hello-app-app

Sure, you will want to make use of “app-app” should you created the app by appending “app” to the title. Should you solely supplied “bit create app whats up”, use “bit run “hello-app”.

As soon as doing so, you’ll be able to browse the applying domestically.

Determine: Looking the app

Step 06 — Versioning and sharing the code

After you’ve constructed your app, now you can ship it to distant storage — scope for future upkeep.

To take action, it’s essential to “tag” your parts to model them and export them to the Bit Cloud.

You possibly can model your element by working bit tag adopted by a message. For instance, your command might be bit tag -m "including a property for the button title". What’s distinctive about this command is that it builds the element and executes its take a look at instances to make sure you launch solely absolutely purposeful code.

Lastly, after you’ve tagged a brand new model of your element, you’ll be able to ship it off to the element repository — Bit Cloud utilizing the command bit export.

Constructing frontends have come a great distance since Vue.js was first launched. Gone are the instances when builders tried to handle single big monolith frontend apps. Out got here the daybreak of micro frontends and Bit — A modernized method to constructing modular and distributed parts that may be developed, examined, and versioned in isolation!

To discover what we constructed on this weblog publish, go to my GitHub Repository on Bit Cloud and have a peek!

I hope that this text helps you construct superb Vue.js apps in 2023!

Thanks for studying.