从0到1开发一个vue3+ts项目(一)

1. 环境配置

1.1 安装node

使用官方安装程序

  1. 前往 Node.js 官网:访问 Node.js 官网,下载适合你操作系统的安装程序。
  2. 运行安装程序:下载完成后,双击安装程序并按照提示进行安装。
  3. 验证安装:安装完成后,在终端或命令提示符中输入 node -vnpm -v 来验证 Node.js 和 npm(Node.js 包管理器)是否成功安装。

使用 nvm(Node 版本管理器)

nvm 是一个 Node.js 版本管理器,允许你在同一台机器上安装和切换不同版本的 Node.js。

  1. 安装 nvm:访问 nvm官网,下载nvm-setup.zip安装包
  2. 安装 Node.js:安装完 nvm 后,使用以下命令安装 Node.js:
    输入 **nvm install 版本号** 安装指定版本node
    
  3. 使用 Node.js:安装完成后,你可以使用以下命令来切换和使用不同版本的 Node.js:
    nvm use 版本号
    

1.2 安装vue

  1. 打开终端(命令提示符、终端或PowerShell)。
npm install -g @vue/cli
  1. 安装完成后,通过运行以下命令来确认Vue CLI是否安装成功:
vue --version
  1. 创建一个新的Vue项目
vue create my-project
  1. 进入项目文件夹,并启动开发服务器:
cd my-project
npm run serve

2. 项目用到的vue3知识

2.1 vue常用指令

1. v-ifv-show:根据表达式的bool值进行判断是否渲染该元素

2. v-on

  • 作用:使用 v-on 指令绑定 DOM 事件,并在事件被触发时执行一些 JavaScript 代码。
  • 语法: @事件名.修饰符 = “methods中的方法名”

3. v-for:根据一组数组或对象的选项列表进行渲染。在使用v-for时,要把一个唯一值赋值给:key属性(通常是数组的index或者数据的id);v-for 指令需要使用 item in items 形式的特殊语法,items 是源数据数组 /对象

4. v-bind:绑定标签上的属性。

2.2 响应式API

1. ref
ref是一个函数,接受一个简单类型或者复杂类型的传入并返回一个响应式且可变的 ref 对象,在函数中使用需要通过.value 访问,模板中使用不需要加.value
2. reactive
reactive是一个函数,接收一个普通的对象传入,不支持简单类型,把对象数据转化为响应式对象并返回
3. computed
根据现有响应式数据经过一定的计算得到全新的数据,只有在相关响应式依赖发生变化时才会重新计算。当一个值是基于其他状态计算得出的时候,最好使用计算属性。
4. watch
基于响应式数据的变化执行回调逻辑,当需要在数据变化时执行异步操作、操作 DOM,或者需要执行一些较复杂的逻辑时,最好使用 Watch 函数。

2.3 组件通信

在Vue 3中,父子组件之间的通信可以通过props传递数据到子组件,并通过$emit触发事件从子组件发送信息到父组件。为了更好的类型安全和开发体验,Vue 3提供了definePropsdefineEmits这两个Composition API来替代选项API中的propsthis.$emit

defineProps

  1. 参数:接受一个对象,对象中包含组件的属性及其类型、默认值等信息。
  2. 类型检查:使用 “defineProps” 可以确保组件的属性满足预期的类型要求,并提供了更好的类型检查功能。
  3. 默认值:可以在定义属性时指定默认值,如果父组件未提供相应的属性,则会使用默认值。

defineEmits

  1. 参数:接受一个数组,数组中包含组件可以触发的自定义事件名称。

  2. 类型推断:使用 “defineEmits” 后,编辑器可以正确地推断出组件可以触发的事件,从而提供更好的代码补全和类型检查。

  3. 组件定义中的用法:在组件定义对象中,可以通过 “emits” 属性将 “defineEmits” 返回的值传递给组件,从而指定该组件可以触发的自定义事件。

<script setup>
import { defineProps, defineEmits } from 'vue';
const props = defineProps({
  message: String
});
const emit = defineEmits(['child-event']);
const emitToParent = () => {
  emit('child-event', 'Data from child');
};
</script>

3. 项目功能模块设计以及页面展示

1. 首页模块

  • 轮播图:展示热门商品、促销活动等信息。
  • 商品分类导航:按照商品类型或者品牌分类展示,方便用户浏览。
  • 推荐商品:基于用户历史浏览记录或热门商品进行推荐。

2. 商品列表模块

  • 商品筛选:按照价格、品牌、类型等条件进行筛选。
  • 商品排序:按照价格、销量等进行排序。
  • 商品展示:展示商品的图片、名称、价格等信息,支持分页加载。

