vite-vue3

news/2024/11/19 9:27:59/

vite + vue3 使用文档(单页应用-超简单教程)

这些是使用 Vite + Vue 3 的基本步骤和概念,希望对你有所帮助!请记得在实际开发中参考相关的官方文档和示例以获取更详细的信息。

以下是使用 Vite + Vue 3 的简要使用文档:

1. 安装 Vite

  • 在终端中运行以下命令安装 Vite:npm install -g create-vite
  • 检查版本信息:vite -v 输出如:vite/4.3.5 win32-x64 node-v16.13.2

2. 初始化一个项目:

  • 使用 Vite 创建一个新项目:create-vite my-project --template vue
  • 进入项目目录:cd my-project
  • 安装项目依赖:npm install
  • 启动开发服务器:npm run dev
  • 可以看到启用了开发环境的地址如: Local: http://127.0.0.1:5173/
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uh5F861r-1686036825597)(vite-vue3_files/1.jpg)]

3. 查看项目:以下是一个基本的 Vite + Vue 3 项目的目录树结构:

my-project
├── dist
├── node_modules
├── public
│   ├── favicon.ico
│   └── index.html
├── src
│   ├── components
│   │   └── HelloWorld.vue
│   ├── App.vue
│   ├── main.js
├── .gitignore
├── package.json
├── README.md
└── vite.config.js

这是一个简单的示例,你可以根据自己的需求在该结构上进行扩展和修改。其中,重要的文件和目录包括:

  • dist: 构建后生成的文件夹,用于部署到服务器上。
  • public: 静态资源目录,包含 index.html 和其他公共文件。
  • src: 源代码目录,包含 Vue 组件、主应用程序文件和其他辅助文件。
  • src/components: 存放自定义组件的目录。
  • src/App.vue: 根组件,作为应用程序的入口点。
  • src/main.js: 主应用程序文件,用于初始化 Vue 应用程序和导入相关模块。
  • vite.config.js: Vite 的配置文件,用于自定义构建和开发服务器的行为。

这只是一个基本示例,实际项目中的目录结构可能会更加复杂,具体取决于你的项目需求和组织方式。

3.1 项目重点文件(夹)

  1. src/App.vue
    a. 使用了 <script setup> 详情查看文末:## 后记一<script setup>
    b. 在这个示例中,我们使用了<script setup> 区块,这是 Vue 3.2 中的一个新特性,它简化了组件中的 JavaScript 部分。
    c. 在 <script setup> 中,我们通过 import 语句导入了 HelloWorld 组件。
    d. template>:模板部分保持不变,包含了两个 img 标签,分别用于显示 Vite 和 Vue 的 logo 图片,并且在下方使用了 HelloWorld 组件,并传递了一个 msg 属性。
    e. <style scoped>:样式部分保持不变,使用了 scoped 属性将样式限定在组件内部。这些样式定义了 logo 类和 logo.vue 类的样式,包括 hover 时的效果。
    f. 它还演示了如何使用类选择器和 scoped 样式来定义样式,并在鼠标悬停时应用一些效果。
    g. 记得根据你的实际需求进行修改和扩展,这只是一个简单的示例。

  2. src/components/HelloWorld 组件

<script setup>
import { ref } from 'vue'defineProps({msg: String,
})const count = ref(0)
</script><template><h1>{{ msg }}</h1><div class="card"><button type="button" @click="count++">count is {{ count }}</button><p>Edit<code>components/HelloWorld.vue</code> to test HMR</p></div><p>Check out<a href="https://vuejs.org/guide/quick-start.html#local" target="_blank">create-vue</a>, the official Vue + Vite starter</p><p>Install<a href="https://github.com/vuejs/language-tools" target="_blank">Volar</a>in your IDE for a better DX</p><p class="read-the-docs">Click on the Vite and Vue logos to learn more</p>
</template><style scoped>
.read-the-docs {color: #888;
}
</style>

