从零搭建一个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 命名规范可以节约 Debug 时间

    好的 CSS 命名规范可以让团队开发更加协调高效,并且在后期维护和扩展时能够得到更好的体验,从而减少 Debug 时间。下面是一些制定好的 CSS 命名规范,值得团队借鉴和使用: 1. BEM 命名规范 BEM 命名规范是一种结构化的、可持续的 CSS 命名方法,它的名字来源于块(Block)、元素(Element)、修饰符(Modifier)的首字母缩写。…

    css 2023年6月11日
    00
  • IE7、IE8、ff下的margin-top问题 折叠margin

    简述 在IE7、IE8、ff等旧版本浏览器中,margin-top属性会存在所谓“折叠margin”的问题,即在某些情况下,相邻的两个元素的margin-top会“折叠”为一条,导致元素间的间距不如预期。 解决方案 1.添加padding-top 给父元素添加一个padding-top的属性值,可以有效避免margin-top的折叠问题。这是由于元素的pad…

    css 2023年6月10日
    00
  • 解决element-ui的table表格控件表头与内容列不对齐问题

    下面是“解决element-ui的table表格控件表头与内容列不对齐问题”的完整攻略: 问题描述 在使用element-ui的table表格控件时,有时会出现表头与内容列不对齐的问题,即表头的列宽和内容列的列宽不一致,导致表格样式错乱。这种情况通常出现在表格的列宽设置不合理或者有合并单元格的情况下,需要进行修复。 解决方法 1. 设置固定列宽 可以通过设置…

    css 2023年6月10日
    00
  • mpvue将vue项目转换为小程序

    将Vue项目转换为微信小程序有两种方式: 使用mpvue框架 mpvue是一款基于Vue的小程序开发框架,它提供了一套完整的Vue.js语法支持,并扩展了微信小程序原生的API和组件。下面是使用mpvue将Vue项目转换为微信小程序的步骤: (1)安装mpvue-cli工具 npm install –g mpvue-cli (2)创建mpvue项目 mpvu…

    css 2023年6月9日
    00
  • 详解如何使用image-set适配移动端高清屏图片

    下面我将详细讲解如何使用image-set适配移动端高清屏图片。 什么是image-set image-set是CSS3提供的一个函数,能够根据屏幕分辨率的不同,自动选择最合适的图片。这里的图片可以是不同分辨率的同一张图片,也可以是不同大小但内容相近的多张图片。 image-set的语法 image-set语法如下: background-image: im…

    css 2023年6月9日
    00
  • 纯CSS实现波浪移动效果的示例

    让我来为你详细讲解如何使用纯CSS实现波浪移动效果。 步骤一:HTML结构 首先,我们需要创建HTML结构。本例中,我们需要一个容器元素和两个波浪元素。代码示例如下: <div class="wave-container"> <div class="wave"></div> <…

    css 2023年6月10日
    00
  • jquery实现树形菜单完整代码

    首先介绍一下jquery实现树形菜单的原理和步骤: 在html中准备好容器,用于放置树形菜单; 通过ajax请求或静态数据,获取树形结构的数据,可以是数组形式或json格式; 遍历数据,根据层级关系,生成菜单的html代码,包括ul、li等元素; 监听菜单项的点击事件,收缩/展开子菜单,并设置样式; 将生成的菜单html代码插入到容器中。 下面展示完整的jq…

    css 2023年6月9日
    00
  • vue.js 实现点击div标签时改变样式

    下面我将详细介绍如何在vue.js中实现点击div标签时改变样式的完整攻略。 1、为需要点击的div元素绑定事件 首先,我们需要为需要点击的div元素绑定事件,通过在该元素上使用@click事件,如下所示: <template> <div class="click-div" @click="changeStyl…

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