这几年工作中,对公司的应用系统,一直有些困惑和想法,希望有个简单、易用,且多变的,能适应多机构(组织、个人)、多应用、多用户的管理系统,希望它拥有的功能如下:
- [ ] 多机构管理,这里想的是主体用户可能是个企业、团队、或者就是一个独立的个体。希望有独立的管理页面、独立的入口,个性化的域名。
- [ ] 多应用,可以管理如:博客、资讯、APP的内容,现在因为有一些小程序的业务工作,也希望能对小程序应用做管理
- [ ] 多用户,是希望用户相对于应用与机构是独立的,不同的用户归属于不同的应用,应用之间的用户可能是相互隔离的,但内容有可能是打通的,甚至多机构的内容也是相互打通的。
因为自己开始创业的契机,也开始在业务开展的同时持续打造这样的系统,虽然系统还没有完成也有很多想法不成熟,但是实践中的坑和一些技术性的内容,希望能记录下来,因此开始这一系列的文章,一开始文章肯定会粗一些,因为很多地方还不成熟,这篇文章开写的时候,整个系统也略有雏形,也在小应用中开始实践。我把这个系统命名为 Picker。
整个系统说起来比较复杂,其实主要也就两套系统:
经管理系统,主要是给系统运营者使用的,包含系统运行管理、系统资源管理、系统用户管理等与运行相关的一系列系统功能,而应用系统是我们的重头戏,主要包含机构入口、机构的应用管理入口、应用管理、应用用户管理。规划了一个简单的结构:
大致的想法完成,开始实践就需要解决一些问题,这个文章也是一个系统性的,虽然现在不够系统。
系统开源于 github:
https://github.com/baisheng/picker-master
会逐渐完成系统的实践与写作:
产品设计
这里的产品设计,不仅指的产品经理去做的原型或者基础的流程设计工作,而是整个产品的目的,思考的角度主要从产品要解决的问题为出发点。
我将整个产品规划了几个阶段:
一、探索阶段,这个阶段主要解决产品可行性,是否可运营、可研发、可以应用
二、应用阶段,这个阶段主要在特定的应用场景中实践,是否要以满足业务需求,满足产品功能性需求
三、多业务实践,这个阶段主要是磨合产品,让产品变得健壮
四、推广,这个阶段产品基本从无到有,并且经过一些历练后,去见见“市“面
定了个基准,产品的产出反而变得简单了,因为每个阶段的要求在本阶段内是要求不高的。-
系统的技术选型
技术选型,的确是个技术活,虽然有些程序研发经验,但是因为工作关系还是管理职的工作比较多,并且一直是做一些相对组织型的系统,一个人单干做这样的系统还是头一回。原有技术底主要是 java,PHP 主要实践于 wordpress 类的 blog 系统,Python 写一些爬虫和图型处理,Ruby\go 这类型的只是 demo,所以一开始的想法还是用 java 去实践。
但是实践中遇到了一个比较重要的问题,“最佳实践”,什么意思呢,就是劳动成本的投入成本的问题,首先对于 java 这块我要完成这个系统的架构不难,难在我现在的工作是希望同期开展前端呈现、UI、UE的设计。这样用 java 架构就没有精力去搞前端,必竟前端费时一些,因为我主要目的是搞应用,而不是 api,api 要为应用做服务,但java 就要处理一些架构和分层,虽然可以用一些轻量级的框架如 JFinal 类的,也可以自己实践 servlet ,但感觉还是效率不够。
这样就重新审视了一下,nodejs 对于现阶段是最适合的,首先前后端的技术切换成本很低,代码的灵活性很高,虽然有一些同步异步问题,但对于产品的一阶段还是满适用的。探索阶段要的就是快速展现和应用。但因为 nodejs 之前没做过系统只会 js 还是不够的,因些需要找个实践起来方便的 js 框架。nodejs 应用于生产中大至有 express、koajs、Feathers、Hapi、Thinkjs、egg 等,这些框架逐一简单实践了一下, express koa 相对来讲是最简单的,但是需要自己写的东西相对多一些,而 feathers、hapi 设计上非常好,但是还是前一个问题,对 nodejs 掌握不够熟练,坑会更多一些,不好把控。最后选择了 thinkjs,选个主要是这个框架的分层和入门比较顺手,并且关注了一下用它做的几个项目,感觉上还是较好操控的。
再来说说前端的选型,这部分主要根据我想要的效果,在UE设计上面,一定要简洁、易用,人机交互良好,适时的动态效果,数据呈现要达到一定的要求。市面有传统的dom 操作框架类似 jquery,也有基于 mvvm 的框架 React.js Vuejs 等,向未来看的角度和易用性应该选mvvm类框架最划算。这里面也是重点实践了一下 react.js vuejs 还有 angular,因为最初这几个框架掌握的都不行开始的时候还是混合应用 jquery + mvvm,先用的 angular 感觉比较重,而 react.js 直接引入页面不容易,需要webpack等,只有vuejs 最适合开始的时候直接替换 jquey,而且一开始的需求也主要是数据的替换和一些交互效果,就选择 vuejs 去做前端
最终的技术选型
Thinkjs + Vuejs + Mysql
操作系统层用 Docker 构建
现阶段为了节省资源和构建方便,采用 PaaS 形式构建,采用的 Paas服务为 Dokku
下面挖坑。。。 系统UI、UE设计
PIcker 应用管理系统 UI 设计
http://www.jianshu.com/p/9748eb2524c3