vite + vue3 + ts 移动端开箱即用现代开发模板

news2024/12/23 4:12:11
中文 | English

SouthernWind https://blog.csdn.net/nanchen_J?type=blog

sw-template

vite + vue3 + ts 移动端开箱即用现代开发模板



特点 🐶

  1. Vite 的
  2. Vue3 的
  3. 文件路由
  4. 布局系统
  5. Mock 后续支持
  6. Api 自动引入
  7. 组件自动引入
  8. VueUse 支持
  9. TypeScript 的
  10. Tailwind css 的
  11. 暗黑模式待开发
  12. pinia 状态管理
  13. pnpm 包管理器
  14. 路径别名支持
  15. 环境变量配置支持
  16. defineOptions 支持
  17. defineModel 支持
  18. 开箱即用的 axios 请求封装
  19. 支持ESlint,Prettier


克隆模板 🦕

  1. Github
git clone
  1. Gitee
git clone git@gitee.com:dishait/tov-template.git


node 版本推荐 🐎

因为该模板完全面向现代,所以推荐使用 node 当前的长期维护版本 v20


使用 🐂

该模板仅支持 pnpm 包管理器 👉 安装教程

  1. 安装依赖
pnpm install
  1. 开发
pnpm dev
  1. 预览
pnpm preview

# 开启 host
pnpm preview:host

# 自动打开浏览器
pnpm preview:open
  1. 打包
pnpm build
  1. 依赖更新
# 依赖版本更新
pnpm deps:fresh
# 以上命令仅对包信息 package.json 进行写入,需要重新执行包安装命令
pnpm i
  1. 代码规范校验
pnpm lint

# 校验时修复
pnpm lint:fix


动机 😲

为什么要做这个 模板 呢?

  1. 为下次开发节省浪费在配置上的时间
  2. 结合主流插件整合现代开发架构,提高开发效率


使用场景 ⚖️

什么时候你应该用?

  1. 不想浪费时间在项目配置上
  2. 希望尝试用更现代的方式开发 web 应用,提高开发效率


组织 🦔

欢迎关注 Southern Wind

  • 官网
  • Gitee
  • Github
  • CSDN
  • 掘金


详情 🐳

1. Vite 的

该模板采用 vite 作为构建工具,你可以在根目录下的
vite.config.ts 对项目的构建进行配置。

对于众多主流插件的引入和繁杂配置已经整合到根目录下的预设 presets
中,大多数情况下你是不需要重新对它们进行配置的。


2. Vue3 的

基于Vue3框架开发当前版本为 3.4.29
更新到最新版请使用以下命令

pnpm install vue@latest

3. 文件路由

目录结构即路由。

eg:

  • src/views/index.vue => /
  • src/views/[...notFound].vue => 404 路由

4. 布局系统

默认布局

App.vue 将作为默认布局。

<!-- App.vue -->
<template>
  我是默认布局
  <router-view />
  <!-- 页面视图出口 -->
</template>

此时 src/views/index.vue

<!-- src/views/index.vue -->
<template>
  <div>我是首页</div>
</template>

路由到 /时,页面将渲染

我是默认布局 我是首页

此时 src/views/about.vue

<!-- src/views/about.vue -->
<template>
  <div>我是关于页</div>
</template>

路由到 /about 时,页面将渲染

我是默认布局 我是关于页

非默认布局

随便创建一个 src/layouts/custom.vue

<!-- src/layouts/custom.vue -->
<template>
  我是非默认布局custom
  <router-view />
  <!-- 页面视图出口 -->
</template>

此时 src/views/index.vue

<!-- src/views/index.vue -->
<template>
  <div>我是首页</div>
</template>

<!-- 添加自定义块 👇 -->
<route lang="json"> { "meta": { "layout": "custom" } } </route>

此时路由到 /, 页面将渲染

我是非默认布局custom 我是首页

具体可见 👉
vite-plugin-vue-meta-layouts


5. Mock 后续支持

6. Api 自动引入

原本 vueapi 需要自行 import

