关于技术选型

由于我28岁决定转行当前端工程师,起点很低,为了能尽可能弥补与他人差距,我对技术选型的定位就是实用、成本低和通用性,实用就是能满足基本的需求,成本低就是能够快速上手、快速迭代,通用性就是要能跨端,最好是安卓苹果小程序通通都能用,学一套,跨多端。

所以经过14月艰苦自学,经过几次知识迭代更新。到目前为止我选择的技能主要是这些:nuxt、vue、uniapp、element、less、koa、echarts、mongo。目前能够进行简单的App、小程序、SSR、SPA以及数据可视化开发

为什么要用Nuxt

用Vue制作出来的Spa程序虽然速度很快,但由于数据是在前端动态渲染的,导致各种关键字无法被搜索引擎收录,很难进行SEO优化,这会导致网站的搜索排名滞后,这个弱点对于电商和博客类网站是致命的。

所以我们采取的方法是由后端将数据渲染成型后投递给前端,这能满足传统的搜索引擎SEO优化,然后再用Vue在前端渲染,以提升页面速度。

因为渲染既发生在前端,也发生在后端,所以我认为学习Nuxt主要的难点在于生命周期,以前写Vue的时候对这个概念没什么印象,但是在Nuxt中nuxtServerInit、asyncData、fetch、created、mouted等函数会让我重新认识了生命周期。

为什么要用element

最开始我考虑的是iview,因为内心是拒绝接受element的,因为百度的东西一贯都做的很丑。只是在实践过程中,view虽然清新漂亮,但有个别多层选择组件的内部封装比较混乱,导致不得不加大量判断来控制,体验非常糟糕。所以在发现element可以个性定制以后,就转到了element。个性定制方案详见:element组件样式如何个性定制

为什么要用less

less预编译器可以嵌套、引入和定义通用变量,可以像管理程序一样管理less,另外配合gulp,只需要少量的配置就可以转换成小程序端和App端需要的格式,非常方便。
配置方案详见:在微信小程序中使用gulp+less对wxss进行构建

为什么要用koa

自学的第6个月,学会了jQuery,然后开始学php,用了一个多月时间手撸了一个库存系统,那时候页面dom与php混在一起,还要写一堆jQuery逻辑,简直痛不欲生,由于不懂优化,最终成品的访问速度也极慢,页面平均3s多才能打开,十分低效。几个月后,偶然发现了koa,首先它只是一个中间层,只有文件、网络和数据库操作,处理好数据之后返回,不需要写展示界面,而且koa功能由npm扩展,按需求加载,非常简洁,所以果断弃坑php,改用koa

为什么要用echart

echart的核心思想是数据驱动,虽然配置项繁多复杂,但初始化一次之后,所需关心的只有series.data数组中的数据而已,可以非常方便的做数据可视化,他的三维gl插件基于canvas,在各端兼容性非常良好,相比于D3和highChart,他的文档也更加详尽

为什么要用Vue和uniapp

和React相比,Vue显然更简单易学一点,全家桶也完全能满足基本需求,跨端的话也不需要像React那样再去学一个Native,Vue完全符合实用、成本低和通用性选型定位。而uniapp是vue、flex和H5+的结合体,自学的时候曾用他家的mui开发过安卓App,uniapp与mui一脉相承,过渡曲线比较平滑。

为什么要用mongo

由于node是单进程,不必担心进程间通信和死锁问题,异步的消息队列使他能处理更多的并发请求,同时由于cluster这个神器的加持,使得node可以多核部署,健壮性、稳定性和负载均衡都得以实现。所以与mySql相比,我认为mongo更适合小型项目

为什么要用redis

在管理邮件注册码和用户登录状态session时,由于要保持长存储,如果在node中管理这些状态,会给系统内存回收带来极大的负担,所以考虑采用外部高速redis数据库,在保证系统响应速度的同时有效避免内存泄漏。

为什么要用阿里云OSS

腾讯云虽然操作简便直观,但对外开放的功能有限,做微信小程序时他是神器,但其他的项目就不太乐观了,阿里云虽然比较复杂,但胜在功能全面,价格便宜,用户基数也很大。

你可能感兴趣的:(关于技术选型)