- 主题:[原创]NodeJS/MongoDB/Angular2 RPC全栈框架
经过3个月的开发和积累,我自己研发了一套nodejs angular mongoDB的全栈框架。做完整开发和nodejs shared hosting的out-of-box完整工具。
解决了几个问题:
1、前后端的通信和融合。这套框架的开发更像是传统的php和.net MVC,但是更方便的功能就是——所有的服务类型(被@rpc.service修饰)会被自动转译成浏览器客户端可以使用的客户端类型。其中连注释都会被转译过去,所以前端可以直接在Angular把客户类型Inject进去,然后直接利用async/await调用后端方法。
2、一个功能完整的服务器(包括http和https)。在HttpServer和HttpsServer当中直接设置middleware可以处理不同domain,同一个domain当中的前端路由请求,RPC请求,文件白名单等等。(详见github的例子)
3、TypeScript的async/await过程支持cancel。我修改了TypeScript compiler,从而使得它在有errisy-task库的情况下会使用task类型来包装async过程,async方法当中每个子的await过程会被append到task的children当中,从而可以通过对task (awaiter)的cancel来取消异步过程当中的每个子语句,最大程度减少cancel之后对CPU计算的浪费和出错可能。
TypeScript async/await对cancel的支持,我个人认为在学习曲线和灵活性上是超过RxJS的。RxJS是数据流模型的,要构造一系列函数做变换,当需要在一个过程当中同时操作几个不同的数据时,RxJS的构造就会很麻烦。而async/await过程则可以处理任何内容和任意多的变量,因为只是正常的程序逻辑书写。
4、对于处理authentication,你需要RPC类型当中读取request的session字段来验证token。我后面会加个authencation处理的例子。基本思路就是验证token之后返回用户名或者用户的数据库类型对象。
5、MongoDB。*.data.ts当中用@rpc.entity修饰的类型 会被自动转译成mongoDB数据entity和查询类型等(在对应的*.sys.ts),利用这些entity和辅助类型在mongoDB query当中出现type contrain,可以避免查询当中的低级typo错误。
** 目前版本使用的是node-session。我的经验是它在某些情况下不太稳定。我后面会改成用nodejs数据库做session和auth。(对于不需要C10K问题的小型项目来说,这个足够满足需求了。)
补充:
6、errisy-session和errisy-mongosession也加进去了,可以从npm下载,分别是基于cookie和mongodb的session实现。
我自己做了个一个网站,用的就是以上所有的技术。
siama是我面试公司时做的一个相对完整的例子,具体的解释可以参考github上errisy-server和errisy-tsc当中的解释。
https://github.com/errisy/siama
https://github.com/errisy/errisy-server
https://github.com/errisy/errisy-tsc
相关的包都可以在npm当中直接安装
https://www.npmjs.com/~errisy
--
修改:facilitator FROM 110.23.10.*
FROM 110.23.10.*
看你做这个东西,如果常用也是善。
唉,我之前在弄一个刑事裁判文书的应用、整合自然语言处理。 功能看似小,方方面面东西实在不少
【 在 facilitator 的大作中提到: 】
: 经过3个月的开发和积累,我自己研发了一套nodejs angular mongoDB的全栈框架。做完整开发和nodejs shared hosting的out-of-box完整工具。
: 解决了几个问题:
: 1、前后端的通信和融合。这套框架的开发更像是传统的php和.net MVC,但是更方便的功能就是——所有的服务类型(被@rpc.service修饰)会被自动转译成浏览器客户端可以使用的客户端类型。其中连注释都会被转译过去,所以前端可以直接在Angular把客户类型Inject进去,然后直接利用async/await调用后端方法。
: ...................
--
FROM 107.178.195.*
语言处理 那么不是AI了么?做好了不容易
【 在 saynothing 的大作中提到: 】
: 看你做这个东西,如果常用也是善。
: 唉,我之前在弄一个刑事裁判文书的应用、整合自然语言处理。 功能看似小,方方面面东西实在不少
:
--
FROM 110.23.10.*
应该是nlp里面最简单的应用了。
从文本里提取涉案金额,裁判文书很八股文的描述。 量刑情节提取准确率已经比较高了
(用的不是nlp的套路)。想做一个根据提取出来的量刑情节(从轻的、从重的),涉案
金额(需要自然语言处理),预测判罚的准确性
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: 语言处理 那么不是AI了么?做好了不容易
--
FROM 107.178.195.*
赞,回头用一下,正好要改一改内部系统。请问对socketio支持吗?
--
FROM 223.104.38.*