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

news2025/1/11 20:44:28

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.coloradmin.cn/o/1661342.html

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

相关文章

[uniapp] 配置ts类型声明

我想引进图片,但是报错 声明一下就行 TypeScript 支持 | uni-app官网 创建tsconfig.json文件,复制官网的配置 然后在随便一个目录下写一个随便名字的.d.ts文件 例如这样 保存就行 因为ts是默认扫描全部的,所以要按照官网的写法 把不必要的排除掉就行,免得浪费性能

DDS Blockset Shapes Demo

此示例演示DDS模块集Blockset形状演示应用程序。Shapes Demo是一个常见的数据分发服务&#xff08;DDS&#xff09;应用程序&#xff0c;用于介绍DDS概念&#xff0c;你可以使用它发布和订阅以简单形状&#xff08;圆形、方形和三角形&#xff09;表示的主题&#xff0c;并观察…

详解分布式锁

知识点&#xff1a; 单体锁存在的问题&#xff1a; 单体锁&#xff0c;即单体应用中的锁&#xff0c;通过加单体锁&#xff08;synchronized或RentranLock&#xff09;可以保证单个实例并发安全 单体锁是JVM层面的锁&#xff0c;只能保证单个实例上的并发访问安全 如果将单…

vue2结合element-ui实现TreeSelect 树选择功能

需求背景 在日常开发中&#xff0c;我们会遇见很多不同的业务需求。如果让你用element-ui实现一个 tree-select 组件&#xff0c;你会怎么做&#xff1f; 这个组件在 element-plus 中是有这个组件存在的&#xff0c;但是在 element-ui 中是没有的。 可能你会直接使用 elemen…

nginx配置文件和配置命令详解案例

一.nginx.conf配置结构 1.1配置结构图 1.2 nginx中配置nginx.conf配置内容 #user nobody; user root; # 表示worker进程是有root用户去执行的 worker_processes 2; events {# 默认使用epolluse epoll;# 每个worker链接最大数据worker_connections 1024; } http {include …

Java入门基础学习笔记14——数据类型转换

类型转换&#xff1a; 1、存在某种类型的变量赋值给另一种类型的变量&#xff1b; 2、存在不同类型的数据一起运算。 自动类型转换&#xff1a; 类型范围小的变量&#xff0c;可以直接赋值给类型范围大的变量。 byte类型赋值给int类型&#xff0c;就是自动类型转换。 pack…

【MySQL基本查询(下)】

文章目录 一、update案例 二、Delete案例注意&#xff1a;delete 全表数据的行为慎用&#xff01;truncate 三、插入查询结果案例 四、了解一些函数1.count函数2.sum函数3. avg函数4.max函数5. min函数 五、group by子句的使用案例having和where 一、update 该关键字的功能就是…

基于SpringBoot的全国风景区WebGIS按省展示实践

目录 前言 一、全国风景区信息介绍 1、全国范围内数据分布 2、全国风景区分布 3、PostGIS空间关联查询 二、后台查询的设计与实现 1、Model和Mapper层 2、业务层和控制层设计 三、WebGIS可视化 1、省份范围可视化 2、省级风景区可视化展示 3、成果展示 总结 前…

C++ 抽象与封装

一 抽象 抽象实例&#xff1a;时钟 数据抽象&#xff1a; 具有表面当前时间的时、分、秒 行为抽象&#xff1a; 具有设置时间和显示时间两个最基本的功能。 抽象实例&#xff1a;人 数据抽象&#xff1a;姓名、年龄、性别等。 行为抽象&#xff1a; 生物属性&#xff1a;吃…

Cocos creator实现《战机长空》关卡本地存储功能

Cocos creator实现《战机长空》关卡本地存储功能 Cocos creator在开放小游戏过程中&#xff0c;经常会出现设置关卡&#xff0c;这里记录一下关卡数据本地存储功能。 一、关卡设置数据 假如我们有关卡数据如下&#xff0c; let settings [ { level: 1, // 第1关 score: 0,…

