当前位置:首页 > 技术分析 > 正文内容

Vue3 Vite 开发环境(vue3.0 vite)

ruisui883个月前 (02-03)技术分析14

Vue3 Vite 开发环境

参考:

https://cn.vuejs.org/

https://vitejs.cn/

1.单页面开发环境

在本地搭建 Vue 单页应用。创建的项目将使用基于 Vite 的构建设置,并允许我们使用 Vue 的单文件组件(SFC)。

确保你安装了最新版本的 Node.js,并且你的当前工作目录正是打算创建项目的目录。

执行如下命令:

npm create vue@latest

这一指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工具。你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示:

Vue.js - The Progressive JavaScript Framework

√ 请输入项目名称: ... demo1
√ 是否使用 TypeScript 语法? ... 否 / 是
√ 是否启用 JSX 支持? ... 否 / 是
√ 是否引入 Vue Router 进行单页面应用开发? ... 否 / 是
√ 是否引入 Pinia 用于状态管理? ... 否 / 是
√ 是否引入 Vitest 用于单元测试? ... 否 / 是
√ 是否要引入一款端到端(End to End)测试工具? >> 不需要
√ 是否引入 ESLint 用于代码质量检测? ... 否 / 是
√ 是否引入 Prettier 用于代码格式化? ... 否 / 是

正在构建项目 D:\workspace_of_typescript\webdemo\demo1\demo1...

项目构建完成,可执行以下命令:

  cd demo1
  npm install
  npm run format
  npm run dev

执行如下命令:

cd demo1
npm install
npm run format
npm run dev

访问:http://localhost:5173/

2.配置服务器

打开 vite.config.ts 文件,在 export default defineConfig 中添加如下配置:

server: {
    host: '0.0.0.0', // 指定服务器主机名
    port: 8080, // 指定服务器端口
    hmr: true,  // 开启热更新
    open: false, // 在服务器启动时自动在浏览器中打开应用程序
}

配置 server.proxy 示例:

export default defineConfig({
  server: {
    proxy: {
      // 字符串简写写法:http://localhost:5173/foo -> http://localhost:4567/foo
      '/foo': 'http://localhost:4567',
      // 带选项写法:http://localhost:5173/api/bar -> http://jsonplaceholder.typicode.com/bar
      '/api': {
        target: 'http://jsonplaceholder.typicode.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ''),
      },
      // 正则表达式写法:http://localhost:5173/fallback/ -> http://jsonplaceholder.typicode.com/
      '^/fallback/.*': {
        target: 'http://jsonplaceholder.typicode.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/fallback/, ''),
      },
      // 使用 proxy 实例
      '/api': {
        target: 'http://jsonplaceholder.typicode.com',
        changeOrigin: true,
        configure: (proxy, options) => {
          // proxy 是 'http-proxy' 的实例
        }
      },
      // 代理 websockets 或 socket.io 写法:ws://localhost:5173/socket.io -> ws://localhost:5174/socket.io
      '/socket.io': {
        target: 'ws://localhost:5174',
        ws: true,
      },
    },
  },
})

3.配置 TypeScript 编译

在如下文件中配置:

  • tsconfig.app.json
  • tsconfig.node.json
  • tsconfig.vitest.json

在上面文件中的 compilerOptions 项中添加如下配置:

"allowJs": true

4.多页面配置

1.把项目跟目录下面src目录的文件全部删除,删除项目根目录下的index.html。

2.在项目根目录下 src 创建 index 目录,在该目录中创建 index.vue 以及 index.ts 文件。内容如下:

index.vue

<template>
  <div>Index页面</div>
</template>

<script>
export default {
  name: "index"
}
</script>

<style scoped>

</style>

index.ts

import { createApp } from 'vue'
import { createPinia } from 'pinia'

import App from './index.vue'

const app = createApp(App)

app.use(createPinia())

app.mount('#app')

3.在项目根目录下创建 index.html,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/index/index.ts"></script>
</body>
</html>

4.在项目根目录下 src 创建 about 目录,在该目录中创建 about.vue 以及 about.ts 文件。内容如下:

