【Vue】快速入门:构建你的第一个Vue 3应用

news2025/1/12 12:24:18

文章目录

    • 一、Vue简介
    • 二、环境搭建
      • 1. 安装Node.js和npm
      • 2. 安装Vue CLI
    • 三、创建Vue项目
    • 四、项目结构介绍
    • 五、组件基础
      • 创建一个组件
      • 使用组件
    • 六、模板语法
      • 插值
      • 指令
        • v-bind
        • v-if
        • v-for
    • 七、事件处理
    • 八、状态管理
      • 安装Vuex
      • 创建Store
      • 使用Store
    • 九、路由基础
      • 安装Vue Router
      • 配置路由
      • 使用路由
    • 十、部署与发布
      • 构建项目
      • 部署到Netlify

在前端开发领域,Vue.js 是一个非常流行的框架。它以其简单易用、灵活性强以及高性能等特点,赢得了众多开发者的青睐。如果你是Vue的新手,这篇文章将帮助你快速上手,构建你的第一个Vue 3应用。

一、Vue简介

Vue.js 是一个渐进式JavaScript框架,主要用于构建用户界面。与其他大型框架不同,Vue 被设计为可以逐步采用的。其核心库只关注视图层,非常容易学习,并且可以与其他库或现有项目集成。

主要特点

  • 响应式数据绑定:使用双向数据绑定,使开发者能够轻松管理数据和视图的同步。
  • 组件化开发:通过组件化开发方式,提高代码的复用性和维护性。
  • 渐进式框架:可以根据项目需求,逐步引入Vue生态系统的其他功能。

二、环境搭建

在开始使用Vue之前,我们需要先搭建开发环境。

1. 安装Node.js和npm

Vue依赖于Node.js和npm(Node包管理器)。首先,需要在系统中安装它们。可以从Node.js官网下载并安装最新版本的Node.js,npm会自动随Node.js一起安装。

2. 安装Vue CLI

Vue CLI 是一个官方提供的标准化工具,可以快速搭建Vue项目。打开命令行,执行以下命令全局安装Vue CLI:

npm install -g @vue/cli

安装完成后,可以使用 vue --version 命令查看安装是否成功。

三、创建Vue项目

安装好Vue CLI后,我们可以创建一个新的Vue项目。执行以下命令:

vue create my-vue-app

在执行命令时,CLI会提示你选择一些配置选项。你可以选择默认配置,或者根据需求进行自定义配置。选择完成后,CLI会自动创建项目并安装依赖。

进入项目目录:

cd my-vue-app

启动开发服务器:

npm run serve

此时,打开浏览器并访问 http://localhost:8080,你将看到Vue项目的默认欢迎页面。

四、项目结构介绍

一个典型的Vue项目结构如下:

my-vue-app
├── node_modules
├── public
│   └── index.html
├── src
│   ├── assets
│   ├── components
│   │   └── HelloWorld.vue
│   ├── App.vue
│   └── main.js
├── .gitignore
├── babel.config.js
├── package.json
└── README.md

主要目录及文件:

  • public:静态文件目录,index.html 是项目入口文件。
  • src:源码目录,所有开发内容都在这里面。
    • assets:资源目录,可以放置图片等静态资源。
    • components:组件目录,所有的Vue组件都在这里面。
    • App.vue:根组件。
    • main.js:项目入口文件,初始化Vue实例。

五、组件基础

Vue的核心思想是通过组件化开发,每个组件可以看作是一个独立的模块。

创建一个组件

src/components 目录下新建一个 MyComponent.vue 文件,内容如下:

<template>
  <div>
    <h1>{{ message }}</h1>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello, Vue!'
    }
  }
}
</script>

<style scoped>
h1 {
  color: #42b983;
}
</style>

使用组件

App.vue 文件中引入并使用这个组件:

<template>
  <div id="app">
    <MyComponent />
  </div>
</template>

<script>
import MyComponent from './components/MyComponent.vue'

