vite-vue3

这篇具有很好参考价值的文章主要介绍了vite-vue3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 项目。记得根据你的实际需求和项目情况,进行适当的调整和配置。如果遇到问题,可以参考官方文档或向社区寻求帮助。祝你开发顺利!文章来源地址https://www.toymoban.com/news/detail-473542.html

到了这里,关于vite-vue3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3+Vite+Element-plus搭建组件库并使用Vitepress编辑组件库文档且发布到 npm并且部署 github pages(vitepress文档渲染.vue组件-推荐使用第二种)

    可以参考我之前发布的vite快速搭建vue3项目文章来创建;也可以直接使用我开源Vue3.2+Ts+Vite3+Pinia+Element-Plus模板wocwin-admin 以下我以 wocwin-admin 项目为例 当前目录结构如下 1、编辑 packages/table/index.ts,实现组件的导出 2、编辑 packages/index.ts 文件,实现组件的全局注册 1、安装vite

    2024年02月13日
    浏览(157)
  • 使用vite-plugin-qiankun插件, 将应用快速接入乾坤(vue3 vite)

    qiankun官网 vite-plugin-qiankun插件github地址:vite-plugin-qiankun 1、安装乾坤 2、在主应用中注册微应用(main.ts) 3、挂载 在App.vue挂载微应用节点 1、安装插件 qiankun目前是不支持vite的,需要借助插件完成 2、修改vite.config.ts 3、修改main.ts

    2024年02月13日
    浏览(46)
  • 使用electron-vite +Vue+ElementPlus开发跨平台桌面应用

    我们的项目是基于Elasticsearch来进行数据的存储与查询的,使用过ES的朋友应该都比较清楚,现在还没有一个比较友好的ES的桌面客户端软件可以和MySQL的桌面客户端软件媲美的,使用ES起来非常麻烦,经常会被吐槽的三个点: 资深测试吐槽:为什么技术选型要选择ES,增删改查

    2023年04月09日
    浏览(92)
  • 赛效:如何将PDF文件分割成单页的PDF文档

    1:打开wdashi点击PDF处理菜单里的“PDF分割”。 2:将本地PDF文件添加上去,在下方选择转换页码,在这里我们选择转换每一页。 3:点击右下角“开始转换”。 4:转换好后,点击绿色下载按钮将分割好的PDF文件保存到电脑本地。解压压缩包后,会发现每页内容都是一个单独的

    2024年02月12日
    浏览(48)
  • electron+vue3全家桶+vite项目搭建【25】使用electron-updater自动更新应用

    demo项目地址 electron-updater官网 我们不可能每次发布新的版本都让用户去手动下载安装最新的包,而是应用可以自动下载新包进行覆盖安装,electron-updater就可以非常方便的实现这个功能 引入依赖 实测用pnpm安装打包运行会有问题,这里还是推荐使用npm管理依赖 配置electron-bui

    2024年02月14日
    浏览(72)
  • python实现pdf双页文档转png图片,png图片裁剪为左右两等分,再合并为新的pdf单页文档

    现有pdf双页文档如下: 现按照以下页码次序对pdf双页文档进行裁剪和拼接,其中有两点需要特别注意,一是封面页只裁剪中间部分,二是文档是从右往左的顺序排版的

    2024年02月09日
    浏览(60)
  • 您可能并不需要单页应用程序

    前端框架的迅速崛起,如React、Angel、Vue.js、Elm等,使得单页面应用程序(Single Page Application)在网络上无处不在。对于许多开发人员来说,这些已经成为他们“默认”工具集的一部分。当他们开始一个新项目时,他们会使用他们已经知道的工具:后端的REST API和Reaction/Angel/V

    2024年02月13日
    浏览(36)
  • 07. vue3+vite+qiankun搭建微应用前端框架,并接入vue3微应用

    因为业务系统接入的需要,决定将一个vue3+vite+ts的主应用系统,改造成基于qiankun的微应用架构。此文记录了改造的过程及vue3微应用接入的种种问题。 网上有很多关于微应用改造的案例,但很多都没写部署之后什么情况。写了部署的,没有实操部署在二级目录、三级目录是什

    2024年01月16日
    浏览(65)
  • Electron + Vue3 + Vite + TS 构建桌面应用

    之前是使用React、Electron、TS和webpack来构建桌面应用的。虽然功能齐全,但是打包等等开发的体验不太理想,总感觉太慢了。作为一个开发者,我们总是希望,执行构建命令后,可以快速打包或者启动本地应用,且通过更少的配置,来完成开发体验。 现在的vite已经得到广泛的

    2024年02月14日
    浏览(63)
  • Vue3+vite实现组件上传npm并应用

    场景 :就是A项目的组件需要在B项目中使用 下面举例的是把a项目pagination分页组件上传到npm,在b项目使用 采坑日记 :封装的组件一定要起name要不调用不成功 1.1 首先在公用组件components文件夹下创建index.js文件,  1.2 index.js  1.3 vite.config.js  1.4 package.json  执行npm run build打包

    2024年02月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包