Vue 3 实战教程(快速入门)

Vue 3 实战教程(快速入门)

Vue.js 是一个用于构建用户界面的渐进式框架,Vue 3 是 Vue 的最新版本,带来了许多改进和新特性。本文将通过一个简单的项目示例,带你快速入门 Vue 3 的基础使用。

环境设置

安装 Node.js 和 npm

确保你已经安装了 Node.js 和 npm,可以通过以下命令检查:

node -v
npm -v

如果没有安装,请前往 Node.js 官网 下载并安装最新的 LTS 版本。

创建 Vue 3 项目

使用 Vue CLI 创建一个新的 Vue 3 项目。首先,全局安装 Vue CLI:

npm install -g @vue/cli

然后,创建一个新项目:

vue create my-vue3-project

选择默认设置或根据你的需要进行自定义设置。

项目结构

创建完成后,项目结构大致如下:

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

编写你的第一个组件

修改 App.vue

打开 src/App.vue 文件,修改模板和样式:

<template><div id="app"><img alt="Vue logo" src="./assets/logo.png"><HelloWorld msg="Welcome to Your Vue.js App"/></div>
</template><script>
import HelloWorld from './components/HelloWorld.vue';export default {name: 'App',components: {HelloWorld}
};
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>
创建一个新的组件

src/components/ 目录下创建一个名为 MyComponent.vue 的新文件:

<template><div class="my-component"><h2>{{ title }}</h2><button @click="increment">Click me</button><p>Count: {{ count }}</p></div>
</template><script setup>
import { ref } from 'vue';const title = 'My First Vue 3 Component';
const count = ref(0);function increment() {count.value++;
}
</script><style scoped>
.my-component {text-align: center;
}button {padding: 10px 20px;font-size: 16px;
}
</style>

使用新组件

打开 src/App.vue 文件,引入并使用 MyComponent

<template><div id="app"><img alt="Vue logo" src="./assets/logo.png"><HelloWorld msg="Welcome to Your Vue.js App"/><MyComponent /></div>
</template><script>
import HelloWorld from './components/HelloWorld.vue';
import MyComponent from './components/MyComponent.vue';export default {name: 'App',components: {HelloWorld,MyComponent}
};
</script>

使用 Composition API

Vue 3 引入了 Composition API,这使得在组件中组织逻辑变得更加灵活和可重用。让我们在 MyComponent.vue 中使用 Composition API。

<template><div class="my-component"><h2>{{ title }}</h2><button @click="increment">Click me</button><p>Count: {{ count }}</p></div>
</template><script setup lang="ts">
import { ref } from 'vue';const title = ref('My First Vue 3 Component');
const count = ref(0);function increment() {count.value++;
}
</script><style scoped>
.my-component {text-align: center;
}button {padding: 10px 20px;font-size: 16px;
}
</style>

路由和状态管理

安装 Vue Router

Vue Router 是 Vue.js 的官方路由器,用于构建单页面应用。安装 Vue Router:

npm install vue-router@next
配置路由

src 目录下创建一个 router 文件夹,并在其中创建 index.ts 文件:

// src/router/index.ts
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;
使用路由

修改 src/main.ts 文件,使用路由:

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';createApp(App).use(router).mount('#app');
创建视图组件

src/views 目录下创建 Home.vueAbout.vue 文件:

<!-- src/views/Home.vue -->
<template><div><h1>Home</h1><p>Welcome to the Home page.</p></div>
</template><script setup>
</script><style scoped>
</style>
<!-- src/views/About.vue -->
<template><div><h1>About</h1><p>This is the About page.</p></div>
</template><script setup>
</script><style scoped>
</style>
更新 App.vue

修改 src/App.vue 文件以添加导航链接:

<template><div id="app"><nav><router-link to="/">Home</router-link> |<router-link to="/about">About</router-link></nav><router-view></router-view></div>
</template><script setup>
</script><style>
nav {margin-bottom: 20px;
}nav a {margin-right: 10px;text-decoration: none;color: #42b983;
}nav a.router-link-active {font-weight: bold;
}
</style>

状态管理 (Vuex)

虽然 Vue 3 推荐使用 Composition API 进行状态管理,但你仍然可以使用 Vuex。

安装 Vuex
npm install vuex@next
配置 Vuex

src 目录下创建一个 store 文件夹,并在其中创建 index.ts 文件:

// src/store/index.ts
import { createStore } from 'vuex';export default createStore({state: {count: 0},mutations: {increment(state) {state.count++;}},actions: {increment({ commit }) {commit('increment');}},getters: {count: (state) => state.count}
});
使用 Vuex

