从零开始写一套广告组件【一】搭建基础框架并配置UI组件库

简介: 其实这个从零有点歧义,因为本质上是要基于`tdesign-vue-next`来进行二次封装为一套广告UI组件库,现在让我们在一起快乐的搭建自己的广告UI库之前,先对以下内容做出共识:

前言

其实这个从零有点歧义,因为本质上是要基于tdesign-vue-next来进行二次封装为一套广告UI组件库,现在让我们在一起快乐的搭建自己的广告UI库之前,先对以下内容做出共识:

1. 复制命令的时候请不要携带上`$`符号
2. 请保证设备上已经安装了`Node.js`,推荐使用 `nvm` 进行管理

内容

在这一章节里,我们的内容主要参考以下两个文档,当你遇到问题的时候,建议先查看文档去进行解决;

vuehttps://cn.vuejs.org/guide/quick-start.html

tdesign-vue-nexthttps://tdesign.tencent.com/vue-next/overview

创建项目

首先让我们使用 vue 的脚手架来搭建一个全新的项目,这里我使用pnpm作为包管理的工具,如果你使用其他的工具,请访问vue的文档进行查看;

$ pnpm create vue@latest

在执行上面的命令后,会有接下来的一段交互,可以按着自己的需求进行配置,这里我的配置如下:

$ pnpm create vue@latest          
.../192059603b6-365f                     | Progress: resolved 1, reused 0, downl.../192059603b6-365f                     |   +1 +
.../192059603b6-365f                     | Progress: resolved 1, reused 0, downl.../192059603b6-365f                     | Progress: resolved 1, reused 1, downloaded 0, added 1, done

Vue.js - The Progressive JavaScript Framework

✔ 請輸入專案名稱: … eaui
✔ 是否使用 TypeScript? … 否 / 是
✔ 是否啟用 JSX 支援? … 否 / 是
✔ 是否引入 Vue Router 進行單頁應用程式開發? … 否 / 是
✔ 是否引入 Pinia 用於狀態管理? … 否 / 是
✔ 是否引入 Vitest 用於單元測試 … 否 / 是
✔ 是否要引入一款端對端(End to End)測試工具? › Playwright
✔ 是否引入 ESLint 用於程式碼品質檢測? … 否 / 是
✔ 是否引入 Prettier 用於程式碼格式化? … 否 / 是
✔ 是否引入 Vue DevTools 7 擴充元件以協助偵錯?(試驗性功能) … 否 / 是

正在建置專案 /Users/wangyang/Documents/eaui...

專案建置完成,可執行以下命令:

  cd eaui
  pnpm install
  pnpm format
  pnpm dev

完美,等待命令执行完成,现在我们已经成功创建了一个Vue3的项目,不过离最后的运行还有点距离,现在让我们来执行上述的命令:

$ pnpm install
WARN  5 deprecated subdependencies found: @humanwhocodes/config-array@0.13.0, @humanwhocodes/object-schema@2.0.3, glob@7.2.3, inflight@1.0.6, rimraf@3.0.2
Packages: +431
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 468, reused 396, downloaded 35, added 431, done
node_modules/.pnpm/vue-demi@0.14.10_vue@3.5.6_typescript@5.4.5_/node_modules/vue-demi: Running postinstall script, done in 74ms

dependencies:
+ pinia 2.2.2
+ vue 3.5.6

devDependencies:
+ @playwright/test 1.47.1
+ @rushstack/eslint-patch 1.10.4
+ @tsconfig/node20 20.1.4
+ @types/jsdom 21.1.7
+ @types/node 20.16.5 (22.5.5 is available)
+ @vitejs/plugin-vue 5.1.4
+ @vitejs/plugin-vue-jsx 4.0.1
+ @vue/eslint-config-prettier 9.0.0
+ @vue/eslint-config-typescript 13.0.0
+ @vue/test-utils 2.4.6
+ @vue/tsconfig 0.5.1
+ eslint 8.57.1 (9.10.0 is available)
+ eslint-plugin-playwright 1.6.2
+ eslint-plugin-vue 9.28.0
+ jsdom 24.1.3 (25.0.0 is available)
+ npm-run-all2 6.2.3
+ prettier 3.3.3
+ typescript 5.4.5 (5.6.2 is available)
+ vite 5.4.6
+ vite-plugin-vue-devtools 7.4.5
+ vitest 1.6.0 (2.1.1 is available)
+ vue-tsc 2.1.6

Done in 5.6s

$ pnpm format
> eaui@0.0.0 format /Users/wangyang/Documents/eaui
> prettier --write src/

