VUE3+TS+element-plus项目从0开始入门 - 创建项目、认识基本结构

写在前面

开前请自行下载vs code、node.js, 在vs code里面安装Vue - Official插件。本文使用的是vue3、ts、element,windows系统。

本文是 VUE3+TS+element-plus项目从0开始入门 系列的第一章
下一章 : VUE3+TS+element-plus项目从0开始入门 - 02

1、创建vue3项目

打开vscode,选择一个你希望项目保存的位置
在这里插入图片描述
再打开vs code的终端
在这里插入图片描述

npm create vue@latest

输入npm指令 npm create vue@latest , 后面依次按要求输入就行
这里Vue Router、和ESLint我们都选了了否,是为了更方法的入门vue3项目,在实际的工程中一般选是。
在这里插入图片描述

npm i

输入npm i 安装项目依赖

注意这里要先切换到项目的根目录下
npm i 是npm install的简写

在这里插入图片描述
npm i 执行完成之后会多一个项目依赖目录
在这里插入图片描述

2、项目结构

.vscode

.vscode 里面主要放vscode的工程配置文件。

.vscode里面的内容修改之后,关闭vscode再重新打开一下才会显示效果
在这里插入图片描述

vue3结构

a、项目树结构

这里面主要关注src, 后续前端写的大多数内容都在里面

├─node_modules                  # 存放项目依赖
├─public
│      favicon.ico              # 网站图标,浏览器标签栏显示的小图标
└─src
    │  App.vue                  # 根组件,Vue顶级组件,其他组件通常嵌套在其中
    │  main.ts                  # 应用入口文件,初始化Vue实例并挂载到DOM上
    │  
    ├─assets
    │      base.css             # 基础样式文件,定义全局通用样式
    │      logo.svg             # 项目Logo的SVG文件,通常用于品牌展示
    │      main.css             # 主样式文件,可能包含项目的主要CSS规则
    │      
    └─components
        │  HelloWorld.vue       # 示例组件,通常用于演示或测试目的
│  .gitignore                   # Git忽略规则文件
│  env.d.ts                     # TS类型声明文件,若没有,import时会报错
│  index.html                   # 项目HTML入口,Vue会被挂载到此文件中
│  package-lock.json            # 记录npm安装的依赖版本信息,确保不同环境中依赖一致性
│  package.json                 # 项目配置文件,包含项目基本信息、依赖和脚本命令
│  README.md                    # 项目的说明文档,通常包含项目介绍、使用方法等内容
│  tsconfig.app.json            # TypeScript配置文件,专门针对应用程序代码的TS编译选项
│  tsconfig.json                # 主要的TypeScript配置文件,定义了整个项目的TS编译规则
│  tsconfig.node.json           # TypeScript配置文件,专门针对Node.js环境的代码编译选项
│  vite.config.ts               # Vite构建工具的配置文件,用于自定义构建行为

b、package.json

项目中有package-lock.json和package.json

  • package-lock.json通常不需要手动编辑
    每次运行 npm install 或其他相关命令时,npm 会根据 pa

