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

首先需要明确,要搭建一个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中的line-height的使用

    深入理解CSS中的line-height的使用 在CSS中,line-height是一个非常重要的属性,它用于设置行高。本攻略将详细讲解line-height的使用,包括基本原理、使用方法和示例说明。 1. 基本原理 line-height属性用于设置行高,它可以接受以下值: normal:默认值,使用浏览器的默认行高。 数字:设置行高为字体大小的倍数。 长…

    css 2023年5月18日
    00
  • jQuery过滤选择器用法分析

    jQuery过滤选择器用法分析 jQuery是一款优秀的JavaScript框架,它提供了许多强大而又方便的功能来操作文档。其中,过滤选择器作为一种常用的功能,可以帮助我们根据特定的条件来选取元素,以达到更加方便的操作。 基本用法 使用jQuery选择器的基本语法是: $(selector).filter(expression) 其中,selector是需要…

    css 2023年6月10日
    00
  • CSS下背景属性background的使用方法

    下面是详细讲解“CSS下背景属性background的使用方法”的完整攻略: 一、介绍 在CSS中,可以使用background属性设置元素的背景,这个属性可以设置与背景相关的绝大多数属性,如颜色、图片、重复性、定位等等。 具体地,background属性有以下几个可能的取值: background-color: 设置背景颜色 background-imag…

    css 2023年6月9日
    00
  • 关于table的width:100%和margin导致溢出

    关于table的width:100%和margin导致溢出的问题通常是因为没有正确理解table默认的box-sizing属性造成的,下面是完整攻略。 了解table的默认box-sizing属性 table 是一个特殊的 HTML 标签,它默认的 box-sizing 属性是 border-box,而非一般的 content-box,这意味着 table …

    css 2023年6月10日
    00
  • css实现三栏布局的几种方法及优缺点

    下面是详细讲解“css实现三栏布局的几种方法及优缺点”的完整攻略。 一、三栏布局 三栏布局指的是一个页面中分别拥有左侧栏、中间栏和右侧栏,其中中间栏宽度固定,左右两栏宽度自适应,三栏均处于同一行。 二、实现方式 1. 使用浮动 使用浮动可以很方便地实现三栏布局,主要是通过给左右两栏设置宽度和浮动属性,然后设置中间栏的宽度和与左右两栏的距离即可。 <di…

    css 2023年6月10日
    00
  • 浅谈移动端的自适应布局问题(响应式、rem/em、Js动态)

    移动端自适应布局问题是在不同屏幕尺寸的移动设备上保持网页布局始终合适的问题。常见的解决方案包括响应式、rem/em以及Js动态。 响应式布局 响应式布局是指适配不同宽度的屏幕,使用CSS3的媒体查询(Media Query)来给不同尺寸的设备设置不同的样式。通常响应式布局可以分成三份(移动端、平板、PC端)设置不同的CSS样式。 以两列布局为例,代码如下: …

    css 2023年6月9日
    00
  • CSS3 伪类选择器 nth-child()说明

    CSS3 的伪类选择器之一是nth-child(),其作用是筛选出一组兄弟元素中,特定位置的那一个。 语法说明 对某个元素所进行的选取规则为: :nth-child([<an+b>]) 解释如下: n表示从等差数列的第一个数开始,共有多少个数,从0开始计算。 an+b表示等差数列的公式,其中a和b为自然数,且满足条件0 ≤ b < a。 用…

    css 2023年6月9日
    00
  • Vue中transition标签的基本使用教程

    下面我来为您讲解一下Vue中transition标签的基本使用教程。 什么是Vue中的transition标签 在Vue中,transition标签是用于实现CSS过渡效果的标签,可以在元素在插入、更新或移除时自动应用过渡效果。 基本用法 下面是Vue中transition标签的基本模板: <transition name="fade&quo…

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