export default {
  components: {
    MyComponent
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

六、模板语法

Vue.js 使用一种基于HTML增强的模板语法,允许开发者声明式地将DOM绑定至底层数据。

插值

插值使用 {{}} 语法,可以将变量绑定到视图中:

<template>
  <p>{{ message }}</p>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello, Vue!'
    }
  }
}
</script>

指令

Vue提供了一系列指令(Directives),用于在模板中执行常见的DOM操作。

v-bind

用于绑定HTML属性:

<template>
  <img v-bind:src="imageSrc" />
</template>

<script>
export default {
  data() {
    return {
      imageSrc: 'path/to/image.jpg'
    }
  }
}
</script>
v-if

用于条件渲染:

<template>
  <p v-if="isVisible">这是一段可见的文字</p>
</template>

<script>
export default {
  data() {
    return {
      isVisible: true
    }
  }
}
</script>
v-for

用于列表渲染:

<template>
  <ul>
    <li v-for="item in items" :key="item.id">{{ item.text }}</li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' },
        { id: 3, text: 'Item 3' }
      ]
    }
  }
}
</script>

七、事件处理

Vue 允许在DOM元素上使用 v-on 指令来监听事件:

<template>
  <button v-on:click="handleClick">点击我</button>
</template>

<script>
export default {
  methods: {
    handleClick() {
      alert('按钮被点击了!');
    }
  }
}
</script>

还可以使用 @ 符号来缩写 v-on 指令:

<template>
  <button @click="handleClick">点击我</button>
</template>

八、状态管理

在复杂的应用中,组件之间的数据共享和状态管理变得尤为重要。Vue 提供了 Vuex 作为其官方的状态管理模式。

安装Vuex

npm install vuex@next --save

创建Store

src 目录下创建 store/index.js 文件:

import { createStore } from 'vuex'

export default createStore({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    }
  },
  actions: {
    increment(context) {
      context.commit('increment')
    }
  },
  getters: {
    count: state => state.count
  }
})

使用Store

main.js 文件中引入并使用Store:

import { createApp } from 'vue'
import App from './App.vue'
import store from './store'

createApp(App)
  .use(store)
  .mount('#app')

在组件中访问和修改状态:

<template>
  <div>
    <p>{{ count }}</p>
    <button @click="increment">增加</button>
  </div>
</template>

<script>
import { mapState, mapActions } from 'vuex'

export default {
  computed: {
    ...mapState(['count'])
  },
  methods: {
    ...mapActions(['increment'])
  }
}
</script>

九、路由基础

Vue Router 是Vue.js官方的路由管理器,适用于构建单页应用。

安装Vue Router

npm install vue-router@next

配置路由

src 目录下创建 router/index.js 文件:

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

使用路由

main.js 文件中引入并使用Router:

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

createApp(App)
  .use(router)
  .mount('#app')

创建视图组件 src/views/Home.vuesrc/views/About.vue

<!-- Home.vue -->
<template>
  <div>
    <h1>Home</h1>
    <p>欢迎来到首页</p>
  </div>
</template>
<!-- About.vue -->
<template>
  <div>
    <h1>About</h1>
    <p>关于我们</p>
  </div>
</template>

App.vue 中使用路由视图:

<template>
  <div id="app">
    <router-link to="/">Home</router-link>
    <router-link to="/about">About</router-link>
    <router-view></router-view>
  </div>
</template>

十、部署与发布

在开发完成后,我们需要将项目部署到生产环境。

构建项目

执行以下命令进行构建:

npm run build

构建完成后,生成的文件将在 dist 目录中。你可以将该目录中的内容部署到任何静态文件服务器上,如Nginx、Apache等。

部署到Netlify

Netlify 是一个非常流行的静态网站托管服务。以下是将Vue项目部署到Netlify的步骤:

  1. 登录 Netlify 账户。
  2. 创建一个新的站点,选择Git仓库进行关联。
  3. 配置构建命令为 npm run build,发布目录为 dist
  4. 保存配置,点击部署。

