从零搭建一个vite+vue3+ts规范基础项目(搭建过程问题小结)

yizhihongxing

首先需要明确,要搭建一个Vite + Vue3 + TypeScript的项目,需要考虑以下步骤:

  1. 安装NodeJS和npm:如果你的机器上没有安装NodeJS和npm,请先到Node.js官网(https://nodejs.org/en/)下载安装后,打开cmd或者终端,输入node -v和npm -v,查看是否安装成功。

  2. 初始化项目:打开命令行,创建一个新的项目文件夹,使用以下命令初始化一个新的npm项目。这里,我们以myproject为例。

mkdir myproject
cd myproject
npm init

在npm init命令执行后,根据提示填写各项基本信息,然后按Enter键即可。

  1. 安装Vite:进入项目根目录,运行以下命令来安装vite。
npm install vite --save-dev

安装后会自动在项目根目录下生成一个package.json文件。

  1. 安装Vue 3:运行以下命令来安装Vue 3。
npm install vue@next --save-dev
  1. 安装TypeScript:运行以下命令来安装TypeScript。
npm install typescript --save-dev
  1. 配置Vite:在项目根目录下新建一个vite.config.ts文件,输入以下代码。
// vite.config.ts

export default {
    root: './src',
    build: {
        outDir: '../dist'
    }
}

这里的配置含义是:

  • 指定项目的根目录为“./src”;
  • 指定编译后的代码输出目录为“../dist”。

  • 配置TypeScript:在项目根目录下新建一个tsconfig.json文件,输入以下代码。

{
    "compilerOptions": {
        "target": "es6",
        "module": "esnext",
        "moduleResolution": "node",
        "esModuleInterop": true,
        "allowJs": true,
        "sourceMap": true,
        "strict": true,
        "jsx": "preserve",
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "resolveJsonModule": true,
        "noImplicitAny": false,
        "noImplicitThis": false,
        "lib": [ "dom", "esnext" ]
    },
    "exclude": [
        "node_modules",
        "dist"
    ]
}

这里的配置含义是:

  • 编译的目标是ES6;
  • 模块采用ES6;
  • ES模块导入的解析规则是Node的方式;
  • 允许导入CommonJS模块;
  • 生成source map文件;
  • 开启严格模式;
  • 保留Jsx代码;
  • 允许使用实验性的装饰器(decorators);
  • 生成descriptor元数据;
  • 支持解析json文件;
  • 允许不声明的变量为任何类型;
  • 允许不声明this为any类型;
  • 引用的库为DOM和ESNext。

  • 安装常用模块:运行以下命令安装常用的依赖项,包括vue-router、vuex、axios、lodash和dayjs。

npm install vue-router vuex axios lodash dayjs --save-dev

至此,我们已经完成了一个基础的vite+vue3+ts规范项目搭建。

示例一:使用VueRouter

在安装完vue-router后,在main.ts文件中进行初始化:

// main.ts

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

createApp(App).use(router).mount('#app')

可以看到,这里我们使用了createApp创建Vue 3的实例,并用use方法将VueRouter插件引入,最后用mount方法挂载Vue实例。

在router/index.ts文件中,我们可以初始化VueRouter:

// router/index.ts

import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'

const routes: RouteRecordRaw[] = [
    {
        path: '/',
        name: 'Home',
        component: () => import('@/views/Home.vue')
    },
    {
        path: '/about',
        name: 'About',
        component: () => import('@/views/About.vue')
    }
]

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

export default router

这里创建了两个路由:'/'和'/about',分别对应Home和About组件。

示例二:使用Vuex

在安装完vuex后,在main.ts文件中进行初始化:

// main.ts

import { createApp } from 'vue'
import App from './App.vue'
import store from './store'

createApp(App).use(store).mount('#app')

可以看到,这里我们使用了createApp创建Vue 3的实例,并用use方法将Vuex插件引入,最后用mount方法挂载Vue实例。

在store/index.ts文件中,我们可以初始化Vuex store:

// store/index.ts

import { createStore } from 'vuex'

interface RootState {
    count: number
}

const store = createStore<RootState>({
    state: {
        count: 0
    },
    mutations: {
        increment (state) {
            state.count++
        }
    }
})

export default store

这里创建了一个state对象,其中包含一个状态变量count和一个mutation——increment,用于对count进行加1的操作。

以上为基础的搭建过程和两个示例的使用,另外,在实际的开发过程中,还需要考虑其他的方面,比如代码分割、性能优化、压缩等问题,在实际中需要针对不同的情况和项目进行配置和优化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:从零搭建一个vite+vue3+ts规范基础项目(搭建过程问题小结) - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • CSS实现章节添加自增序号的方法

    以下是实现CSS添加章节自增序号的攻略: 方案概述 在CSS中,我们可以使用counter来实现自增序号。counter是CSS中的一个计数器,通过使用counter()函数引用它来自动生成序号。 定义计数器 我们需要先定义一个计数器,然后使用content属性和counter()函数将计数器的值插入到需要添加序号的元素中。计数器可以通过counter-re…

    css 2023年6月10日
    00
  • js与css实现弹出层覆盖整个页面的方法

    JS和CSS实现弹出层覆盖整个页面的方法主要有两种,分别是使用绝对定位和fixed定位。 使用绝对定位实现弹出层覆盖整个页面 在HTML文件中创建一个div元素,用于存放弹出层内容: <div id="overlay"> <div id="popup"> <h2>弹出层标题</…

    css 2023年6月10日
    00
  • css中默认中文字体font-family列表

    CSS中默认中文字体font-family列表是CSS规范中为了在没有指定字体的情况下,浏览器能够默认展示合适的中文字体,使中文网页具有较好的可读性。常见的中文字体font-family列表如下: font-family: SimSun, Songti SC, Microsoft Yahei, PingFang SC, Helvetica Neue, ser…

    css 2023年6月9日
    00
  • 标记语言——清单

    标记语言——清单 清单是一种在标记语言中常用的元素,可以让你以列表的形式,更好地呈现信息。本文将详细讲解如何使用标记语言来创建清单。 有序列表 有序列表即为按照一定顺序排列的列表,通常用数字表示顺序。语法如下: 1. 第一项 2. 第二项 3. 第三项 其中数字后面必须加上一个英文句点“.”,并且数字之后要加上一个空格才能产生正确的效果。示例如下: 苹果 香…

    css 2023年6月10日
    00
  • css让页脚保持在底部位置的四种方案

    下面我将详细讲解“CSS让页脚保持在底部位置的四种方案”的完整攻略。 一、利用定位方式 通过给页脚使用绝对定位和相对定位的方式实现让页脚保持在底部位置。 代码示例: html, body { height: 100%; margin: 0; padding: 0; } .wrapper { min-height: 100%; position: relati…

    css 2023年6月10日
    00
  • 驯服CSS选择器

    驯服CSS选择器攻略 CSS选择器是Web开发中一个非常重要的技能,可以用来定位页面中的HTML元素并应用样式。随着Web技术的发展和新的CSS选择器的出现,选择器的数量也越来越多,学习和掌握它们变得有些困难。本文将介绍如何通过以下步骤来驯服CSS选择器: 步骤一:了解基本选择器 要掌握CSS选择器,首先要了解它们的分类和特点。CSS选择器可以分为基本选择器…

    css 2023年6月9日
    00
  • html页面引入vue组件之http-vue-loader.js解读

    下面我来详细讲解“HTML页面引入Vue组件之http-vue-loader.js解读”的完整攻略。 什么是http-vue-loader.js http-vue-loader.js是一个Vue单文件组件加载器,可以让我们在普通的HTML页面中使用Vue单文件组件。Vue.js是一个类似于AngularJS的轻型JavaScript框架,有着响应式的数据绑定…

    css 2023年6月9日
    00
  • 详解PNG图片

    详解PNG图片 什么是PNG图片 PNG (Portable Network Graphics) 是可移植网络图形格式,是一种无损压缩的图像格式,专为在网络上使用而设计。它支持透明和半透明效果,以及更广泛的色彩范围和更高的精度。在Web开发中,PNG图片通常用于图标、徽标等需要透明效果的场合。 PNG图片的优点和缺点 优点 无损压缩,保证图像质量 支持透明和…

    css 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部