修改 src/main.ts 文件,使用 Vuex:

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';createApp(App).use(router).use(store).mount('#app');
访问 Vuex 状态

在组件中访问 Vuex 状态和方法:

<template><div class="my-component"><h2>{{ title }}</h2><button @click="increment">Click me</button><p>Count: {{ count }}</p></div>
</template><script setup>
import { computed } from 'vue';
import { useStore } from 'vuex';const store = useStore();const title = 'My First Vue 3 Component';
const count = computed(() => store.state.count);function increment() {store.dispatch('increment');
}
</script><style scoped>
.my-component {text-align: center;
}button {padding: 10px 20px;font-size: 16px;
}
</style>

总结

通过以上步骤,你已经快速了解了如何使用 Vue 3 和 TypeScript 创建一个简单的项目,包括组件创建、路由配置和状态管理。希望这个快速入门教程对你有所帮助,可以作为你进一步学习和使用 Vue 3 的基础。

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

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

相关文章

多多代播24小时值守:电商直播时代是带货爆单的关键

在电商直播盛行的今天&#xff0c;直播带货已成为品牌与消费者沟通的关键。然而&#xff0c;流量波动大&#xff0c;竞争激烈&#xff0c;使品牌面临诸多挑战。因此&#xff0c;许多品牌寻求专业代播服务&#xff0c;并特别强调24小时值守的重要性。 流量来源的不稳定性是一个显…

《VUE.js 实战》读书笔记

1. 初识vue.js MVVM模式从MVC模式演化而来&#xff0c;但是MVVM模式更多应用在前端&#xff0c;MVC则是前后端共同表现。传统开发模式&#xff1a;jQuery RequireJS ( SeaJS ) artTemplate ( doT ) Gulp ( Grunt)。vue.js可以直接通过script引入方式开发&#xff0c;也可以…

Linux下安装RocketMQ:从零开始的消息中间件之旅

感谢您阅读本文&#xff0c;欢迎“一键三连”。作者定会不负众望&#xff0c;按时按量创作出更优质的内容。 ❤️ 1. 毕业设计专栏&#xff0c;毕业季咱们不慌&#xff0c;上千款毕业设计等你来选。 RocketMQ是一款分布式消息中间件&#xff0c;具有高吞吐量、低延迟、高可用性…

本末倒置!做660+880一定要避免出现这3种情况!

每年都有不少人做过660题&#xff0c;但是做过之后&#xff0c;并没有真正理解其中的题目&#xff0c;所以做过之后效果也不好&#xff01;再去做880题&#xff0c;做的也会比较吃力。 那该怎么办呢&#xff0c;不建议你继续做880题&#xff0c;先把660给吃透再说。 接下来给…

PostgreSQL使用教程

安装 PostgreSQL 您可以从 PostgreSQL 官方网站下载适合您操作系统的安装程序&#xff0c;并按照安装向导进行安装。 启动数据库服务器 安装完成后&#xff0c;根据您的操作系统&#xff0c;通过相应的方式启动数据库服务器。 连接到数据库 可以使用命令行工具&#xff08;如 p…

Objective-C使用块枚举的细节

对元素类型的要求 在 Objective-C 中&#xff0c;NSArray 只能存储对象类型&#xff0c;而不能直接存储基本类型&#xff08;例如 int&#xff09;。但是&#xff0c;可以将基本类型封装在 NSNumber 等对象中&#xff0c;然后将这些对象存储在 NSArray 中。这样&#xff0c;en…

Maven编译打包时报“PKIX path building failed”异常

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 方法11.报错信息2.InstallCert.java3.生成证书文件 jssecacerts4.复制 jssecacerts 文件5. 然后重启Jenkins 或者maven即可 方法21.下载证书2. 导入证书执行keytool…

7.优化算法之分治-快排归并

0.分治 分而治之 1.颜色分类 75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数…

Elasticsearch (1):ES基本概念和原理简单介绍

Elasticsearch&#xff08;简称 ES&#xff09;是一款基于 Apache Lucene 的分布式搜索和分析引擎。随着业务的发展&#xff0c;系统中的数据量不断增长&#xff0c;传统的关系型数据库在处理大量模糊查询时效率低下。因此&#xff0c;ES 作为一种高效、灵活和可扩展的全文检索…

PHP爬虫类的使用技巧与注意事项