这个示例展示使用了 <script setup> 区块 。
在 <script setup> 中:
我们使用 import { ref } from ‘vue’ 导入了 ref 函数,用于创建响应式的数据。
使用 defineProps 定义了一个接受 msg 属性的组件属性。
创建了一个名为 count 的响应式变量,初始值为 0。

在<template> 中:
通过双花括号语法 {{ msg }},在 <h1> 标签中显示了从父组件传递过来的 msg 属性的值。
<button> 标签上添加了点击事件 @click=“count++”,当按钮被点击时,count 的值会递增。
展示了一些静态内容,包括一个 <div>、一些 <p> 标签和超链接。

在 <style scoped> 中:
定义了一个类选择器 .read-the-docs,使文本显示为灰色。
这个示例展示了在单文件组件中使用 <script setup> 区块,通过导入函数和定义组件属性来实现逻辑和数据的处理。模板部分展示了如何在组件中使用属性、事件和静态内容。样式部分展示了如何使用 scoped 属性将样式限定在组件内部。

请根据你的项目需求进行修改和扩展,这只是一个简单的示例。

  1. src/components
    通过将组件文件放置在 src/components 目录下,你可以方便地在其他组件或页面中导入和使用这些组件。例如,你可以在 src/App.vue 或其他组件中使用 import 语句导入这些组件,然后在模板中使用它们。

这样的组件目录结构可以帮助你更好地组织和管理你的组件代码,并使其在项目中的不同部分中重复使用和维护。记得根据你的实际项目需求来组织和命名你的组件文件。

tips:如果不需要复杂的功能,可以不使用路由,状态管理等库

4. 通过注册路由访问生成的组件vue-router – 非必须使用

  • 安装router:npm install vue-router
  • src/router.js: 路由文件,定义应用程序的路由配置。
  • src/components 目录下创建新的组件,比如 Home.vue About.vue
  • src 目录下创建一个新的路由文件,比如 router.js
  • router.js 中导入 Home.vue About.vue 组件,并设置路由路径。
  • src/main.js 中导入并使用路由文件。
  • 现在你可以通过访问相应的路由路径来访问生成的组件。
// router.js
import { createRouter, createWebHistory } from 'vue-router';// 导入你的组件
import Home from './components/Home.vue';
import About from './components/About.vue';const routes = [{ path: '/', component: Home },{ path: '/about', component: About },
];const router = createRouter({history: createWebHistory(),routes,
});export default router;

在main.js引入路由,并挂载到app

// main.js
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router';const app = createApp(App);
app.use(router);
app.mount('#app');

src/components Home组件

<template><div>Home</div>
</template><script setup></script><style lang="scss" scoped></style>

src/components About组件

<template><div>About</div>
</template><script setup></script><style lang="scss" scoped></style>

App.vue 新增路由渲染

<script setup>
import HelloWorld from './components/HelloWorld.vue'
</script><template><div><a href="https://vitejs.dev" target="_blank"><img src="/vite.svg" class="logo" alt="Vite logo" /></a><a href="https://vuejs.org/" target="_blank"><img src="./assets/vue.svg" class="logo vue" alt="Vue logo" /></a></div><HelloWorld msg="Vite + Vue" /><!-- 新增 路由导航 --><router-link to="/">Home</router-link> | <router-link to="/about">About</router-link><!-- 路由渲染位置 --><router-view></router-view>
</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. 使用状态管理:vue3 依旧可以使用vuex,但是官方启用了新的库pinia – 非必须使用

  • Pinia 是一个基于 Vue 3 的状态管理库,它提供了类似 Vuex 的 API,但是更加简单和直观。
  • Pinia 的使用方式与 Vuex 类似,但是它更加轻量级和易于使用。在使用 Pinia 时,可以通过定义 store 来管理应用程序的状态,并在组件中使用 useStore 函数来访问 store 中的状态和操作。
  • 要在 Vite + Vue 3 项目中安装和使用 Pinia 状态管理库,你可以按照以下步骤进行操作:
  1. 在你的项目根目录下打开终端或命令提示符。

  2. 运行以下命令使用 npm 安装 Pinia:

    npm install pinia
    

    或者,如果你使用的是 yarn 包管理器,可以运行以下命令:

    yarn add pinia
    
  3. 安装完成后,在你的项目中创建一个新的文件,例如 src/store/index.js,用于配置和导出 Pinia。

  4. 打开 src/store/index.js 文件,并添加以下内容:

    import { createPinia } from 'pinia';const pinia = createPinia();export default pinia;
    

    在这个示例中,我们导入了 createPinia 函数,用于创建和配置 Pinia 实例。然后,我们使用 createPinia() 创建了一个名为 pinia 的 Pinia 实例,并将其导出。

  5. 在主应用程序文件 src/main.js 中导入并使用 Pinia。打开 src/main.js 文件,并添加以下内容:

    import { createApp } from 'vue';
    import App from './App.vue';
    import pinia from './store';const app = createApp(App);
    app.use(pinia);
    app.mount('#app');
    

    在这个示例中,我们导入了 createApp 函数和应用程序的根组件 App。然后,我们导入并使用了之前创建的 Pinia 实例 pinia,通过调用 app.use(pinia) 将 Pinia 插件安装到应用程序中。

  6. 现在,你可以在你的组件中使用 Pinia 进行状态管理。

    • 首先,在 src/store/counter.js 文件中定义你的 Pinia store。
