前端进阶之困
最近看了不少文章和帖子, 如文:
身边和朋友圈也不少做前端开发的同事朋友问如何发展和提升 这里我向大家给一些建议
扎实基础
首先思考下手上的工作是否做得足够好了,近几年前端技术发展迅猛各种框架层出不穷,刚学会jquery还没用熟, angular 、vue 、react 已经满大街了。 gulp 还没明白怎么回事、webpack 已开始遍地开花了。眼花缭乱的技术不知道从哪里开始好。 如果你还被这些困扰的话,那请静下来思考一下,技术的发展总是有规律的,学习也是有规律可循的,我的建议是,把共性和必要的技能先稳固下来,既不浪费时间,又能提高效率,如果这块还么稳固好、框架什么少看几种吧,先有一样可用的就好。 对于加强基础一个可行的方案是,从自己上手的工作开始、除了专注现学现用工作需要的框架技术外加强基础的学习,如:
- 基本的逻辑(与、或、非)
- 运算操作(加减乘除 Math 下的各种函数)
- 字符串处理 (什么大小写、编码、裁剪什么的)
- 时间处理 (日期的加减、对比、格式转换等)
- 数组、集合对象处理 可以了解学习一些基础库 如: lodash、moment 等、若时间有限可以看看示例有个印象回头可以查找,当然最好的方式是实践练习。
发展全栈的正确姿势
Javascript 生态链对于全栈有一些优势,但全栈不是贴金的标签,如果技能不够硬,必然落得个 前端不强,后端不行 的尴尬局面。
那对于前端是不是不该发展后端呢?
回答当然是否定的,前端有目的、有计划的发展后端技能,对于系统全局观、工作协作能力提升是非常有帮助的,另外切实让老板愿意为你加工资是非常可能的。
那要如何才能是有目的、有计划的发展后端技能呢?
首先认清后端技能出发点和关键点。
- 出发点: 是主动权和话语权(可能某个后端老是鄙视你,你要的东西,说这个没办法,那个不应该,造成了你工作很被动,效率不高,出错了可能还先找你)。
- 关键点: 前后端接口 (如果你能清晰、标准、明确你要的接口,那么一些都会明朗起来)。 所以我任务,前端切入后端应该从接口开始。
从标准接口开始,什么样的接口才是标准的呢?
OpenAPI Specification 这里我为大家推荐 Swagger 标准接口 (目前有两个标准 OAS 2.0 和 OAS 3.0) Swagger 致力于接口的标准化,并为此提供了一系列的工具,方便大家对进口进行标准化。
有什么好处呢
- 简化工作流程 (Streamline Your Workflow)。
- 自由构建 (Restraint-Free Build)
- 开放/全球化的支持 (Open & Globally Supported) 我的理解是增强系统的健壮性、降低沟通成本、提高写作效率,另外接口是系统的一种抽象可以更好的从宏观把握系统。
标准化的接口要如何实践
这里我安利下我的开源项目 typerx, typerx 是一个轻量注解式的全栈系统、你可以使用他快速的实践接口标准的全栈开发。
- 创建接口前、我们仍旧还是要考虑接口模块的、模块化的设计能降低我们一次思考的复杂度。 在 typerx 中我们分了 core 模块和 cms 模块。
- 接口的创建从原型开始考虑、确定接口所需的模型 model, 这个模型我们称之为 DTO(data transform object) 也就是接口的输入输出数据对象。 dto 的编写示例
- 有了模型之后我们就可以确定需要哪些接口方法了,编写接口的时候先不着急考虑接口的实现,我们只要先提供模型(可以建立一个按模型提供的数据mock)确保必要的接口规格描述就好, account 的接口定义 这里我们通过直接编写代码的方式来实现文档,这样方便我们高效、可维护的接口文档(当然先完成文档再来生成代码也是可以的,不过代码能表述的永远比文档能描述的多,所以应该是有一套能够自动生成api 文档的代码来维护比较合适,过去也曾从文档开始,但文档的错漏不方便验证、而且文档维护数据模型是很累的一个事情无法动态关联重构)。
- 按要求完成了接口定义之后,你只要轻松运行
npm run build
你就拥有标准的接口文档描述文件 swagger.json / swagger.yaml 了, 你可以使用 typerx 直接启动服务端预览接口 localhost:4700 或者放到在线编辑器上预览 editor.swagger.io;
- 好了标准话的接口有了你可以保持这个接和后端的接口一致,这样就可以和后端愉快的协作了,当然如果你喜欢,直接使用 typerx 实现自己真实的后端。
最后欢迎大家关注 typerx 一起讨论努力进阶。
最近不少人怀疑 node 对全栈的意义,实际上我们要分清的是node 对前后端贯通真正的优势点的地方, 而不要用node 的弱势点去扯,啥都能干上,。
前端发展非常快很迅速,但是在很多公司中前端大部分职责还是停留在UI层开发,对于数据和接口层操作受到很多阻碍。其实前端如果能很好的借助Node的使用场景,开发有效的产品或工具,还是有很大的提升和收获。
@hankewins Node 还有工具链的优势,今天我加了个自动提交到 editor.swagger.io 的脚本,自动生成前端的代理类输出到前端到文件夹,一个命令完成接口同步更新操作,这个是相当方便的,对提交协作效率是非常有帮助的。 https://github.com/vellengs/typerx/blob/master/packages/server/src/scripts/apigen.ts