src/App.vue 58ms (unchanged)
src/assets/base.css 7ms (unchanged)
src/assets/main.css 2ms (unchanged)
src/components/__tests__/HelloWorld.spec.ts 9ms (unchanged)
src/components/HelloWorld.vue 23ms (unchanged)
src/components/icons/IconCommunity.vue 2ms (unchanged)
src/components/icons/IconDocumentation.vue 1ms (unchanged)
src/components/icons/IconEcosystem.vue 2ms (unchanged)
src/components/icons/IconSupport.vue 1ms (unchanged)
src/components/icons/IconTooling.vue 2ms (unchanged)
src/components/TheWelcome.vue 7ms (unchanged)
src/components/WelcomeItem.vue 5ms (unchanged)
src/main.ts 3ms (unchanged)
src/stores/counter.ts 3ms (unchanged)

$ pnpm dev
> eaui@0.0.0 dev /Users/wangyang/Documents/eaui
> vite


  VITE v5.4.6  ready in 862 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: use --host to expose
  ➜  Vue DevTools: Open http://localhost:5173/__devtools__/ as a separate window
  ➜  Vue DevTools: Press Option(⌥)+Shift(⇧)+D in App to toggle the Vue DevTools

  ➜  press h + enter to show help

很好,现在让我们 Cmd+单击 访问链接,这时候不出意外的话,您将会看到一个告诉你项目创建成功的页面,界面如下图所示,如果你现在看到的和下图一样,那么恭喜你,成功创建了一个基于 vite+vue3 的项目。

image.png

配置UI库

在基础的框架安装好之后,现在让我们来一起配置下需要的UI组件库吧,很简单,让我们跟着下面的步骤来一起操作。

安装

现在让我们来一起安装 tdesign-vue-next

$ pnpm i tdesign-vue-next
WARN  5 deprecated subdependencies found: @humanwhocodes/config-array@0.13.0, @humanwhocodes/object-schema@2.0.3, glob@7.2.3, inflight@1.0.6, rimraf@3.0.2
Already up to date
Progress: resolved 481, reused 444, downloaded 0, added 0, done
Done in 639ms

配置

现在让我们来配置下插件 unplugin-vue-componentsunplugin-auto-import ,通过插件实现按需引用使用。

$ pnpm add -D unplugin-vue-components unplugin-auto-import 
 WARN  5 deprecated subdependencies found: @humanwhocodes/config-array@0.13.0, @humanwhocodes/object-schema@2.0.3, glob@7.2.3, inflight@1.0.6, rimraf@3.0.2
Packages: +13
+++++++++++++
Progress: resolved 494, reused 453, downloaded 4, added 13, done

devDependencies:
+ unplugin-auto-import 0.18.3
+ unplugin-vue-components 0.27.4

Done in 1.1s
vite

因为我们使用的是vite所以这里基于直接安装文档中的说明,来配置即可;

import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import {
    TDesignResolver } from 'unplugin-vue-components/resolvers';
export default {
   
  plugins: [
    // ...
    AutoImport({
   
      resolvers: [TDesignResolver({
   
        library: 'vue-next'
      })],
    }),
    Components({
   
      resolvers: [TDesignResolver({
   
        library: 'vue-next'
      })],
    }),
  ],
};
main.ts
import './assets/main.css'

import {
    createApp } from 'vue'
import {
    createPinia } from 'pinia'
import App from './App.vue'

// 引入组件库的少量全局样式变量
import 'tdesign-vue-next/es/style/index.css';

const app = createApp(App)

app.use(createPinia())

app.mount('#app')
验证

现在让我们在 App.vue 中,尝试下使用 Button 的UI组件,看是否能正常展示。

<script setup lang="ts">
import HelloWorld from './components/HelloWorld.vue'
import TheWelcome from './components/TheWelcome.vue'
</script>

<template>
  <header>
    <img alt="Vue logo" class="logo" src="./assets/logo.svg" width="125" height="125" />

    <div class="wrapper">
      <HelloWorld msg="You did it!" />
    </div>
  </header>

  <main>
    <TheWelcome />
  </main>
  <!-- 验证组件导入 -->
  <t-button>按钮</t-button>
</template>

<style scoped>
header {
  line-height: 1.5;
}

.logo {
  display: block;
  margin: 0 auto 2rem;
}

@media (min-width: 1024px) {
  header {
    display: flex;
    place-items: center;
    padding-right: calc(var(--section-gap) / 2);
  }

  .logo {
    margin: 0 2rem 0 0;
  }

  header .wrapper {
    display: flex;
    place-items: flex-start;
    flex-wrap: wrap;
  }
}
</style>

