美文网首页收藏让前端飞一起来看vue3
【Vue3+Vite+TS】1.0 项目搭建

【Vue3+Vite+TS】1.0 项目搭建

作者: bobokaka | 来源:发表于2021-12-19 12:12 被阅读0次

搭建vite项目的命令。

npm -v

我的目前是6.14.15,升级一下:

npm install -g npm

目前是8.3.0

新建vite项目命令行:

npm init vite@latest vue3-element-ui-baseline -- --template vue-ts
image.png
需要安装以下软件包:

创造-vite@latest

可以继续吗?(y)

输入y即可。
安装完毕:


image.png

用vscode打开:

运行node初始化:

npm i

安装完成:


image.png

vite项目默认端口3000,修改方式如下:

    server: {
        port: 8080,
    },

修改vite.config.ts

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
    plugins: [vue()],
    server: {
        port: 8080,
    },
})

启动命令:

npm run dev
image.png
image.png

安装路由和element-plus:

 npm i -S vue-router@next element-plus

安装完成:


image.png
image.png

新建src\router\index.ts


image.png
TS还需要引入RouteRecordRaw,路由的泛型。
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'

新建src\views\Home\index.ts

<template>
    <div>Home</div>
</template>
<script lang="ts" setup>

</script>

<style lang="scss" scoped></style>

修改src\router\index.ts

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

import Home from '../views/Home/index.vue'

const routes: RouteRecordRaw[] = [
    {
        path: '/',
        component: Home,
    },
]

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

修改main.ts

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

const app = createApp(App)

app.use(router)

app.mount('#app')

修改src\App.vue

<template>
    <router-view></router-view>
</template>
<style lang="scss"></style>

运行项目:


image.png

引用element-ui,去官网抄:


image.png
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import router from './router/index'
import App from './App.vue'

const app = createApp(App)

app.use(router)
app.use(ElementPlus)
app.mount('#app')

修改src\views\Home\index.vue

<template>
    <div><el-button type="primary">首页</el-button></div>
</template>
<script lang="ts" setup>

</script>

<style lang="scss" scoped></style>

image.png

因为我们要用到sass(全新版本叫scss),需要安装一下sass

npm i -D sass sass-loader

安装完成:


image.png

修改src\App.vue

<template>
    <router-view></router-view>
</template>
<style lang="scss">
* {
    margin: 0;
    padding: 0;
}
</style>
image.png

element-plus版本将图标单独打包,需要单独引入
):

npm install @element-plus/icons-vue

修改src\main.ts

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

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as Icons from '@element-plus/icons-vue'

const app = createApp(App)

for (let i in Icons) {
  console.log(i)
  
}

app.use(router)
app.use(ElementPlus)
app.mount('#app')
image.png

可以看到打印了很多对象名称。

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

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as Icons from '@element-plus/icons-vue'

const app = createApp(App)

for (let i in Icons) {
    console.log(`i:`, i)
    console.log('Icons[i]', (Icons as any)[i])
}

app.use(router)
app.use(ElementPlus)
app.mount('#app')

image.png

新建src\utils\index.ts

//将驼峰命名转换为横杠连接
export const toLine = (value: String) => {
    return value.replace(/(A-Z)g/, '-$1').toLocaleLowerCase()
}

修改src\main.ts

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

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as Icons from '@element-plus/icons-vue'
import { toLine } from './utils'
const app = createApp(App)

//全局组件注册,牺牲一些性能,但方便使用
//封装成el-icon-xxx
for (let i in Icons) {
    // console.log(`i:`, i)
    // console.log('Icons[i]', (Icons as any)[i])
    app.component(`el-icon-${toLine(i)}`, (Icons as any)[i])
}

app.use(router)
app.use(ElementPlus)
app.mount('#app')

使用,修改src\App.vue

<template>
    <div>
        <el-button type="primary">首页</el-button>
        <el-icon-edit style="width: 1em; height: 1em; margin-right: 8px" />
    </div>
</template>
<script lang="ts" setup>
</script>

<style lang="scss" scoped></style>

image.png

为了更方便使用,可以优化如下:
修改src\App.vue

<template>
    <router-view></router-view>
</template>
<style lang="scss">
* {
    margin: 0;
    padding: 0;
}
svg {
    width: 1em;
    height: 1em;
}
</style>

这样src\views\Home\index.vue可以调整为:

<template>
    <div>
        <el-button type="primary">首页</el-button>
        <el-icon-edit />
    </div>
</template>
<script lang="ts" setup>
</script>

<style lang="scss" scoped></style>

相关文章

  • 【Vue3+Vite+TS】1.0 项目搭建

    搭建vite项目的命令。 我的目前是6.14.15,升级一下: 目前是8.3.0 新建vite项目命令行: 输入y...

  • vue3+vite+ts 搭建项目

    1、vite项目初始化 我们使用vite来初始化项目,记得初始化的过程选择vue-ts哟,这样我们就能引入ts,后...

  • webpack简单尝试

    手动搭建webpack#1.0 项目代码: https://github.com/yanghanbin-sz/w...

  • Nest.js 项目搭建

    Nest.js 项目搭建 RoyLin1996 关注 1.0 2018.07.30 17:27* 字数 395 阅...

  • vue 3.0 资料整理

    1.0 vue3.0项目搭建:https://www.cnblogs.com/yf-html/p/12753540...

  • 天赋树

    ├─Linux│ ├─0.0_Linux环境搭建│ │ ├─0.0.1_Ubuntu环境搭建│ ├─1.0...

  • 8 项目统一相同依赖/插件的版本号

    1 为什么要统一依赖与插件 项目依赖结构如下 项目A依赖项目B-1.0与项目C-1.0,项目B-1.0依赖项目C-...

  • vite打包报警包过大

    在vue3+vite+ts项目中,打包的时候遇到了一个告警,提示说包过大。 解决方案我们就按提示的来解决 1、调整...

  • swift学习及开发相关资料

    Swift 开源项目精选-v1.0- Swift 开源项目精选-v1.0。 Swift开源项目精选- Swift开...

  • SourceTree 常见问题

    ! [rejected] 1.0 -> 1.0 (already exists) 进入项目根目录,终...

网友评论

    本文标题:【Vue3+Vite+TS】1.0 项目搭建

    本文链接:https://www.haomeiwen.com/subject/piznfrtx.html