很多困惑
有些书写node是第一个使用js作为后台的编程语言,难道他们不知道ASP早就使用了么?
如果ASP支持新版的js,并且增加异步功能,实现跨平台,那还有node什么事?当然现在无法实现。
node 繁琐的路由机制,不应该在node的本身exe,作为一个服务器实现么?这样就简单多了,效率也会提升,那为什么不完善?至少可以提供一个开关,决定是否启用这项功能,这样也会简单多了。路由为什么exe本身不完善?
目前一次只能node一个js应用,虽然可以开多个端口、借助cluster,但任意多就不行,问题是都要用一个端口,怎么解决?一百个应用,一百个端口?比如一个网站有100个js应用,启动服务node index.js,应用app1.js,app2.js……app100.js都是通过index.js路由,无法绕过路由这一关,直接访问。
php也可以实现异步非阻塞,那么node的意义何在?是前端不想学习语言的借口么?
php占大多数,便于扩展、使用现成的程序,node有什么优势?
很多接口提供php的,但很少有node,造成不便,如何解决?
npm 数量虽多,但质量参差不齐,用于生产,恐怕有风险,所以npm数量衡量node的优势,有意义么?
搭建服务器方面,如何实现多个网站,多个域名,多个二级子域名?并实现安全隔离。有成熟方案么?并解决安全问题,node本身不能解决这些问题吧?
速度方面,测试都是极端,但一般用似乎没有什么特别的感觉?是这样么?
设想
看了楼下的go-server-js案例,的确似乎是想要的,但还不接接近。
感觉node就是把V8放到服务器上的技术,但是发明人似乎就此止步了。于是本来应该由服务器完成的工作,变成了js脚本的工作,大量路由由脚本完成。
如果搭建环境,比如linux+node+框架或自己写的路由和服务器的功能,便形成一个基本的服务器。 三部分组成:1,操作系统,2,node,3,由库、框架或自己写的脚本实现的服务器功能。
但是正如前面困惑所说的,麻烦、效率低,安全不安全另说。
于是设想将第三部分,加入到node中,重新改造node,形成node server,实现服务器的功能。 如果借鉴ASP的五大对象,进行重构,也就是复活了ASP技术。
最后形成两部分:1,操作系统,2,node服务器
微软无法从ASP上薅羊毛了,实际上ASP已经死掉了,虽然.net5出来了,也实现了跨平台,但是为了使用ASP,仅安装就已经过大,和node的方向背道而驰。
所以,如果可以设计出node server,当然不一定还叫 node,实际上也不应该再叫node,因为node是人家的资产。
突破
目前中国程序员在node领域贡献了两个世界级的应用,NW.js和Electron,虽然不是完全的底层技术,但在服务器底层技术方面,目前似乎没有什么叫得响的接近底层的技术。
node发明人干到一半,放弃了,node并没有突破太多,将V8向服务器方面发展,反而止步于脚本实现,似乎受前端影响太大。
这是node的特点,但反过来,一定意义上,也是node的缺陷。虽然V8已经很快,但需要更底层、更快、更快。
发明人又另起炉灶deno,似乎仍在以前的圈里打转,只不过换了语言,以及引用包的机制。这与前面的设想的差别太大。
所以,感觉这里存在巨大机遇。
即,采用V8,结合apache服务器的技术,再结合ASP的技术,形成node server。最终形成:操作系统+node server的组合。
实现跨平台,轻量化,借助庞大的js语言用户群,实现ASP的复活、与php的抗衡。
如果不想做高度集成的node server,仅将ASP技术吸收到node server中,也是一个有竞争力的产品。最终形成:操作系统+服务器+node server的组合。
最后这东西,有点像tomcat,没有apache,tomcat也可以实现Java引擎和服务器的功能。这也是node server的终极目标。
当然,不能再叫node了,可以起个新的名字,毕竟是新的产品。
另外,最重要的一点,必须开源,不开源,没人敢用。js世界的东西都是开源的,v8也是开源的。