至此,你的Vue应用就成功部署到了Netlify,并且可以通过提供的域名进行访问。


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1934212.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FFmpeg播放视频

VS2017+FFmpeg6.2.r113110+SDL2.30.5 1.下载 ShiftMediaProject/FFmpeg 2.下载SDL2 3.新建VC++控制台应用 3.配置include和lib 4.把FFmpeg和SDL的dll 复制到工程Debug目录下,并设置调试命令

24年Hvv准备,6大方向,33篇技战法

进去不少小伙伴后台留言说需要技战法&#xff0c;因此小编对市面上的技战法进行了收集和总结&#xff0c;并对收集来的技战法进行了分类&#xff0c;总共分了6大类&#xff0c;共计33篇&#xff1a; 有需要的小伙伴关注我&#xff0c;点击在看&#xff0c;并私信回复“技战法”…

IO、进程、线程03

第一题&#xff1a;预习 opendir 和 readdir函数 opendir 和 readdir 是两个在C语言&#xff08;特别是使用POSIX标准的系统&#xff0c;如Linux和UNIX&#xff09;中用于目录遍历的函数。这两个函数属于标准的C库中的目录操作部分&#xff0c;通常与<dirent.h>头文件一…

MySQL学习记录 —— 이십일 MySQL服务器文件系统(1)

文章目录 1、配置和默认值2、系统变量和选项1、介绍2、常用选项3、如何使用系统变量 3、常用服务器配置4、查看状态变量5、MySQL数据目录 mysql的服务端就是mysqld&#xff0c;d就是daemon&#xff0c;守护进程的意思。 配置文件中[mysqld]部分时服务器支持的启动选项。服务器…

某航空制造业集团IT信息化总体规划方案

获取完整方案见下图 更多有关华为研发管理/IPD、MBSE、PLM、ERP、MES、数据治理、数字样机等方面免费解决方案、资料获取&#xff0c;请见下图

开放式耳机哪个品牌好?开放式耳机实用推荐

开放式耳机是一种耳机类型&#xff0c;其外壳是开放的&#xff0c;发声单元的背面和外界相通。这种耳机的外壳上通常有许多小孔或者直接能够看到内部的发声单元。 而且开放式耳机几乎摒弃了传统耳机几乎所有缺点&#xff01;&#xff01; ❌有线耳机&#xff1a;运动的时候特别…

如何走出低能量状态?

晚上好。 每个人都难免会有状态不佳的时候。可能是遭受压力&#xff0c;可能是事情不顺&#xff0c;也可能无缘无故、突然就陷入情绪的低谷之中。 这时&#xff0c;我们很容易感到精力不济&#xff0c;无精打采&#xff0c;明明有许多事情要做和想做&#xff0c;但总是提不起精…

宠物空气净化器哪款品牌好?口碑好的猫用空气净化器排名

猫咪每年掉毛两次&#xff0c;一次掉半年的现象真让人头疼。作为一位5年资深铲屎官&#xff0c;特别是在掉毛季节&#xff0c;猫毛无处不在&#xff0c;对此深有体会。宠物空气净化器已成为铲屎官们的救星&#xff0c;能迅速清理家中的宠物毛发和异味&#xff0c;是养猫家庭的必…

RK3568平台(环境篇)windon与ubuntu之间文件互传

一.windon与ubuntu共享文件夹 打开设置&#xff1a; 点击选项&#xff0c;共享文件夹 共享文件夹&#xff0c;就是在电脑的固定盘符下面&#xff0c;找一个文件夹为Windows和Linux都能看得见的共用的看得见的文件夹&#xff0c;点击添加文件夹。 点击确定后在ubuntu添加共享文…

python 获取Shopee虾皮商家店铺商品列表 虾皮api数据采集