<think>我们正在创建一个使用Vue3、TypeScript、Pinia和ElementPlus的前端项目。根据引用内容,我们可以按照以下步骤进行:1.**使用Vite创建Vue3 +TypeScript项目**:Vite是一个快速的前端构建工具,我们可以用它来初始化项目。2.**添加VueRouter**:用于路由管理。 3. **添加Pinia**:作为状态管理库,并可以配合持久化插件使用。 4. **添加ElementPlus**:一个基于Vue3的UI组件库。 5. **添加Axios**:用于网络请求。下面我们详细说明每一步。###第一步:创建Vite项目在终端中运行以下命令来创建项目: ```bashnpm createvite@latest``` 然后按照提示操作: -输入项目名称-选择框架:Vue-选择变体:TypeScript创建完成后,进入项目目录并安装依赖: ```bashcd项目名称npminstall``` ###第二步:安装VueRouter在项目目录中运行:```bashnpminstall vue-router@4``` ###第三步:安装Pinia及其持久化插件安装Pinia和持久化插件: ```bashnpm installpinianpminstall pinia-plugin-persistedstate```然后,我们需要创建和配置Pinia。在`src`目录下创建一个`store`目录,并在其中创建`index.ts`文件: ```ts// src/store/index.tsimport {createPinia }from &#39;pinia&#39; importpiniaPluginPersistedstate from&#39;pinia-plugin-persistedstate&#39; constpinia= createPinia() pinia.use(piniaPluginPersistedstate) exportdefault pinia``` 同时,我们可以创建模块,例如`account.ts`(用户账户状态存储):```ts//src/store/account.tsimport {defineStore} from&#39;pinia&#39;export constuseAccountStore =defineStore(&#39;account&#39;, {state: ()=> ({user: null,token:&#39;&#39;}),persist:true,//开启持久化actions: {setUser(user: any) {this.user =user},setToken(token: string) {this.token =token}}}) ```在`main.ts`中引入并使用pinia: ```tsimport {createApp} from&#39;vue&#39; importApp from&#39;./App.vue&#39; importpiniafrom &#39;./store&#39;createApp(App).use(pinia).mount(&#39;#app&#39;)``` ###第四步:安装ElementPlus安装ElementPlus:```bashnpminstall element-plus``` 在`main.ts`中全局引入ElementPlus(或者你也可以按需引入,但全局引入更简单): ```tsimport ElementPlus from&#39;element-plus&#39;import &#39;element-plus/dist/index.css&#39;constapp =createApp(App)app.use(ElementPlus)app.mount(&#39;#app&#39;)``` ###第五步:安装Axios```bashnpminstall axios```然后我们可以封装一个Axios实例,例如在`src/utils/request.ts`中。###第六步:配置Vue Router在`src`目录下创建`router`目录,并在其中创建`index.ts`:```tsimport{ createRouter,createWebHistory,RouteRecordRaw }from &#39;vue-router&#39; constroutes:Array<RouteRecordRaw>= [//定义路由] constrouter =createRouter({history:createWebHistory(),routes})export defaultrouter``` 然后在`main.ts`中引入并使用:```tsimportrouter from&#39;./router&#39; app.use(router)``` ###项目结构最终的项目结构大致如下:``` src/├──assets/├── components/├──router/│└──index.ts├──store/│├── index.ts│└──account.ts├──utils/│└──request.ts├──views/(或pages,用于存放页面组件)├── App.vue└── main.ts``` ###运行项目使用以下命令运行项目:```bashnpmrun dev```这样,我们就完成了使用Vue3、TypeScript、Pinia和Element Plus创建前端项目基本步骤。§§相关问题§§1.如何配置Vite项目的别名(alias)? 2.在Vue3项目中如何按需引入ElementPlus组件? 3.如何配置Axios的拦截器?</think>### 使用 Vue 3 + TypeScript + Pinia + Element Plus 创建前端项目 以下是完整的创建步骤(基于 Vite 构建工具): #### 1. 创建基础项目 ```bash # 初始化项目 npm create vite@latest my-vue-project -- --template vue-ts # 进入项目目录 cd my-vue-project ``` #### 2. 安装核心依赖 ```bash # 安装 Pinia (状态管理) npm install pinia # 安装 Element Plus (UI 框架) npm install element-plus # 安装图标库 npm install @element-plus/icons-vue # 安装 CSS 预处理器 (可选) npm install sass -D ``` #### 3. 配置 Pinia 在 `src/store/index.ts` 中创建: ```typescript import { createPinia } from &#39;pinia&#39; import piniaPluginPersistedstate from &#39;pinia-plugin-persistedstate&#39; const pinia = createPinia() pinia.use(piniaPluginPersistedstate) // 启用状态持久化 export default pinia // 导出模块 (示例) export * from &#39;./userStore&#39; ``` 创建用户模块 `src/store/userStore.ts`: ```typescript import { defineStore } from &#39;pinia&#39; export const useUserStore = defineStore(&#39;user&#39;, { state: () => ({ name: &#39;&#39;, token: &#39;&#39; }), actions: { login(userData: { name: string; token: string }) { this.name = userData.name this.token = userData.token } }, persist: true // 开启持久化存储 }) ``` #### 4. 配置 Element Plus 在 `src/main.ts` 中全局引入: ```typescript import { createApp } from &#39;vue&#39; import App from &#39;./App.vue&#39; import pinia from &#39;./store&#39; import ElementPlus from &#39;element-plus&#39; import &#39;element-plus/dist/index.css&#39; const app = createApp(App) app.use(pinia) app.use(ElementPlus) app.mount(&#39;#app&#39;) ``` #### 5. 项目结构优化 ``` src/ ├── assets/ ├── components/ ├── store/ # Pinia 状态管理 │ ├── index.ts │ └── userStore.ts ├── views/ # 页面组件 ├── utils/ # 工具函数 ├── router/ # 路由配置 ├── App.vue └── main.ts ``` #### 6. 使用示例 在 Vue 组件中使用 Pinia 和 Element Plus: ```vue <template> <el-button type="primary" @click="login">登录</el-button> <div v-if="userStore.name">欢迎, {{ userStore.name }}</div> </template> <script setup lang="ts"> import { useUserStore } from &#39;@/store/userStore&#39; import { ElMessage } from &#39;element-plus&#39; const userStore = useUserStore() const login = () => { userStore.login({ name: &#39;张三&#39;, token: &#39;abc123&#39; }) ElMessage.success(&#39;登录成功&#39;) } </script> ``` #### 7. 运行项目 ```bash npm run dev ``` ### 关键配置说明 1. **状态持久化**:通过 `pinia-plugin-persistedstate` 插件实现状态自动保存到 localStorage 2. **按需导入**:如需优化体积,可使用 `unplugin-element-plus` 实现组件按需导入 3. **主题定制**:在 `vite.config.ts` 中添加 CSS 配置可自定义 Element Plus 主题 4. **TypeScript 支持**:所有 Pinia store 都具备完整的类型推断 ### 常见问题解决方案 1. **Element Plus 图标不显示**: ```typescript // 在 main.ts 中注册图标 import * as ElementPlusIconsVue from &#39;@element-plus/icons-vue&#39; const app = createApp(App) for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) } ``` 2. **Pinia 状态重置问题**: ```typescript // 在 store 中启用持久化 persist: { key: &#39;user-store&#39;, // 自定义存储键名 storage: localStorage, // 指定存储方式 paths: [&#39;token&#39;] // 只持久化特定字段 } ``` 3. **Vite 路径别名配置**: ```typescript // vite.config.ts export default defineConfig({ resolve: { alias: { &#39;@&#39;: path.resolve(__dirname, &#39;src&#39;) } } }) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值