Vue.js is a progressive JavaScript framework. This guide walks you through deploying Vue.js sites to Edgio.
Edgio supports both Vue 2 and Vue 3, using both CLIs -
@vue/cli
and vite
.Example
Prerequisites
Setup requires:
- An Edgio account. Sign up for free.
- An Edgio property. Learn how to create a property.
- Node.js. View supported versions and installation steps.
- Edgio CLI.
Install the Edgio CLI
If you have not already done so, install the Edgio CLI.
Bash
1npm i -g @edgio/cli@latest
Create your Vue site
If you don’t have an existing Vue 3 site, you can create one by running:
Bash
1npm init vue@latest
This command will create a project based on
vite
.If you need help with Vue initialization, please follow the create-vue project’s readme.
Edgio also supports the older, Webpack-based
@vue/cli
- more on that in the Vue CLI documentation.Initializing your Project
Initialize your project for use with Edgio by running the following command in your project’s root directory:
Bash
1edgio init --edgioVersion latest
This will automatically add all of the required dependencies and files to your project. These include:
-
The
@edgio/cli
package - Allows you to control Edgio through project-local CLI. -
The
@edgio/core
package - Allows you to declare routes and deploy your application to Edgio. -
The
@edgio/prefetch
package - Allows you to configure a service worker to prefetch and cache pages to improve browsing speed. -
The
@edgio/devtools
package - Allows you to monitor the caching and prefetching functionality. -
The
@edgio/vue
package - Provides aPrefetch
component for prefetching pages. -
The
@edgio/connectors
package - Provides build and routing mechanisms for Vue projects.edgio.config.js
- Contains various configuration options for Edgio.
-
routes.js
- A default routes file that proxies all requests to the server. Update this file to add caching or proxy some URLs to a different origin. -
sw/service-worker.js
- A service worker implemented using Workbox.
Routing
The default
routes.js
file created by edgio init
sends all requests to Vue server via a fallback route.JavaScript
1// This file was added by edgio init.2// You should commit this file to source control.34import {Router} from '@edgio/core';5import {connectorRoutes} from '@edgio/connectors';67export default new Router().use(connectorRoutes);
Refer to the CDN-as-code guide for the full syntax of the
routes.js
file and how to configure it for your use case.Running Locally
To test your app locally, run:
Bash
1edgio dev
You can do a production build of your app and test it locally using:
Bash
1edgio build && edgio run --production
Setting
--production
runs your app exactly as it will be when deployed to the Edgio cloud.Deploy to Edgio
Deploy your app to the Sites by running the following command in your project’s root directory:
Bash
1edgio deploy
Your initial CDN-as-code deployment will generate system-defined origin configurations along with those defined within your
edgio.config.js
. Learn more about system-defined origins.Refer to the Deployments guide for more information on the
deploy
command and its options.Prefetching
The
edgio init
command adds a service worker based on Workbox at sw/service-worker.js
.
If you have an existing service worker that uses workbox, you can copy its contents into sw/service-worker.js
and simply add the following to your service worker:JavaScriptsw/service-worker.js
1import { Prefetcher } from '@edgio/prefetch/sw';23new Prefetcher().route();
In order to initialize it, call the
install
function from @edgio/prefetch/window
when the app first loads:JavaScript
1import {isProductionBuild} from '@edgio/core/environment';2import {install} from '@edgio/prefetch/window';34if (isProductionBuild()) {5 install();6}
The above code allows you to prefetch pages from Edgio’s edge cache to greatly improve browsing speed. To prefetch a page, add the
Prefetch
component from @edgio/vue
around any rendered component, as such:JavaScript
1<script>2 import { Prefetch } from '@edgio/vue'3</script>45<template>6 {/* The URL you need to prefetch is the API call that the page component will make when it mounts. It will vary based on how you've implemented your site. */}7 <Prefetch url='/api/products/1.json'>8 <a href='/api/products/1.json'>Product 1</a>9 </Prefetch>10</template>
The
Prefetch
component fetches data for the linked page from Edgio’s edge cache and adds it to the service worker’s cache when the link becomes visible in the viewport. When the user taps on the link, the page transition will be instantaneous because the browser won’t need to fetch data from the network.By default,
Prefetch
waits until the link appears in the viewport before prefetching. You can prefetch immediately by setting the immediately
prop:JavaScript
1<Prefetch url="/api/products/1.json" immediately>2 <a href="/api/products/1.json">Product 1</a>3</Prefetch>
Refer to the Predictive Prefetch for more examples of prefetch functionality.
Server Side Rendering
For server side rendered Vue.js apps we recommend using the Nuxt.js framework which is supported on Edgio. Refer to the Nuxt guide for more information.