Java类加载器介绍

在Java中&#xff0c;类加载器是一种动态加载类的机制&#xff0c;它负责在运行时查找、加载和链接类文件。当Java应用程序需要创建某个类的对象时&#xff0c;类加载器会在运行时查找该类对应的.class文件&#xff0c;并将其加载到Java虚拟机中。Java类加载器通常分为三层&…

【MQTT】mosquitto 的 “下载、交叉编译、使用” 详细教程,手把手搭建一个MQTT Broker

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-05-11 0…

系统架构设计师 - 计算机组成与体系结构(1)

计算机组成与体系结构 计算机组成与体系结构计算机结构 ★CPU 组成结构运算器组成控制器组成 计算机体系结构冯诺依曼结构哈弗结构 嵌入式芯片&#xff08;了解&#xff09; 存储系统 ★★★★概述Cache主存编址磁盘管理磁盘基本结构与存取过程磁盘优化分布存储磁盘管理 大家好…

C++:多态-重写和重载

重写&#xff08;Override&#xff09;和重载&#xff08;Overload&#xff09;是面向对象编程中常用的两个概念&#xff0c;它们虽然都涉及到方法的定义&#xff0c;但是在实现和使用上有着不同的特点。 重写&#xff08;Override&#xff09;&#xff1a; 重写是指在子类中重…

部署xwiki服务需要配置 hibernate.cfg.xml如何配置?

1. 定位 hibernate.cfg.xml 文件 首先&#xff0c;确保您可以在 Tomcat 的 XWiki 部署目录中找到 hibernate.cfg.xml 文件&#xff1a; cd /opt/tomcat/latest/webapps/xwiki/WEB-INF ls -l hibernate.cfg.xml如果文件存在&#xff0c;您可以继续编辑它。如果不存在&#xff…

Go语言系统学习笔记(一):基础篇

1. 写在前面 公司的新业务开发需要用到go语言&#xff0c;虽然之前没接触过这门语言&#xff0c;但在大模型的帮助下&#xff0c;边看项目边写代码也能进行go的项目开发&#xff0c;不过&#xff0c;写了一段时间代码之后&#xff0c;总感觉对go语言本身&#xff0c;我的知识体…

【SRC实战】合成类小游戏外挂漏洞

挖个洞先 https://mp.weixin.qq.com/s/ZnaRn222xJU0MQxWoRaiJg “以下漏洞均为实验靶场&#xff0c;如有雷同&#xff0c;纯属巧合” 合成类小游戏三个特点&#xff1a; 1、一关比一关难&#xff0c;可以参考“羊了个羊” 2、无限关卡无限奖励&#xff0c;可以参考“消灭星星…

BBS客户端服务器的编写

根据网络编程中的内容&#xff0c;我们本篇文章将讲解一个bbs通信的项目&#xff0c;首先让我们了解一下什么是bbs. 一、bbs介绍 BBS&#xff0c;即Bulletin Board System的缩写&#xff0c;中文译为“电子公告板系统”或“网络论坛”。它是一个在网络上进行信息交流和讨论的…

【科研】常用的实验结果评价指标(1) —— R2(R-square)是什么?

常用的实验结果评价指标&#xff08;1&#xff09; —— R2(R-square)&#xff0c;可能为负数吗&#xff1f;&#xff01; 提示&#xff1a;先说概念&#xff0c;后续再陆续上代码 文章目录 常用的实验结果评价指标&#xff08;1&#xff09; —— R2(R-square)&#xff0c;可能…

基于WPF的DynamicDataDisplay曲线显示

一、DynamicDataDisplay下载和引用 1.新建项目,下载DynamicDataDisplay引用: 如下图: 二、前端开发: <Border Grid.Row="0" Grid.Column="2" BorderBrush="Purple" BorderThickness="1" Margin="2"><Grid>…