import { defineStore } from 'pinia';
import { ref } from 'vue'
// 方式一
// export const useCounterStore = defineStore('counter', {
//   state: () => ({
//     count: 0,
//   }),
//   actions: {
//     increment() {
//       console.log('add')
//       this.count++;
//     },
//   },
// });// 方式二 推荐 显然更符合vue3使用风格 简洁
export const useCounterStore = defineStore('counter', () => {const count = ref(0);const increment = () => {count.value++}return { count, increment }
})

在这个示例中,我们使用 defineStore 函数定义了一个名为 counter 的 store。在 state 部分,我们定义了一个名为 count 的状态变量。在 actions 部分,我们定义了一个名为 increment 的动作,用于增加 count 的值。

在你的组件中导入并使用 Pinia store。
counter.vue

    <template><div><h1>Count: {{ count }}</h1><button @click="increment">Increment</button></div></template><script setup>import { useCounterStore } from '../store/counter';import { ref } from 'vue';const counterStore = useCounterStore();const count = ref(counterStore.count);const increment = () => {counterStore.increment();count.value = counterStore.count;};</script>

在这个示例中,我们通过 import 语句导入了我们之前定义的 useCounterStore,并在 setup 函数中创建了一个名为 counterStore 的 store 实例。然后,我们通过返回对象的方式将 countincrement 绑定到组件的模板中。

现在,你可以在你的组件中使用 Pinia store 进行状态管理。通过在模板中访问和修改 store 中的状态和动作,可以实现组件之间的状态共享和交互。

6. 打包到服务器部署:

  • 在终端中运行以下命令构建项目:npm run build
  • 构建完成后,你将在 dist 目录中获得一个打包好的项目。
  • dist 目录中的文件上传到服务器上的合适位置。
  • 配置服务器以正确地提供静态文件。
  • 也可以把代码库拉到服务器打包到指定位置

7. 前后端 JSON 数据交互(fetch):

  • 在组件中使用内置的 fetch 函数或第三方库(如 Axios)进行网络请求。
  • 例如,在组件的方法中使用 fetch 请求 JSON 数据,并使用 Promise 来处理响应。
  • 跨域 查看 后记二

list.vue

<script setup>
import { reactive } from 'vue';const state = reactive({data: null,
});const fetchData = async () => {try {const response = await fetch('/api/api/passwords');const jsonData = await response.json();state.data = jsonData;} catch (error) {console.error(error);}
};fetchData();</script>

这些是使用 Vite + Vue 3 的基本步骤和概念,希望对你有所帮助!请记得在实际开发中参考相关的官方文档和示例以获取更详细的信息。

后记一

script setup 是 Vue 3 Composition API 中一个新的标签,它允许你在模板中直接使用 Composition API 的变量、函数等。
在 Vue 2 中,如果我们想在模板中使用 JavaScript 变量或函数,需要先在

