🎉🎉🎉 推荐一个基于 Vue3 + Varlet 的移动端 Web 模板

写在前面

掘金的同学们大家好呀,首先自我介绍一下,作者是 Vue3 Material Design 移动端组件库 Varlet 的作者。

Varlet 经历了两年多的开发和维护,现在终于有了一个官方维护的移动端项目模板(一切都源自于作者是个懒狗)。 今天作者在这里诚挚的将此项目分享给大家,同时欢迎对此项目有兴趣的同学,贡献更多的模板和功能,让它越来越成熟。

相关链接

在线预览: varletjs.github.io/varlet-app-...

仓库地址: github.com/varletjs/va...

Varlet 组件库仓库地址: github.com/varletjs/va...

介绍

varlet-app-template 是一个开箱即用的轻量化移动端 Web 模板,基于 Vue3VarletViteTypescript 开发。

协议

本项目基于 MIT 协议,也就是免费~,随便怎么用。

特性

  • ⚡️ 基于 Vue3VarletViteTypescript 开发
  • 📦 内置组件库和第三方库的自动引入和按需引入
  • 🗂 内置与原生应用类似的堆栈路由导航
  • 🗂 内置基于文件目录结构的约定式路由
  • 🌍 内置应用级国际化
  • 📦 内置请求库封装,拥抱 composition api
  • 📦 内置主题定制
  • 📦 内置移动端调试工具
  • 📦 内置 pinia 进行状态管理
  • 📦 内置 mockjs 进行数据 mock
  • 📦 内置 vitest 进行单元测试
  • 📦 内置 eslintcommitlintlint-stagedprettier 等代码检查/格式化工具
  • 💪 由 varletjs 官方维护,第一方提供对 varlet 的支持

安装使用

获取项目

通过模板仓库创建一个你的仓库

github.com/varletjs/va...

或通过 git clone 直接克隆仓库
shell 复制代码
git clone https://github.com/varletjs/varlet-app-template.git

安装依赖

shell 复制代码
pnpm install

启动开发环境

shell 复制代码
pnpm dev

构建打包

shell 复制代码
pnpm build

预览

shell 复制代码
pnpm preview

代码检查

shell 复制代码
pnpm lint

TS 类型检查

shell 复制代码
pnpm type-check

代码格式化

shell 复制代码
pnpm format

运行单元测试

shell 复制代码
pnpm test

运行单元测试并生成测试报告

shell 复制代码
pnpm test:coverage

路由导航

此项目使用 varlet 组件库内置的层级管理器模拟了类似原生 app 的堆栈导航,这使得用户可以得到更接近原生的导航体验,并且不破坏传统路由的导航方式(做 webview 套壳更像真的了)。

请求库

我们是基于 axios 封装了一个渐进式的请求工具 axle。在兼容 axios 的同时,对 axios 的方法进行了简化和归一化,并支持了 Vue3 Composition API。我们希望做到只要会使用 axios,就可以很容易的上手 axle。下面是一些简单的代码片段。更多详情见: github.com/varletjs/ax...

基本调用

php 复制代码
import { createAxle } from '@varlet/axle'

const axle = createAxle(/** 配置与 axios 一致 **/)

axle.get('/url', { current: 1, pageSize: 10 }, { headers: {} })

axle.post('/url', { name: 'Axle' }, { headers: {} })

axle.postMultipart('/url', { name: 'foo', file: new File() })

Vue3 Composition API

xml 复制代码
<script setup>
import { createAxle } from '@varlet/axle'
import { createUseAxle } from '@varlet/axle/use'

const axle = createAxle(/** @see 配置与 axios 一致 **/)
const useAxle = createUseAxle()

const [
  users, 
  getUsers, 
  { loading, error, uploadProgress, downloadProgress, abort }
] = useAxle({
  data: [],
  runner: axle.get,
  url: '/api/user',
  params: { current: 1, pageSize: 10 },
  immediate: true,
  retry: 3
})
</script>

<template>
  <span>返回数据: {{ users }}</span>
  <span>加载状态: {{ loading }}</span>
  <span>异常信息: {{ error }}</span>
  <span>上传进度: {{ uploadProgress }}</span>
  <span>下载进度: {{ downloadProgress }}</span>
  <button @click="getUsers">发送请求</button>
  <button @click="abort">中断请求</button>
</template>

我们不希望强制的去改变用户的一些开发习惯,如果您不喜欢 axle,将其替换成您更偏好的请求方案也很容易。我们只在主页使用了 axle 去请求 mock 的数据,这有利于您更方便的迁移。

结尾

感谢同学们能看到这,我们会尽力将 varlet 的生态做的更好,同学们的支持和鼓励是我们的全部动力~。发布这篇文章的时候项目刚刚开源,如果在使用的时候发现任何问题,欢迎在 issue 反馈给我们。

相关推荐
小白小白从不日白20 分钟前
react hooks--useCallback
前端·react.js·前端框架
恩婧28 分钟前
React项目中使用发布订阅模式
前端·react.js·前端框架·发布订阅模式
mez_Blog29 分钟前
个人小结(2.0)
前端·javascript·vue.js·学习·typescript
珊珊而川37 分钟前
【浏览器面试真题】sessionStorage和localStorage
前端·javascript·面试
森叶1 小时前
Electron 安装包 asar 解压定位问题实战
前端·javascript·electron
drebander1 小时前
ubuntu 安装 chrome 及 版本匹配的 chromedriver
前端·chrome
软件技术NINI1 小时前
html知识点框架
前端·html
深情废杨杨1 小时前
前端vue-插值表达式和v-html的区别
前端·javascript·vue.js
GHUIJS1 小时前
【vue3】vue3.3新特性真香
前端·javascript·vue.js
markzzw1 小时前
我在 Thoughtworks 被裁前后的经历
前端·javascript·面试