about.vue

<template>
  <div>About页面</div>
</template>

<script>
export default {
  name: "about"
}
</script>

<style scoped>

</style>

about.ts

import { createApp } from 'vue'
import { createPinia } from 'pinia'

import App from './about.vue'

const app = createApp(App)

app.use(createPinia())

app.mount('#app')

5.在项目根目录下创建 about 子目录作为二级目录,并在该目录中创建 about.html,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/about/about.ts"></script>
</body>
</html>

6.在 vite.config.ts 文件中配置多文件入口,内容如下:

import { resolve } from 'path'

build: {
    rollupOptions: {
      input: {
        index: resolve(__dirname, 'index.html'),
        about: resolve(__dirname, 'about/about.html'),
      }, 
      output: {
        chunkFileNames: 'static/js/[name]-[hash].js',
        entryFileNames: "static/js/[name]-[hash].js",
        assetFileNames: "static/[ext]/name-[hash].[ext]"
      }
    },
  }

执行 npm run dev,在浏览器中访问:

http://localhost:8080/
http://localhost:8080/about/about.html

执行 npm run build 生成的目录结构:

about
	about.html
static
	js
		*.js
favicon.ico
index.html

5.多页面开发中文件规则

1.一般情况下部署到生产环境的项目访问路径最多为三级。

2.二级目录或多级目录在项目根目录下创建,并在这些目录中创建 html 文件。

3.对应二级目录或多级目录在 src 目录下创建,建议目录路径保持一致,便于维护,该目录用于存放 vue 和 ts 文件。

4.在 src 目录下对应的目录中创建 vue 和 ts 文件,文件名建议与html文件名相同。

5.html、vue、ts 文件的内容参考上面的内容。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/856.html

标签: vite.js
分享给朋友:

“Vue3 Vite 开发环境(vue3.0 vite)” 的相关文章

Python 幕后:Python导入import的工作原理

更多互联网精彩资讯、工作效率提升关注【飞鱼在浪屿】(日更新)Python 最容易被误解的方面其中之一是import。Python 导入系统不仅看起来很复杂。因此,即使文档非常好,它也不能让您全面了解正在发生的事情。唯一方法是研究 Python 执行 import 语句时幕后发生的事情。注意:在这篇文...

K8s里我的容器到底用了多少内存?

作者:frostchen导语 Linux下开发者习惯在物理机或者虚拟机环境下使用top和free等命令查看机器和进程的内存使用量,近年来越来越多的应用服务完成了微服务容器化改造,过去查看、监控和定位内存使用量的方法似乎时常不太奏效。如果你的应用程序刚刚迁移到K8s中,经常被诸如以下问题所困扰:容器的...

Vue中的路由配置常用属性

router:路由页面跳转的核心库;引入路由:import VueRouter from 'vue-router'; 注册路由:const router = new VueRouter({ })mode:模式路由有hash history两种模式:hash模式URL中包含#,#后边是...

三勾知识付费(PHP+vue3)微信小程序平台+SAAS+前后端源码

项目介绍三勾小程序商城基于thinkphp8+element-plus+uniapp打造的面向开发的小程序商城,方便二次开发或直接使用,可发布到多端,包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。软件架构后端:thinkphp8 管理端...

vue父组件修改子组件的值(通过调用子组件的方法)

props只支持第一次加载这个组件的时候获取父组件的值,后续修改父组件的值得时候子组件并不会动态的更改。然而我们想要通过父组件修改子组件的值要怎么做呢?可以通过ref的方式调用子组件的方法改变子组件的值。子组件<template><div><span>{{data...

原生微信小程序打包成安卓/IOS应用!#小程序开发

原生微信小程序打包成公。好消息,微信小程序可以直接打包成APP了你们知道吗?微信团队近日开发了一个多端开发平台。多端据文档描述,多端开发框架是支持使用小程序原生语法开发移动端应用的框架。开发者可以一次编码分别编译为小程序安卓以及iOS应用,实现多端开发。我们进入多端框架开发的文档,来看看怎么使用微信...