3. 商品详情模块

  • 商品信息展示:展示商品的详细信息,包括价格、描述、规格等。
  • 商品图片浏览:支持放大、缩小、切换图片等操作。
  • 商品评价:展示用户对商品的评价,并提供评分、评论内容等信息。

4. 购物车模块

  • 添加商品:支持用户将商品加入购物车。
  • 修改数量:用户可以修改购物车中商品的数量。
  • 删除商品:用户可以删除购物车中的商品。
  • 结算功能:跳转至结算页面进行支付。

5. 订单模块

  • 订单列表:展示用户的历史订单信息。
  • 订单详情:展示订单的详细信息,包括商品清单、价格、配送信息等。
  • 订单状态:实时更新订单状态,如待支付、待发货、已完成等。

6. 用户模块

  • 用户注册/登录:用户可以注册新账号或登录已有账号。
  • 个人信息管理:用户可以修改个人资料、密码等信息。
  • 收货地址管理:用户可以添加、修改、删除收货地址。
  • 订单管理:用户可以查看订单、申请退款等。

7. 支付模块

  • 选择支付方式:支持多种支付方式,如支付宝、微信支付、银行卡支付等。
  • 支付流程:用户进入支付页面,填写支付信息完成支付流程。

8. 搜索模块

  • 关键词搜索:用户可以通过关键词搜索商品。
  • 搜索历史:记录用户的搜索历史,方便用户再次搜索。
  • 搜索结果展示:展示搜索结果,支持分页加载和筛选。

1.jpg
2.jpg
3.jpg
4.jpg
5.jpg

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

顺序表经典算法OJ题-- 力扣27,88

题1&#xff1a; 移除元素 题2&#xff1a; 合并两个有序数组 一&#xff1a;题目链接&#xff1a;. - 力扣&#xff08;LetCode&#xff09; 思路&#xff1a;&#xff08;双指针法&#xff09; 创建两个变量src&#xff0c;dst 1&#xff09;若src指向的值为val&#xf…

Qt复习第二天

1、菜单栏工具栏状态栏 #include "mainwindow.h" #include "ui_mainwindow.h" #pragma execution_character_set("utf-8"); MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);//菜…

粤嵌—2024/4/26—跳跃游戏 ||

代码实现&#xff1a; 方法一&#xff1a;回溯 历史答案剪枝优化——超时 int *dis;void dfs(int k, int startindex, int *nums, int numsSize) {if (dis[startindex] < k) {return;}dis[startindex] k;for (int i 0; i < nums[startindex]; i) {if (startindex i &…

嫁接打印的技术要点

所谓嫁接打印&#xff0c;是一种增减材混合制造的方式。它将已成形的模具零件当作基座&#xff0c;在此基础上“生长”出打印的零件。其中基座通常采用传统加工方式制造&#xff0c;而打印部分则使用专用的金属粉末&#xff0c;通过 3D 打印技术成型。 嫁接打印之所以备受欢迎&…

4.nginx.pid打开失败以及失效的解决方案

一. nginx.pid打开失败以及失效的解决方案 1.错误图片&#xff1a; 2.解决方法 步骤1&#xff1a;进入这个目录 /var/run/nginx,提示没有文件或目录&#xff0c;则使用mkdir创建这个目录。 步骤2&#xff1a;然后 ./nginx -s reload 运行,是一个无效的PID 步骤3&#xff1a;使…

SMI接口

目录 SMI 接口帧格式读时序写时序 IP 设计IP 例化界面IP 接口IP 验证 SMI 接口 SMI&#xff08;Serial Management Interface&#xff09;串行管理接口&#xff0c;也被称作 MII 管理接口&#xff08;MII Management Interface&#xff09;&#xff0c;包括 MDC 和 MDIO 两条信…

【字符串】Leetcode 二进制求和

题目讲解 67. 二进制求和 算法讲解 为了方便计算&#xff0c;我们将两个字符串的长度弄成一样的&#xff0c;在短的字符串前面添加字符0&#xff1b;我们从后往前计算&#xff0c;当遇到当前计算出来的字符是> 2’的&#xff0c;那么就需要往前面进位和求余 注意&#xf…

《QT实用小工具·六十二》基于QT实现贝塞尔曲线画炫酷的波浪动画

1、概述 源码放在文章末尾 该项目实现了通过贝塞尔曲线画波浪动画&#xff0c;可控制 颜色密度速度加速度 安装与运行环境 语言&#xff1a;C 框架&#xff1a;Qt 11.3 平台&#xff1a;Windows 将屏幕水平平均分为10块&#xff0c;在一定范围内随机高度的12个点&#xff08;…