<script>
export default {data() {return {name: 'John'}}
}
</script><template><div>{{ name }}</div> 
</template>

而在 Vue 3 Composition API 中,我们可以使用

<script setup>
const name = 'John'
</script><template><div>{{ name }}</div> 
</template>

script setup 有以下特点:

  • 它独立于 <script> 标签, 可以同时使用
  • 在其中定义的变量、函数等可以直接在模板中使用,无需定义在 export 之下
  • 它执行在组件的 setup() 函数之前
  • 它不支持If语句等逻辑,主要用于组件配置
    举个例子:
<script>
import { ref } from 'vue'export default {setup() {const name = ref('John')}
}
</script><script setup>
const age = 18
</script><template><div>{{ name }} - {{ age }}</div>
</template> 

在这个例子中:

  • name 是在 <script> 中通过 setup() 定义的,需要 export 后才能在模板中使用
  • age 是在 <script setup> 中定义的,可以直接在模板中使用
    所以总结来说,<script setup> 是 Vue 3 Composition API 带来的一个很实用的新语法,它允许在模板中直接使用 Composition API 的变量和函数等,使得编写组件更为方便快捷。

后记二 跨域代理配置 server.proxy

vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue()],// 配置代理server: {proxy: {'/api': {target: 'https://webtool.twoup.cn',changeOrigin: true,secure: false,rewrite: (path) => path.replace(/^\/api/, ''),},}}
})

后记三 打包优化、别名(@)配置、jsx支持等

vite.config.js

import { fileURLToPath, URL } from 'node:url'
import compression from 'vite-plugin-compression'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'// install unplugin-vue-components unplugin-auto-import for element-plus
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'// https://vitejs.dev/config/
export default defineConfig({server: {port: 3000,host: '0.0.0.0',cors: true,proxy: {'/api': {target: 'https://webtool.twoup.cn',changeOrigin: true,secure: false,rewrite: (path) => path.replace(/^\/api/, ''),},}},plugins: [vue(),vueJsx(),AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],}),compression({algorithm: 'gzip',ext: '.gz'})],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url)),}},build: {sourcemap: false,rollupOptions: {output: {manualChunks(id) {if (id.includes('node_modules')) {return id.toString().split('node_modules/')[1].split('/')[0].toString();}}}},/** 消除打包大小超过 500kb 警告 */chunkSizeWarningLimit: 1500,/** Vite 2.6.x 以上需要配置 minify: "terser", terserOptions 才能生效 */minify: "terser",/** 在打包代码时移除 console.log、debugger 和 注释 */terserOptions: {compress: {drop_console: false,drop_debugger: true,pure_funcs: ["console.log"]},format: {/** 删除注释 */comments: false}},/** 打包后静态资源目录 */assetsDir: "static"},
})

总结:

在 Vite + Vue 3 项目中,你可以按照以下步骤进行操作:

  1. 安装 Vite:通过命令行运行 npm init vite@latestyarn create vite,选择 Vue 3 作为模板,并完成项目初始化。

  2. 安装 Vue Router:通过命令行运行 npm install vue-router@nextyarn add vue-router@next,安装 Vue Router 来进行路由管理。

  3. 创建路由:在 src 目录下创建一个名为 router 的文件夹,并在其中创建一个 index.js 文件。在 index.js 中使用 createRouter 函数创建路由实例,并配置路由映射。

  4. 注册路由:在 main.js 中导入并使用创建的路由实例。

  5. 创建组件:在 src 目录下创建一个名为 components 的文件夹,并在其中创建 Vue 组件文件。

  6. 组合使用组件:在需要使用组件的地方,通过 import 引入并在模板中使用。

  7. 打包部署:通过命令行运行 npm run buildyarn build,将项目打包为生产环境代码。将生成的构建文件部署到服务器上。

  8. 前后端 JSON 数据交互:使用 Fetch API 或其他 HTTP 请求库,在前端发送请求到后端,并处理后端返回的 JSON 数据。

  9. 配置代理:在 Vite 项目的根目录下创建一个 vite.config.js 文件,并在其中配置代理规则,将请求代理到指定的目标 URL。

