和create_滴普开发框架 create-nuxt-app 2.0 正式发布:集成更多工程化实践

fc3ec961bf5550537a760c742e1fe7c1.png

简单介绍

@femessage/create-nuxt-app 是滴普前端开发脚手架工具。提供后台管理和移动 Web App 两个项目模板。基于中后台项目交付,提供一系列预设功能。让前端开发可以专注于业务的实现,无需关注全局逻辑和构建发布配置,提高项目从 0 到 1 的效率。

经历了过去一年大小中后台项目,脚手架集成了更多工程化实践。接下来带大家看一下都有哪些令人期待的新特性。

‍ 用户体验提升

保证最小的主显示区域

3ea0e4ed551462a168fda908c5b40101.gif
开发可以不用考虑屏幕尺寸了,对于部分屏幕特别小的用户,就委屈多划一下鼠标,以保证最低的阅读体验。

a3a7a460601e9b37639a64c8a6b56654.png
以往很多后台管理页面是这样的,表格缩在一块,阅读性大打折扣。

跨平台统一的滚动条

9f1c0017c75e5b2679f7cb476c23a5a3.gif
基于 el-scrollbar 实现,这是一个 element 中没有公开的组件。

基于 Deepexi Design 的色彩和文字方案

Deepexi Design coming soon

鉴权失效重定向

登录凭证导致的重新登录,登录后会重定向到失效时的页面。用户不需要重复导航到相关页面。功能虽然简单,但是项目组无暇顾及登录优化,统一在脚手架中实现就最好不过。

默认的接口状态码消息

6fd03b67ae3cf23fe7b1cd11a6edb9db.png
再也不需要担心接口返回不规范,导致只提示状态码,没有文字信息的问题。

开发体验提升

提供一套较为完整的面包屑方案

921a0554fae8d3c297efe0f4704561ea.png
Nuxt 生态里面,面包屑的方案一直是难题。而且业务中也会经常出现动态面包屑的需求。这一方案可以满足这些需求。

Nuxt 里面实现面包屑难在哪儿呢?

浏览一下 Vue 生态的面包屑解决方案不难发现,基本都是基于路由匹配实现的。然而 Nuxt 以文件目录生成路由的特性,将路由表屏蔽了。对于开发者可以说是又爱又恨。

另外一个痛点就是现在很多中后台项目的面包屑除了需要实现导航的功能,还需要动态渲染一下部门名字、模块名字等,实现区分多个同级目录的作用。

因此提供一种统一的方案,省得每个团队都各自踩坑。统一每个项目的实现也有利于项目人员的临时调度,不需要很多时间就能上手项目了。

提供一个数据分层的方案 service 层

对于企业级 web 应用,接口可以说是海量的。如果既想享受 nuxtjs/axios 封装带来的便捷,又想实现数据分离,则需要一些技巧。下面罗列一下这个方案带来的直观感受

  • 调用接口不需要各种 import 了,同时也不会出现散落各处的接口路径字符串。
  • 统一且语义化的数据请求调用方式,代码更加直观
  • 临时 mock 数据不会影响到视图层,可以直接在 service 层介入

0493948e52eca49a4e7eca26bb95d071.png

支持 ES optional-chaining 和 nullish-coalescing-operator

// optional-chaining 
const adventurer = {  
  name: 'Alice',  
  cat: {  
    name: 'Dinah'   
  } 
};  

const dogName = adventurer.dog?.name; console.log(dogName); 
// expected output: undefined  

console.log(adventurer.someNonExistentMethod?.()) 
// expected output: undefined  

// nullish-coalescing-operator 
const foo = null ?? 'default string'; 

console.log(foo); 
// expected output: "default string"  

const baz = 0 ?? 42; console.log(baz); 
// expected output: 0

这两个新特性为写出健壮的代码提供了巨大的方便

// 判断值是否「真」真值 
// Before 
import { isNull, isUndefined } from "utils" 
const isTruly = value => !isNull(value) && isUndefined(value) 
const value = isTruly(val) ? val : ""  

// After 
const value = val ?? ""  

// 避免 can't find property xxx of undefined 
const get = {} 
// Before 
const obj = get.a && get.a.obj  

// After 
const obj = get.a?.obj

提供 svg-Icon 的集成

更方便的使用 svg-icon,也不需要自己操心 webpack 配置了。往指定目录存放 svg 文件即可。

使用细节

对于大部分的特性,开发者不需要知道细节也能享受得到。因为脚手架的初衷便是为业务开发屏蔽掉不必要配置和全局逻辑,让他们专心于业务逻辑的开发即可。

然而面包屑和 service 层是提供了一个解决方案,开发者必须要了解如何实现才能运用自如。

有兴趣的可以到我们的钉钉交流群参与讨论

201beee30d46b6d3cac7f62258dfd56d.png
FEMessage 交流群
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值