Nuxt Toolbox Template

Build Setup

# install dependencies
$ npm install

# serve with hot reload at localhost:3000
$ npm run dev

# build for production and launch server
$ npm run build
$ npm run start

# generate static project
$ npm run generate

Deploy to Netlify

Want to deploy immediately? Click this button

Deploy to Netlify Button

To deploy using the Netlify cli:

npm install netlify-cli -g # to install the Netlify CLI tool globally
netlify init # initialize a new Netlify project & deploy

It will use the information from the included Netlify configuration file, netlify.toml, to set up the build command as npm run generate to create a static project and locate the build project in the dist directory.

The init process will also set up continuous deployemnt for your project so that a new build will be triggered & deployed when you push code to the repo (you can change this from your project dashboard: Site Settings/Build & deploy/Continuous Deployment).

You can also use netlify deploy (--prod) to manually deploy and netlify open to open your project dashboard.

đź’ˇ we only have so many keystrokes to give, use ntl shorthand for netlify or make an alias of your own to save hours...of accumulated miliseconds

Running Locally

You can use netlify dev from the command line to access project information like environment variables as well as

  • test functions
  • test redirects
  • share a live session via url with netlify dev --live
  • and more :)

Deployment Resources

Forms

Netlify Forms are a way to wire up your native HTML into being able to seamlessly handle submissions. To get a form working, we need to add two extra things:

  1. An extra attribute on the form tag, netlify

Adding this attribute to our form tag will let Netlify know when it loads the page, that it needs to be aware of submissions made through it.

  1. A hidden input in the form, <input type="hidden" name="form-name" value="feedback" />

Adding this extra input allows our form to be given a name that Netlify can store submissions to. It is a hidden input so your users won't see it but it will pass along the name of our form to Netlify when we submit. In our Netlify Admins site under Forms, we will see our Active Form named feedback and all submissions will go there.

With both of those we're ready for folks to give us feedback!

Adding a custom submission page

While Netlify provides a default submission page for folks, we can customize it as well! With the action attribute on the form tag we will be able to direct our users to our own page.

In components/feedbackForm.vue you'll see the form has the attribute action="/testpage" this will take our user to the custom route /testpage which we created under pages/TestPage.vue. As long as the page exists, you can direct folks to it!

Blocking bot spam with a honeypot field

Many bots scan through webpages and try to see what pages and forms they can get access to. Instead of letting our website receive spam submissions, we can filter out unrelated submissions with a visually-hidden input field.

<p class="hidden">
    <label>
        Don’t fill this out if you’re human: <input name="bot-field" />
    </label>
</p>

Since screenreader users will still have this announced, it is important for us to communicate that this is a field not meant to be filled in.

For this to work we also need to add a netlify-honeypot attribute to the form element.

<form
  netlify
  netlify-honeypot
  action="/testpage"
  method="post"
>

See it here in the template code.

Forms Resources

Redirects

In the netlify.toml configuration file there is an example of how to implement redirects. Redirects can be used to do many things from redirecting Single Page Apps more predictably, redirecting based on country/language to leveraging On-Demand Builders for Distributed Persistant Rendering.

In the netlify.toml configuration file there is an example of how to implement redirects. Redirects can be used to do many things from redirecting Single Page Apps more predictably, redirecting based on country/language to leveraging On-Demand Builders for Distributed Persistant Rendering.

In the example we'll be using redirects to have a shorter endpoint to Netlify functions. By default, you call a Netlify function when requesting a path like https://yoursite.netlify.com/.netlify/functions/functionName. Instead, we'll redirect all calls from a path including /api to call on the Netlify functions. So the path will be https://yoursite.netlify.com/api/functionName, a lot easier to remember too.

Example

[[redirects]]
from = "/api/*"
to = "/.netlify/functions/:splat"
status = 200
force = true

First we create a section in the .toml for the redirect using [[redirects]]. Each redirect should have this line to start the redirect code, and the redirects will be executed in the order they appear in the .toml from top to bottom.

The bare minimum needed is the from and to, letting the CDN know when a route is requested, the from, forward it on to another path, the to. In the example, we also added an 'Ok' status code, 200, and set the force to true to make sure it always redirects from the from path.

There are many ways to use redirects. Check out the resouces below to learn more.

Redirect Resources

Serverless Functions

With Netlify, you can build out server-side code without having to setup and maintain a dedicated server. Inside of our default folder path, netlify/functions you can see an example of the format for JavaScript functions with the joke.js file.

The function format expects a function named handler to be exported. This will be the function that will be invoked whenever a client makes a request to the generated endpoints. The endpoint's format is followed as /.netlify/functions/joke. So whenever the site is deployed, if you go to https://<site base url>/.netlify/functions/joke you will see a random joke!

Side note: In our example, we're using import to include data from another location and export const const handler to let our function be consumed by Netlify. We're able to do this because of esbuild. This is a bundler configuration we set in our netlify.toml under [functions].

Serverless Functions Resources

There is quite a bit you can do with these functions, so here are some additional resources to learn more!