php爬虫类的使用技巧与注意事项 随着互联网的迅猛发展&#xff0c;大量的数据被不断地生成和更新。为了方便获取和处理这些数据&#xff0c;爬虫技术应运而生。PHP作为一种广泛应用的编程语言&#xff0c;也有许多成熟且强大的爬虫类库可供使用。在本文中&#xff0c;我们将介…

Qt Creator 的设置文件保存位置

在使用 Qt Creator 进行开发时,备份或迁移设置(例如文本编辑器偏好、语法高亮等)是常见需求。了解这些设置文件在不同操作系统中的保存位置,可以简化这个过程。本文将为您详细介绍 Qt Creator 保存设置文件的位置。 默认文件位置 Qt Creator 会创建多个文件和目录来存储其…

springboot系列八: springboot静态资源访问,Rest风格请求处理, 接收参数相关注解

文章目录 WEB开发-静态资源访问官方文档基本介绍快速入门注意事项和细节 Rest风格请求处理基本介绍应用实例注意事项和细节思考题 接收参数相关注解基本介绍应用实例PathVariableRequestHeaderRequestParamCookieValueRequestBodyRequestAttributeSessionAttribute ⬅️ 上一篇…

微服务-网关Gateway

个人对于网关路由的理解&#xff1a; 网关就相当于是一个项目里面的保安&#xff0c;主要作用就是做一个限制项。&#xff08;zuul和gateway两个不同的网关&#xff09; 在路由中进行配置过滤器 过滤器工厂&#xff1a;对请求或响应进行加工 其中filters&#xff1a;过滤器配置…

探索QCS6490目标检测AI应用开发(三):模型推理

作为《探索QCS6490目标检测AI应用开发》文章&#xff0c;紧接上一期&#xff0c;我们介绍如何在应用程序中介绍如何使用解码后的视频帧结合Yolov8n模型推理。 高通 Qualcomm AI Engine Direct 是一套能够针对高通AI应用加速的软件SDK&#xff0c;更多的内容可以访问&#xff1a…

摸鱼大数据——Spark基础——Spark环境安装——PySpark搭建

三、PySpark环境安装 PySpark: 是Python的库, 由Spark官方提供. 专供Python语言使用. 类似Pandas一样,是一个库 Spark: 是一个独立的框架, 包含PySpark的全部功能, 除此之外, Spark框架还包含了对R语言\ Java语言\ Scala语言的支持. 功能更全. 可以认为是通用Spark。 功能 P…

Golang | Leetcode Golang题解之第199题二叉树的右视图

题目&#xff1a; 题解&#xff1a; /** 102. 二叉树的递归遍历*/ func levelOrder(root *TreeNode) [][]int {arr : [][]int{}depth : 0var order func(root *TreeNode, depth int)order func(root *TreeNode, depth int) {if root nil {return}if len(arr) depth {arr a…

线性代数--行列式1

本篇来自对线性代数第一篇的行列式的一个总结。 主要是行列式中有些关键点和注意事项&#xff0c;便于之后的考研复习使用。 首先&#xff0c;对于普通的二阶和三阶行列式&#xff0c;我们可以直接对其进行拆开&#xff0c;展开。 而对于n阶行列式 其行列式的值等于它的任意…

每个架构师都应该读的八本经典书籍

格雷戈尔霍普在本文讨论了8本被视为软件架构师必读的经典书籍。 以下是所提及的关键书籍的摘要&#xff1a; 1、维特鲁威&#xff08;公元前 20 年&#xff09;的《建筑学》&#xff1a; 虽然与软件架构没有直接关系&#xff0c;但这部古代文献被提及&#xff0c;具有历史背景…

C++特殊类设计单例模式...

文章目录 请设计一个类&#xff0c;不能被拷贝请设计一个类&#xff0c;只能在堆上创建对象请设计一个类&#xff0c;只能在栈上创建对象请设计一个类&#xff0c;不能被继承请设计一个类&#xff0c;只能创建一个对象(单例模式)单例模式&#xff1a;饿汉模式&#xff1a;懒汉模…

代发考生战报:6月25号 南宁 HCIP-Transmission传输 H31-341考试884分通过

代发考生战报&#xff1a;6月25号 南宁 HCIP-Transmission传输 H31-341考试884分通过 &#xff0c;今天我和同事两个人去考的&#xff0c;我考试遇到1个新题&#xff0c;他遇到两个新题&#xff0c;客服提供的题库很稳定&#xff0c;全覆盖了&#xff0c;轻松通过&#xff0c;考…