此api接口可用于获取虾皮平台商家店铺的商品列表&#xff0c;目前land参数支持id、vn、my、th、sg、ph、tw&#xff08;印尼、越南、马来、泰国、新加坡、菲律宾、台湾&#xff09;。 若有需要&#xff0c;请点击文末链接联系我们。 详细采集页面如下https://shopee.tw/yuesh…

【快速逆向一/无过程/有源码】《大学》在线投稿系统

逆向日期&#xff1a;2024.07.18 使用工具&#xff1a;Node.js 加密工具&#xff1a;Crypto-js标准库 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 【点赞 收藏 关注 】仅供学习&#xff0c;仅供学习&#xff0c; 本文为快速逆向&#x…

IC测试:Shmooing, Shmoo测试, Shmoo图

Shmoo测试/Shmooing 在半导体测试中&#xff0c;Shmooing是一种测试技术&#xff0c;通过扫描一个范围内的测试条件参数来查看正在运行的被测器件&#xff0c;就像它在现实世界中的表现一样。 测试的参数类型取决于IC的目的和类型以及环境。至少绘制了两个参数。&#xff08;…

鸿蒙仓颉语言【基础-数据类型dataType】

数据类型 仓颉编程&#xff08;CangjieLang&#xff09;是强类型语言,变量和函数参数都需要显式声明类型&#xff0c;例如&#xff1a; public let growable: Bool false public func get(value: Array<Byte>): Int64。基础数据类型 仓颉&#xff08;CangjieLang&…

生命周期的妙用——Vue3

Vue3的生命周期 从Vue2到Vue3&#x1f47e;不只onMounted又见keep-alive主要属性被你包裹应用场景 ) 从Vue2到Vue3&#x1f47e; Vue 3 保留了大多数 Vue 2 的生命周期钩子&#xff0c;同时引入了组合 API 中的生命周期钩子。以下是 Vue 3 中的生命周期钩子&#xff1a; 不…

R语言进行集成学习算法:随机森林

# 10.4 集成学习及随机森林 # 导入car数据集 car <- read.table("data/car.data",sep ",") # 对变量重命名 colnames(car) <- c("buy","main","doors","capacity","lug_boot","safety"…

linux下JDK的安装

前言&#xff1a; 安装部署java开发的代码都需要java环境&#xff0c;这里记录下linux下JDK的安装过程&#xff0c;仅供学习参考。 JDK的下载 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads 选择和操作系统匹配的版本进行下载 查看操作系统&…

记录些MySQL题集(11)

MySQL 组提交原理 MySQL 中事务的两阶段提交保证了 redo log 与 binlog 两种日志文件的数据一致性&#xff0c;但是并发事务场景下还需要保证事务顺序的一致性&#xff0c;因此通过组提交机制在保证顺序一致性的前提下提高写入效率。因此组提交是两阶段提交的一部分。 两阶段…

JavaScript基础(十五)

变量&返回值 js中的变量有两种: 局部变量和全局变量 全局变量: 在函数外声明的变量&#xff0c;网页上的所有函数和脚本都能访问它。 局部变量&#xff1a; 在函数内部声明的变量&#xff08;必须使用var&#xff09;&#xff0c;只能在函数内部访问它&#xff0c;我们…

区分C语言中的全局变量和java中的类的变量

该程序运行结果&#xff1a; 原因&#xff1a; new Homework08().count1();中改变的count的值是该对象的count变量&#xff0c; 但是Homework08 t1 new Homework08(); t1.count2(); t1.count2();改变的都是t1变量的count的值 //20224.07.16public class Homework08 {public …

在组件中显示tuku的照片

一、问题 &#xff08;1&#xff09;错误&#xff1a;域名前面一定要加http://要不然会报错 &#xff08;2&#xff09;在使用 defineModel传值时一定要动态绑定&#xff0c;要不然图片不显示 &#xff08;3&#xff09;改完后在商品列表中显示图片信息必须 在显示的图片中取…