Vue and Nuxt

Vue 5,482 (github.com/vuejs/core (https://github.com/vuejs/core 54,451 )) was launched by Evan You in February 2014. It is an independent project sustained by sponsors rather than a single company, and version 3.5 is current. A single-file component (.vue) keeps script, template and optional scoped styles together; the template syntax (v-model, @click, v-for) is plain HTML plus directives, which makes Vue easy to adopt in server-rendered pages.

The todo component in Vue 3.5 with script setup (TodoApp.vue)HTML
<script setup>
import { ref } from 'vue';
const todos = ref([]);
const text = ref('');
function add() { todos.value.push(text.value); text.value = ''; }
</script>
<template>
  <input v-model="text">
  <button @click="add">Add #{{ todos.length + 1 }}</button>
  <ul><li v-for="(t, i) in todos" :key="i">{{ t }}</li></ul>
</template>

Unlike React 7,897 , todos.value.push() works: ref() wraps the array in a JavaScript Proxy that intercepts the mutation and schedules a re-render. Inside <script> you read .value; templates unwrap refs automatically. Scaffold a project with npm 2,036 create vue@latest.

Nuxt 37,147 (github.com/nuxt/nuxt (https://github.com/nuxt/nuxt 60,903 )) is to Vue what Next.js 10,514 is to React: file-based routing, server-side rendering, static generation and API routes on top of Vue. Nuxt 4 arrived in July 2025; start with npm create nuxt@latest.