import { computed, ref } from 'vue'
const count = ref(0)
const doubled = computed(() => count.value * 2)

现在可以直接使用。

const count = ref(0)
const doubled = computed(() => count.value * 2)

而且上边的 api 是按需自动引入的。

目前模板支持自动引入 api 的库列表 👉

  • vue
  • pinia
  • vue-router
  • @vueuse/core

只要确保已经安装依赖即可,具体可见 👉
vite-auto-import-resolvers,

  1. src/api 也是自动按需导入,与上述类似

具体可见 👉
unplugin-auto-import。


7. 组件自动引入

原来需要 import

<!-- src/views/index.vue -->
<script setup lang="ts">
  import Hello from '../components/Hello.vue'
</script>

<template>
  <Hello />
</template>

现在只要在 src/components 下定义的组件都将会按需引入,即 import 是不需要的。

<!-- src/views/index.vue -->
<template>
  <Hello />
</template>

8. VueUse 支持

Vue 组合式工具集
基础 Vue 组合式工具的集合

9. TypeScript 的

支持TypeScript


10. Tailwind css 的

Tailwindcss 是一个开发中速度更快的 原子css 库。

直接在模板中用就行了,不需要配置。

<template>
  <div class="bg-red-500 text-white">我是红色背景的白色文本</div>
</template>

上述模板将渲染红色背景白色的字。

具体可见 👉 tailwindcss


11. 暗黑模式待完善

具体可见 👉 vue-dark-switch


12. pinia 状态管理

pinia 是下一代的状态管理库,比 vuex 更简单,ts 支持更好。

你可以在 src/stores 中进行状态的定义。

例如创建 src/stores/counter.ts 👇

// src/stores/counter.ts
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
  state() {
    return { count: 0 }
  },
  actions: {
    inc() {
      this.count++
    }
  }
})

定义完后在 setup 中直接使用即可

<!-- src/views/index.vue -->
<script setup lang="ts">
    const Counter = useCounterStore()
<script>

<template>
    <div @click="Counter.inc">{{Counter.count}}</div>
</template>

更多具体使用可见 👉 pinia


13. pnpm 包管理器

pnpm 是非常优秀的包管理器,更快、更节省空间、更合理。

具体可见 👉 pnpm


14. 路径别名支持

~ 或者 @ 路径将被导向项目的 src 目录,同时有更好的类型提示

<!-- src/views/index.vue -->
<script lang="ts" setup>
  import { useDarks } from '@/composables/dark'

  // 等价于
  // import { useDarks } from "../composables/dark"
</script>


15. 环境变量配置支持

根目录下的 .env 用来对项目进行环境变量配置。



16. defineOptions 支持

<script setup lang="ts">
  // 定义额外的 options
  defineOptions({
    name: 'Foo'
  })
</script>


