vite创建vue3项目

概述

Vite(法语意为 "快速的",发音 /vit/,发音同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。

 

官网:https://cn.vitejs.dev/guide/

 

安装vite

最新版本的vite,要求nodejs版本,必须是18.x以上,所以需要确保你的node版本足够高。

本文使用nodejs最新版本v22.7.0

yarn add vite

创建项目

使用国内镜像

npm config set registry=https://registry.npmmirror.com

  

安装最新版vite

npm  install -g  vite@latest

 

创建项目

yarn create vite

 

输入项目名:vite_test

框架选择:vue

语言选择:JavaScript

√ Project name: ... vite_test
√ Select a framework: » Vue
√ Select a variant: » JavaScript

  

创建成功后,根据提示,执行3个命令

Done. Now run:

  cd vite_test
  yarn
  yarn dev

 

执行成功后,提示如下:

 VITE v5.4.2  ready in 682 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: use --host to expose
  ➜  press h + enter to show help

 

访问页面:http://localhost:5173/

效果如下:

安装sass

yarn add -D sass-embedded

  

安装Element Plus

yarn add -D element-plus

  

导入Element Plus

修改文件src\main.js,注意红色字体是修改的

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')

 

修改文件src\components\HelloWorld.vue

在</template>上面增加一个div,注意红色字体部分

... 
  <div class="mb-4">
   <el-button type="success">Success</el-button>
   <el-button type="info">Info</el-button>
   <el-button type="warning">Warning</el-button>
   <el-button type="danger">Danger</el-button>
  </div>
</template>

  

刷新页面,查看底部,就可以看到添加的几个按钮了,使用的是Element ui框架

Element 表单展示

修改文件src\components\HelloWorld.vue,直接替换所有内容:

<script setup lang="ts">
import { ref } from 'vue'
import { Search } from '@element-plus/icons-vue';
import { Refresh } from '@element-plus/icons-vue';


const currentPage4 = ref(4)
const pageSize4 = ref(100)
const small = ref(false)
const background = ref(false)
const disabled = ref(false)

const handleSizeChange = (val: number) => {
  console.log(`${val} items per page`)
}
const handleCurrentChange = (val: number) => {
  console.log(`current page: ${val}`)
}


let username = ref('')
let email = ref('')

const query = () => {}

const tableData = [
  { username:"李莲花",
    sex:"男",
    age:38,
    email:"123456@qq.com",
    phone:12345678901,
    address:"莲花楼",

  },
  {
    username:"方多病",
    sex:"男",
    age:23,
    email:"fdb@qq.com",
    phone:1589999999,
    address:"天机堂",

  },
  {
    username:"笛飞声",
    sex:"男",
    age:39,
    email:"dfs@153.com",
    phone:13266666666,
    address:"金鸳盟",

  },
  {
    username:"乔婉娩",
    sex:"女",
    age:32,
    email:"qwm@163.com",
    phone:12345678901,
    address:"四顾门",

  },
  {
    username:"角丽谯",
    sex:"女",
    age:32,
    email:"jlq@163.com",
    phone:1258888888,
    address:"金鸳盟",

  },

]
</script>

<template>
  <el-card>
    <div class="query-input">
      <el-input v-model="username" placeholder="请输入用户名"/>
      <el-input v-model="email" placeholder="请输入邮箱"/>
      <el-button type="primary" @click="query"> 
        <el-icon><Search /></el-icon>
        查询
      </el-button>
      <el-button type="danger" @click="query">
        <el-icon><Refresh /></el-icon>
        重置
      </el-button>
    </div>
    
  </el-card>

  <el-card>
    <el-table :data="tableData" stripe style="width: 100%">
    <el-table-column prop="username" label="姓名" width="180" />
    <el-table-column prop="sex" label="性别" width="180" />
    <el-table-column prop="age" label="年龄" width="180" />
    <el-table-column prop="email" label="邮箱" width="180" />
    <el-table-column prop="phone" label="电话" width="180" />
    <el-table-column prop="address" label="地址"  />
    <el-table-column fixed="right" label="操作" width="180">
      <template #default>
        <el-button  type="primary" size="small" 
          >编辑</el-button
        >
        <el-button  type="danger" size="small">删除</el-button>
      </template>
    </el-table-column>

  </el-table>

  <div class="demo-pagination-block">
    <el-pagination
      v-model:current-page="currentPage4"
      v-model:page-size="pageSize4"
      :page-sizes="[100, 200, 300, 400]"
      :small="small"
      :disabled="disabled"
      :background="background"
      layout="total, sizes, prev, pager, next, jumper"
      :total="400"
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
    />
  </div>
  </el-card>
  <div class="a">
     11
	 <div class="b">22</div>
  </div>
</template>

<style scoped>
   .a {
       color: red;
      .b{
	    color: blue;
	  }   
   }
  .el-input {
    margin-right: 5px;
    width: 300px;
  }
  .query-input{
    display: flex;
    justify-content:center
  }
  .el-card{
    margin-bottom: 10px;
  }
  .demo-pagination-block{
    display: flex;
    justify-content: center;
    margin-top: 20px;
  }

</style>

  

刷新页面,效果如下:

 效果看起来,还挺漂亮的。

 

底部的11,22是为了测试css的class嵌套,这种写法在sass中很常用。

在style标签中,不需要特意声明语言是sass,他也自动支持这种写法,加了反而会报错。

 

添加路由

使用 yarn create vite 创建项目时,默认情况下不会自动创建路由配置,因为 Vite 的目标是提供一个轻量级的项目启动模板,而不包含额外的依赖或配置。
如果你需要在 Vite + Vue 3 项目中使用路由,可以按照以下步骤手动添加路由配置:

1. 安装 Vue Router
在项目根目录下运行以下命令安装 Vue Router:

yarn add vue-router

2. 创建路由配置文件
在 src 目录下创建一个 router 文件夹,并添加一个 index.js 文件,用于配置路由。
示例:src/router/index.js

import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import HelloWorld from '../components/HelloWorld.vue';

const routes = [
  {
    path: '/',
    name: 'HelloWorld',
    component: HelloWorld
  },
  {
    path: '/home',
    name: 'Home',
    component: Home
  }
];

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

export default router;

3. 在主文件中引入路由
在项目的入口文件src/main.ts中引入路由配置,并挂载到 Vue 应用实例上。
示例:src/main.ts

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from '../src/router';

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

const app = createApp(App);
app.use(router);
app.use(ElementPlus);
app.mount('#app');

4. 在 App.vue 中使用 <router-view>
在 App.vue 中使用 <router-view> 来渲染当前匹配的路由组件。
示例:src/App.vue

<script setup lang="ts">
</script>

<template>
  <div>
    <router-view />
  </div>
</template>

<style scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
  transition: filter 300ms;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}
</style>

5. 创建路由对应的组件
在 src/views 目录下创建对应的组件文件(如 Home.vue),并定义内容。
示例:src/views/Home.vue

<template>
  <div>
    <h1>Home Page</h1>
    <p>Welcome to the Home page!</p>
  </div>
</template>

6. 运行项目
运行项目以验证路由是否正常工作:

yarn dev

 

访问 http://localhost:5173,效果如下:

 

访问 http://localhost:5173/home,效果如下:

 

posted @ 2024-08-31 15:46  肖祥  阅读(271)  评论(0)    收藏  举报