web前后端分离框架-ARK(方舟)

为什么写这个前端框架

这个是个基于nodejs的web前端框架,其实也不是我前端多么的擅长,我只是个搞后端java的,因为在上一家公司里和web打交道比较多,js用的比较多,而且恰好又有知道一点nodejs,所以就有了一点个人条件去写这样一个前后端分离的框架。当然如果真的要说什么要写这个前后端分离的框架,总结起来其实和我并没有多大关系,我是在换了第二家公司上班的前两个星期写出来的。这一家公司是搞人工智能的,现在主要是人脸识别算法,这个据我所知是公司核心的核心,公司创业也是因为这个,才能活着吧。而公司确实是个小公司,以前写的web是普通的JavaWeb吧,而之前主要负责的人换公司了。后面又有很多人和业务进来,最后这个web很难维护,不单纯是这个web项目其他的web项目也是如此。现在负责人基本上也是被经常一个静态的文件就要重新发布(springboot的,所以用jar吧直接把整个web打进来,虽然Linux支持把jar内部进行改动,但总的来说几乎不可能,太难了如果稍微多一点点改动的话),重新发布也不算什么,主要是有java的代码可能也提交了,可能就会有bug,不能因为一个静态文件就全部测试一次吧,不测又不放心。恰好负责人想更的在公司立足,他也算是新人吧,我也恰好可以写,刚刚来也没有什么好的安排。于是乎就让我写这个了,新来的总不能说不行吧,于是乎就硬着头皮写了,写啊写,写啊写就出来了这个前端框架。哎呀,啰嗦了这么久。


image.png

(ps:这个控制台输出可以参考
http://patorjk.com/software/taag
http://www.network-science.de/ascii/
http://www.degraeve.com/img2txt.php

为什么叫ARK(方舟)

其实叫什么都无所谓的,但是现在回过头来看的话还是觉得名字其实听重要的。关于方舟这个名字其实最初只是作为第一个使用这个前后端分离框架的项目的名字,起名方舟就是想着这个项目能像圣经里的诺亚方舟一样,作为拯救世界的东西。说是拯救世界其实一点也不为过,因为只有后端的人才知道原来的代码在多次改在之下已经面目全非了,而且存在太多bug,改bug的人可能也没有什么技术已经耐心,结果只是改了一个小bug又埋下了几个大bug。我和我的方舟虽然没有受到公司足够的重视,但假设一下,公司现在不用现在的框架,可能会面临一场灾难,对于公司而言是圣经里的灾难相同的吧。而有了方舟就拯救了这一块,这使我感到宽慰。而后来我写的这个前后端分离的框架一直很惨,具体的就不吐槽了,不是有句话说的啥,友谊的小船说翻就翻,起名方舟也很适合他所经历的,没有诺言方舟那么庞大,但也有相同的质疑。甚至在启航的时候,连部署的服务器都没有,整天到处乱放,要用就部署,别人要用就删掉,让别人用。真可谓是风雨动荡,漂泊不定,想想他的身世和自己的过往,莫名就能理解他。于是乎,我就想把这个技术留下来,毕竟还是体系化的东西,可以复用的。更主要的是,让我记住他和他的故事,让他承载我……

用到了哪些技术

其实主要说来就是nodejs,有了基于谷歌V8的解释器,脚本也能脱离浏览器更加独立的做点什么了。下面的是目前用到的依赖:

    "array-has": "^1.0.0",
    "body-parser": "^1.18.2",
    "captchapng2": "^1.0.3",
    "cookie-parser": "^1.4.3",
    "debug": "^2.6.9",
    "ejs": "^2.5.7",
    "express": "^4.16.2",
    "express-status-monitor": "^1.0.1",
    "got": "^8.0.3",
    "log4js": "^2.5.2",
    "md5": "^2.2.1",
    "morgan": "^1.9.0",
    "pm2": "^2.9.3",
    "promise": "^8.0.1",
    "redis": "^2.8.0",
    "request": "^2.83.0",
    "rotating-file-stream": "^1.3.4",
    "serve-favicon": "^2.4.5",
    "typescript": "^2.7.1"

除了这些其实还有很多其他的比如loadbalancer(多实例负载均衡的东西)等没有在项目里体现的东西。也有很多很适合用,但是由于时间问题没有加进来的东西如mongodb等
下面是pm2启动配置

var sidecarIP = '192.168.1.111';
var ip = 'st.ark.uniubi.com';
var environment = "st";
var net = "inner";
module.exports = {
    apps: [
        {
            name: 'ark-runner',
            script: './www',
            watch: true,
            env: {
                IP:ip,
                PORT: 3008,
                SIDECAR_PORT:9008,
                SIDECAR_IP:sidecarIP,
                ENVIRONMENT:environment,
                NET:net
            }
        },
        {
            name: 'ark-runner',
            script: './www',
            watch: true,
            env: {
                IP:ip,
                PORT: 3009,
                SIDECAR_PORT:9009,
                SIDECAR_IP:sidecarIP,
                ENVIRONMENT:environment,
                NET:net
            }
        },
        {//这个sidecar始终是启动的
            name: 'ark-sidecar',
            script: './sidecar.sh',
            watch: false,
            env: {
                applicationName: 'uniubi-sidecar-node-web',
                sidecarDelegateIp: sidecarIP,
                sidecarPort: 9008,
                sidecarDelegatePort: 3008
            }
        },
        {
            name: 'ark-sidecar',
            script: './sidecar.sh',
            watch: false,
            env: {
                applicationName: 'uniubi-sidecar-node-web',
                sidecarDelegateIp: sidecarIP,
                sidecarPort: 9009,
                sidecarDelegatePort: 3009
            }
        }
    ]
};

其中sidecar是eureka注册中心帮我注册的一个jar

#!/usr/bin/env bash
java -jar uniubi-sidecar.jar

关于分享这个框架

其实我想放到github上,然后给大家直接用的。但是目前还有些不那么完善的地方,我后续完善之后会拿出来分享。也不知道是不是已经有这样的nodejs比较体系的web框架了,如果没有是不是我是重要的贡献者呢?其实写代码最主要的就是创造价值,以及在创造价值之后的开心了。留一下我qq吧(真的是土,1716330643),如果有特别需要的,等不及我完善的或者想和我一起完善的小伙伴大家可以一起来。拖延症,这个东西其实不好说,毕竟现实在这里,很多时候做不到义无反顾不顾一切的做些什么。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260