OAuth 2.0 和 OAuth 2.1

OAuth 2.0 和 OAuth 2.1比较&#xff1a; OAuth 2.0 和 OAuth 2.1 是授权框架的不同版本&#xff0c;它们用于允许应用程序安全地访问用户在另一个服务上的数据。以下是它们之间的一些主要区别&#xff1a; 安全性增强&#xff1a;OAuth 2.1 旨在提高安全性&#xff0c;它整合…

C语言/数据结构——每日一题(移除链表元素)

一.前言 今天在leetcode刷到了一道关于单链表的题。想着和大家分享一下。废话不多说&#xff0c;让我们开始今天的知识分享吧。 二.正文 1.1题目要求 1.2思路剖析 我们可以创建一个新的单链表&#xff0c;然后通过对原单链表的遍历&#xff0c;将数据不等于val的节点移到新…

MySQL索引(聚簇索引、非聚簇索引)

了解MySQL索引详细&#xff0c;本文只做整理归纳&#xff1a;https://blog.csdn.net/wangfeijiu/article/details/113409719 概念 索引是对数据库表中一列或多列的值进行排序的一种结构&#xff0c;使用索引可快速访问数据库表中的特定信息。 索引分类 主键索引&#xff1a…

微信群发用什么软件最安全?微信群发软件哪个好?微信群发助手软件在哪里?

今天给大家推荐一款我们目前在使用的电脑群发工具掘金小蜜&#xff0c;不仅可以无限多开&#xff0c;方便你同时管理多个账号&#xff0c;群发功能更是十分强大&#xff0c;轻松释放你的双手。 掘金小蜜&#xff08;只支持Win7及以上操作系统&#xff0c;没有推Mac版和手机客户…

【算法入门赛】B. 自助店评分(C++、STL、推荐学习)题解与代码

比赛地址&#xff1a;https://www.starrycoding.com/contest/8 题目描述 在上一场的入门教育赛中&#xff0c;牢 e e e找到了所有自助店的位置&#xff0c;但是他想发现一些“高分好店”&#xff0c;于是他利用爬虫技术从“小众点评APP”中爬取了武汉所有自助店的评分。 评分…

[笔试训练](十八)

目录 052:字符串压缩 053:chika和蜜柑 054:01背包 052:字符串压缩 压缩字符串(一)_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 双指针模拟 class Solution { public:string compressString(string param) {int nparam.size();string ret;int num…

【线性代数】英语版听课笔记

线性代数 - 北京航天航空大学&#xff08;英文版&#xff09;_哔哩哔哩_bilibili 39.concept of vector space in this lecture we will studyvector space&#xff0c; the concept of basis dimension and coordinates 向量空间的维数&#xff1a;向量空间的基底所含向量的…

wandb: - 0.000 MB of 0.011 MB uploaded持续出现的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

界面组件DevExpress Blazor UI v23.2新版亮点:图表组件全新升级

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验&#xff0c;这个UI自建库提供了一套全面的原生Blazor UI组件&#xff08;包括Pivot Grid、调度程序、图表、数据编辑器和报表等&#xff09;。 DevExpress Blazor控件目前已经升级…

四边形不等式优化dp,超详细,概念定理详解证明,OJ练习

零、前言 四边形不等式最早是 D.E.Knuth 在优化传统O(n3)区间dp求解最优二叉检索树为O(n2)所采用的方法,可惜原论文的证明跳跃性过强,阅读门槛较高. 不过随着算竞的发展,四边形不等式已经有了较为完备的可参考资料,本文进行介绍. 一、再看[石子合并] 石子合并是区间dp的经典入…

【vue3-pbstar-big-screen】一款基于vue3、vite、ts的大屏可视化项目

vue3-pbstar-big-screen是一款基于vue3、vite、ts的大屏可视化项目&#xff0c;项目已内置axios、sass&#xff0c;如element、echarts等需要自行安装。 屏幕适配方案 本项目主要通过transform: scale()缩放核心区域实现屏幕适配效果 //html <div class"container-wr…

IDEA无法下载远程仓库jar包问题

问题描述&#xff1a; idea无法下载远程仓库jar包&#xff0c;最奇怪的是idea有多个项目&#xff0c;有些项目可以下载&#xff0c;有些项目不行。报错如下&#xff1a; 一开始&#xff1a; unable to find valid certification path to requested target Try run Maven impo…
最新文章