17. [defineModel 支持] 3.4+ (https://cn.vuejs.org/api/sfc-script-setup.html#definemodel)

// 声明 "modelValue" prop,由父组件通过 v-model 使用
const model = defineModel()
// 或者:声明带选项的 "modelValue" prop
const model = defineModel({ type: String })

// 在被修改时,触发 "update:modelValue" 事件
model.value = 'hello'

// 声明 "count" prop,由父组件通过 v-model:count 使用
const count = defineModel('count')
// 或者:声明带选项的 "count" prop
const count = defineModel('count', { type: Number, default: 0 })

function inc() {
  // 在被修改时,触发 "update:count" 事件
  count.value++
}
// 子组件:
const model = defineModel({ default: 1 })

// 父组件
const myRef = ref()
<Child v-model="myRef"></Child>

更多详情请参考 👉defineModel()

18. 开箱即用的 axios 请求封装

二次封装,开箱即用



19. 支持ESlint,Prettier

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2130902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优化算法(二)—粒子群优化算法(附MATLAB程序)

粒子群优化算法&#xff08;Particle Swarm Optimization, PSO&#xff09;是一种基于群体智能的优化算法&#xff0c;由James Kennedy和Russ Eberhart于1995年提出。它模仿鸟群觅食的行为&#xff0c;利用一组“粒子”在搜索空间中进行探索&#xff0c;以寻找最优解。每个粒子…

AI大模型知识点大梳理_ai大模型知识学习,零基础入门到精通,收藏这一篇就够了

文章目录 AI大模型是什么AI大模型发展历程AI大模型的底层原理AI大模型解决的问题大模型的优点和不足影响个人观点 AI大模型是什么 AI大模型是指具有巨大参数量的深度学习模型&#xff0c;通常包含数十亿甚至数万亿个参数。这些模型可以通过学习大量的数据来提高预测能力&…

尝试解决ubuntu中安装应用时出现依赖不满足的问题

在ubuntu或者其他linux环境中安装应用时&#xff0c;我们有时候会遇到以来不满足的问题&#xff0c;这时候就会导致目标应用无法被安装&#xff0c;比如&#xff1a; 怎么办呢&#xff1f; 第一种方式&#xff1a; 首先&#xff0c;尝试更新软件库。 先后执行以下两个命令 sudo…

输电线路在线监测摄像头:规格(一)

输电线路在线监测摄像头&#xff1a;规格&#xff08;一&#xff09; 1、设备具备前视高清变焦镜头&#xff0c;后视日夜一体高清镜头&#xff0c;整机一体化设计&#xff0c;不拆分。 2、采用工业级高清摄像头&#xff0c;像素≥1600万&#xff0c;可按现场需求设置。 3、支持…

【机器学习】--- 生成对抗网络 (GANs)

生成对抗网络 (GANs) —— 机器学习中的一个热点 生成对抗网络&#xff08;GANs, Generative Adversarial Networks&#xff09;近年来在机器学习领域成为一个热点话题。自从Ian Goodfellow及其团队在2014年提出这一模型架构以来&#xff0c;GANs 在图像生成、数据增强、风格转…

duilib 直接可编译运行的 实例DEMO

陆陆续续花时间精力做了几个DEMO,VS2013以上,编译即可运行,资源样式都带着。如果学习使用,或类似需求的话,可以参考下,有需要的,可以私信联系。 目录 1、duiliib 基本控件使用示例 2、文件选择对话框 3、登录界面例子 4、各种消息框的示例 5、时间工具条示例 6、透…

Web大学生网页作业成品——在线购物商城网页设计与实现(HTML+CSS+JS)(4个页面)

&#x1f389;&#x1f389;&#x1f389; 常见网页设计作业题材有**汽车、环保、明星、文化、国家、抗疫、景点、人物、体育、植物、公益、图书、节日、游戏、商城、旅游、家乡、学校、电影、动漫、非遗、动物、个人、企业、美食、婚纱、其他**等网页设计题目, 可满足大学生网…

重塑在线软件开发新纪元:集成高效安全特性,深度解析与评估支持浏览器在线编程的系统架构设计

目录 案例 【题目】 【问题 1】(13 分) 【问题 2】(12 分) 【答案】 【问题 1】解析 【问题 2】解析 相关推荐 案例 阅读以下关于软件架构设计与评估的叙述&#xff0c;回答问题1和问题2。 【题目】 某公司拟开发一套在线软件开发系统&#xff0c;支持用户通过浏览器…

Qt_自定义信号

目录 1、自定义信号的规定 2、创建自定义信号 3、带参数的信号与槽 4、一个信号连接多个槽 5、信号与槽的断开 结语 前言&#xff1a; 虽然Qt已经内置了大量的信号&#xff0c;并且这些信号能够满足大部分的开发场景&#xff0c;但是Qt仍然允许开发者自定义信号&#…

【Unity精品插件】NGUI:UI设计传奇工具

&#x1f4c2; Unity 开发资源汇总 | 插件 | 模型 | 源码 &#x1f493; 欢迎访问 Unity 打怪升级大本营 在Unity3D的世界中&#xff0c;用户界面&#xff08;UI&#xff09;是玩家与游戏互动的重要桥梁。随着游戏和应用的复杂性不断增加&#xff0c;传统的UI解决方案已经难以满…

AgentRE:用智能体框架提升知识图谱构建效果,重点是开源!

发布时间&#xff1a;2024 年 09 月 13 日 Agent应用 AgentRE: An Agent-Based Framework for Navigating Complex Information Landscapes in Relation Extraction 在复杂场景中&#xff0c;关系抽取 (RE) 因关系类型多样和实体间关系模糊而挑战重重&#xff0c;影响了传统 “…

一种没有注释的语言

原文&#xff1a;Breck Yunits - 2024.09.05 JSON 是 PLDB&#xff08;A Programming Language Database&#xff09;中唯一不支持注释的流行语言。JSON 既不支持单行注释&#xff0c;也不支持多行注释。 JSON 最初是有注释的 Douglas Crockford 在 2012 年解释了他独特的设计…

稀有 Punk 10E 到手?「捡漏」的背后是一个已停止运营的 NFT 碎片化协议

撰文&#xff1a;Yangz&#xff0c;Techub News 今日凌晨&#xff0c;作为 24 个 Ape Punk 之一的 CryptoPunk #2386 以 10 ETH 的价格被 0x282 开头的地址购入。一时间&#xff0c;NFT 圈内尽是「羡慕」与「质疑」。 的确&#xff0c;即使是在如今尽显颓势的 NFT 市场&#xf…

(十三)、将一个 SpringCloud 微服务运行 以 jar 方式运行

文章目录 1、总体思路2、操作2.1、把 SpringCloud 打包为 jar生成 jar运行 jar 1、总体思路 把 SpringCloud 项目打包获得 jar &#xff0c;然后使用指定版本的jdk 运行 jar 2、操作 2.1、把 SpringCloud 打包为 jar 生成 jar 具体被打包的子 pom 文件声明为 jar 类型 <…

开源PHP免费家谱应用Webtrees简介

1. 介绍 Webtrees是一个开源的在线家谱管理系统&#xff0c;支持 GEDCOM 格式&#xff0c;允许用户协作管理家谱数据。它是免费的&#xff0c;并且功能强大。Webtrees有大量活跃用户参与的交流社区&#xff0c;在全世界约有6800个服务器。这是一个服务器应用&#xff0c;可以多…

抖音豆包大模型SFT-监督微调最佳实践

目录 一、SFT&#xff08;Supervised Finetune&#xff09;简介 二、SFT 的意义和时机 三、数据准备 3.1、数据格式 3.1.1、参考问答 3.1.2、角色扮演 3.1.3、文本分类 3.1.4、文案生成 3.2、数据量级 3.3、是否混入预置数据 3.4、如何扩充SFT数据 三、训练配置 3.…

Leetcode面试经典150题-349.两个数组的交集

题目比较简单&#xff0c;散散心吧 解法都在代码里&#xff0c;不懂就留言或者私信 class Solution {public int[] intersection(int[] nums1, int[] nums2) {/**先排个序 */Arrays.sort(nums1);Arrays.sort(nums2);int curIndex1 0;int curIndex2 0;/**先把数组的大小设置…

无线麦克风哪款好用,手机领夹麦克风哪个牌子好,麦克风推荐

随着短视频与直播行业的蓬勃发展&#xff0c;无线领夹麦克风市场迎来了前所未有的繁荣。品牌如罗德、大疆、西圣等麦克风品牌凭借卓越的技术实力与品牌影响力占据了市场的主导地位&#xff0c;其中西圣更是凭借其高性价比和用户口碑&#xff0c;稳居行业口碑品牌前列。但在这光…

百度移动刷下拉词工具:快速出下拉词的技术分析

都2024年了&#xff0c;你还在做SEO百度下拉&#xff1f;答案当然是肯定的&#xff0c;虽然百度的搜索流量不如从前&#xff0c;但移动端的流量依然是巨大的&#xff01;除了百度SEO快排以外&#xff0c;下拉也是一大流量入口&#xff0c;尤其是在移动端搜索的流量越来越大时&a…

《程序猿之设计模式实战 · 策略模式》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…