image.png

总结

好了,在这一章我们学会了如何使用vue的脚手架创建项目,并通过插件 unplugin-vue-componentsunplugin-auto-import 来配置 tdesign-vue-next 的按需引入,在下一个章节,我们将会对项目进行一些规则的配置和约束;

目录
相关文章
|
11天前
|
存储 JavaScript 开发者
探索鸿蒙新世界:ArkUI框架实战指南,解锁HarmonyOS应用UI设计的无限可能!
【10月更文挑战第19天】ArkUI框架是华为鸿蒙系统中用于开发用户界面的核心工具,支持ArkTS和eTS两种开发语言。本文介绍了ArkUI的基本概念、组件使用、布局管理和状态管理,通过示例代码帮助开发者轻松构建美观、高效的跨设备UI。
41 3
|
2天前
|
自然语言处理 开发者
「Mac畅玩鸿蒙与硬件11」鸿蒙 UI 组件篇1 - Text 和 Button 组件详解
本篇将详细介绍鸿蒙应用开发中的 Text 和 Button 组件。通过本篇内容,你将学习如何使用 Text 组件显示文本、格式化文本样式,以及如何使用 Button 组件处理点击事件并自定义样式。掌握这些基本组件的用法将为后续的 UI 开发奠定基础。
19 4
「Mac畅玩鸿蒙与硬件11」鸿蒙 UI 组件篇1 - Text 和 Button 组件详解
|
4天前
|
前端开发 JavaScript
Bootstrap Web 前端 UI 框架
Bootstrap 是快速开发 Web 应用程序的前端工具包。
16 3
|
9天前
|
开发框架 人工智能 小程序
小程序常见的 UI 框架
【10月更文挑战第17天】小程序 UI 框架为开发者提供了便捷的工具和资源,帮助他们快速构建高质量的小程序界面。在选择框架时,需要综合考虑各种因素,以找到最适合项目的解决方案。随着技术的不断进步,UI 框架也将不断发展和创新,为小程序开发带来更多的便利和可能性。
18 2
|
2月前
|
小程序 JavaScript 前端开发
小程序常见的UI框架
小程序常见的UI框架
280 60
|
18天前
|
缓存 测试技术 C#
使用Radzen Blazor组件库开发的基于ABP框架炫酷UI主题
【10月更文挑战第20天】本文介绍了使用 Radzen Blazor 组件库开发基于 ABP 框架的炫酷 UI 主题的步骤。从准备工作、引入组件库、设计主题、集成到 ABP 框架,再到优化和调试,详细讲解了每个环节的关键点和注意事项。通过这些步骤,你可以打造出高性能、高颜值的应用程序界面。
|
2月前
|
JavaScript
Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】
这篇文章介绍了如何使用Ant Design Vue UI框架创建一个简单的后台管理模板,包括创建Vue项目、安装和使用ant-design-vue、以及编写后台管理通用页面的代码和样式。
Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】
|
24天前
|
前端开发 开发者 UED
UI 框架:nav-ui&uni-ui&vant
本文档介绍了`nav-ui`、`uni-ui`和`vant`三个UI库的基本使用方法,包括图标、表格和树的使用示例,以及如何在项目中安装和配置这些UI组件。对于`nav-ui`,详细说明了图标组件的安装与使用,包括本地图标和第三方图标库的集成方式。`uni-ui`部分则重点讲解了CSS的使用方法。最后,`vant`部分提供了从项目创建到组件安装的具体步骤,以及如何将下载的组件正确地集成到项目中。
|
24天前
|
前端开发 JavaScript 开发者
UI 框架:element-ui(二)
在当今快速发展的前端开发领域,用户界面的设计和交互体验日益成为软件成功的关键因素之一。Element UI,作为一款基于Vue.js的组件库,以其精美的界面和丰富的功能受到了广泛的关注与应用。它为开发者提供了一整套高质量的组件,帮助他们快速构建具有现代感的应用程序。 Element UI不仅注重美观的设计,还提供了良好的文档支持和社区活跃度,使得开发者能够轻松上手并解决实施过程中的各种问题。在这篇文章中,我们将深入探讨Element UI的基本特点、安装步骤,以及如何利用其强大的组件系统高效地构建用户友好的界面。无论您是初学者还是有经验的开发者,这篇文章都将为您开辟一条通向更高效开发的道路。
|
18天前
|
JavaScript 索引
Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案
Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案
80 0