写node的最大感受就是,不断地用脚本在写路由,用了框架也是如此,本来这些属于服务器的任务,结果变成了脚本的任务,令人厌倦,实在烦了,难怪创始人都走了。 如果asp开源,独立出iis,支持跨平台、js新特性,吸收node,php,.net,Java,ruby等技术的优点,不断升级,成为一个轻量级的技术。那么,会果断把node给扔了,不再用这玩意。可惜了asp。 现在,把node的各种包,加上node本身,整个体积和php差不多,越来越臃肿。 如果node官方,能改改,把路由变成exe里的一部分,成为类似apache、tomcat的东西,接管路由,不再是现在一个路由文件负责。或者变成双模式,由config。xml,或config。json进行一下配置,可以延续原有的路由模式,或者象其他语言的一样,由服务器接管,那就好了。有个选择,总比没有要好太多。
设想:
1,设置根目录下的 config.json 或 server.json,发挥基础作用
2,后缀改变,。njs 取代 。js,直接废掉静态目录设定
由于要废掉静态目录设置,所以有必要区分 js 。njs 给 node 的,只能后端执行,动态文件 。js 是给前端的,只能前端执行,静态文件
njs 是默认后缀,也可以在前面的json配置中,改为任意名称
3,单入口模式终结,保留单入口模式,增加多入口模式,也就是 exe 接管路由 serve。json里设置采用什么模式 单入口模式,假设叫特殊模式,启动采用:node 入口 多入口模式,假设叫常规模式,由 node。exe 接管路由,有更大权力 启动时,直接根目录下: node 或 node . 自动加载 。json 配置 抛弃以前的单入口路由模式。
常规模式下,所有的 。njs 都会被直接执行。
4,config.json 或 server.json,设置路径作用
在 json中可以设置访问路径 { // 虚拟路径 》实际路径 虚拟路径:实际路径, // 或者 虚拟路径 》虚拟路径 》实际路径 虚拟路径:{ 虚拟路径: 实际路径 }, // 或者 虚拟路径 》实际路径 》实际路径 虚拟路径:{ 实际路径: 实际路径 } } 废掉 express 等框架
5,url的访问,默认是同名 njs 如: http://url/list 实际访问 list。njs
如果设置了虚拟路径,则 json配置的虚拟路径生效,更高优先级。
如果访问目录 http://url/list/ 默认访问 list/ 目录下的 index。njs
可以在前面的 json 配置文件设置影响所有目录的默认访问文件,也可以单独为不同目录设置不同的首个默认文件。 如果不设置,默认为 index。njs
6,node作为服务器的安全提升,无需第三方工具以防宕机
7,依然使用 js,而不用 ts
8,以上的设想,不是再用 js 写个新的框架,而是用 C和C++从底层彻底改变 node。exe
这个问题在于node没有企业级规范,你看看java有j2ee和javaee规范,这其实就是二者之间的本质区别。
你也可以参考weblogic,tomcat,WebSphere去写一套类似的,也是没有问题的
等谷歌搞一个出来吧,一流企业做标准~
ts还是很香的,支持ts。
你说的这些根本不是node作为一个运行时该考虑的东西。
譬如你说的那个路由的问题,自己手动手写一下也不过二十来行代码(根据目录来访问对应的文件)。 静态目录以及扩展名的问题,你这肯定是直接用第三方框架习惯了(见静态文件都得独立放一个目录),这哪关node什么事儿? 先搞清楚 http server 的实现原理,不用框架并尝试下按自己需求去简单实现出来。再来说这个问题会比较好。
关键 Tomcat 和 Apache 根本不是语言运行时啊。。。
那么嫌弃,怎么不改用其它语言?你说的缺点刚好都是我喜欢 nodejs 的特点,别的语言没有的东西你不喜欢,为啥不去用别的语言?java 也很香啊
如果楼主自己不太喜欢node,楼主可以按自己提到的思路,实现一个语言
多半是因为asp+iis把服务端的逻辑链条包裹的太深了,所以用多了asp对node的处理模式一时不太适应。其实,node作为后端服务,其逻辑链条是非常清晰、透明和简洁的,多玩玩就好了。
我之前写的文章里面实现的框架框架 就可以实现你说的 使用的也是分布式路由 无需考虑内存泄漏 请求结束适时销毁 https://cnodejs.org/topic/6360b875d3061f5e5fe893a7
我基本上每次写什么项目,都会写个轻量级的自动路由。 这样每次新的业务模块路由新建的时候,我基本上都是新建某个目录或文件,这个文件会自动映射路由。 这样就几乎不用再去考虑路由的问题,聚焦在业务代码上了。
Node 已经很轻便了,lz只是想要个符合它业务的模式。并不一定全来做API和Web,所以不是必须要路由吧?
看看