以上是关于 Vite + Vue 3 的使用文档总结,包括环境搭建、路由管理、组件使用、打包部署、前后端数据交互和代理配置等方面的内容。根据这些步骤,你可以快速开始和开发 Vite + Vue 3 项目。记得根据你的实际需求和项目情况,进行适当的调整和配置。如果遇到问题,可以参考官方文档或向社区寻求帮助。祝你开发顺利!


http://www.ppmy.cn/news/242948.html

相关文章

ArduinoMega2560 引脚表

前言学习修改Arduino原理图的时候读不懂引脚图。现写文如下滤清引脚关系。 ArduinoMega2560采用的是ATMEGA2560-16AU芯片。芯片内部有自己对引脚的一套编号&#xff0c;从1开始也就是PG5引脚。而Arduino板子对芯片引脚编号进行了重排&#xff0c;也就是映射&#xff0c;分为Di…

MPU6050工作原理及STM32控制MPU6050

一简介: 1.要想知道MPU6050工作原理&#xff0c;得先了解下面俩个传感器&#xff1a; ①陀螺仪传感器&#xff1a; 陀螺仪的原理就是&#xff0c;一个旋转物体的旋转轴所指的方向在不受外力影响时&#xff0c;是不会改变的。人们根据这个道理&#xff0c;用它来保持方向。然后…

IIC通讯读取MPU6050

江科大自化协学习记录&#xff0c;本实验利用IIC读取MPU6050数值&#xff0c;并且在OLED屏上显示 代码在最后面&#xff0c;笔者水平一般&#xff0c;各位凑合着看。 首先是OLED显示的代码&#xff0c;底层驱动来自江科大自化协。 链接就放在这里了&#xff0c;喜欢的自取啦&am…

国内BGP电信高防御大带宽服务器哪里的比较好

镇江电信 双L5630(8核16线程) 16G 240G ssd 20M 独享或100M共 50G防御 1ip 首月199 双L5630(8核16线程) 24G 240G ssd 20M 独享或100M共 50G防御 1ip 首月299 双L5630(8核16线程) 32G 240G ssd 20M 独享或100M共 50G防御 1ip …

如何在线压缩png图片?png压缩图片大小的方法介绍

压缩PNG图片大小的优点 随着数字化时代的发展&#xff0c;PNG格式已成为一种常见的图片格式。然而&#xff0c;由于高分辨率、高色深等原因&#xff0c;PNG图片通常具有较大的文件体积&#xff0c;导致在传输、存储和网页加载等方面会产生不必要的负担。因此&#xff0c;对于需…

l5630鲁大师跑分_拆解木质外壳三角形主机箱:搭载赛扬N3450处理器鲁大师跑分2.6万...

配置为赛扬N3450四核1.1Ghz&#xff0c;板载8g内存&#xff0c;64G EMMC储存。另有个M2口的128G固态(可扩展&#xff0c;但性价比不高)接口为3个usb3.0&#xff0c;一个千兆口RJ45&#xff0c;一个HDMI&#xff0c;有蓝牙和无线。 鲁大师跑个分26378 拆机前需要把两边的贴纸去除…

什么AC+AP组网?什么是mesh组网?

一、什么是ACAP组网&#xff1f; ACAP组网是一种基于集中式管理的无线局域网&#xff08;WLAN&#xff09;组网架构&#xff0c;主要由AC&#xff08;Access Controller&#xff09;和多个AP&#xff08;Access Point&#xff09;组成。AC作为网络管理中心&#xff0c;负责控制…

瞬息全宇宙:苹果发布虚拟现实头显Vision Pro

WWDC23巅峰时刻 熬夜看了WWDC苹果发布会&#xff0c;传闻了N年的苹果MR&#xff08;增强现实&#xff09;产品&#xff0c;终于来了。 One More Thing&#xff0c;库克说出了这句话&#xff0c;巅峰时刻终于到来&#xff01; 新的交互 名字叫Vision Pro&#xff0c;虽然这名…