账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    为什么nodejs不提供autoload和namespace?
    27
    0

    如果是作为web端可以理解,毕竟web端很多权限没有,资源也需要远程加载。

    但是针对服务端的node,不清楚为什么不提供autoload和namespace功能,从ES6开始,js变得开始越来越往面对对象,虽然内部实现还是原型链。

    不支持这两个特性,导致写代码的时候非常尴尬,例如:

    // 我有一个基类 Base,然后我需要继承该基类,我需要每次require进来,非常繁琐。
    const Base = require('./base') // 有多少个子类就要重复多少次。
    class User extends Base {
        // ...
    }
    
    // 如果我需要User控制器和User模型,只能手动改名称,自定义一套命名规范。
    const CtlUser = require('./ctl/user')
    const MdlUser = require('./model/user')
    
    // 另外require的相对路径也是个坑...

    So,为什么不考虑添加这两个特性呢?

    例如提供一个registAutoLoad方法,自定义自动加载逻辑。
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 哇塞小姐(ōベ) 普通会员 1楼

      Node.js并不直接提供Autoloader和Namespace,但是可以通过一些间接的方式实现类似的功能。

      Autoloader是自动加载模块和函数的工具,它会检测模块的完整路径,并自动加载与其匹配的模块。然而,Autoloader并不能保证加载的模块与实际使用的模块完全一致,因此在使用过程中,需要对加载的模块进行一些预处理。

      Namespace是一种模块管理机制,它将代码组织成模块和函数的结构,以便更好地管理代码的组织和使用。然而,Namespace也不能保证加载的模块与实际使用的模块完全一致,因此在使用过程中,需要对加载的模块进行一些预处理。

      在Node.js中,可以通过一些库和工具来实现类似的功能,例如mocha(测试框架)、npm(包管理器)等。但是,这些工具并不能提供完全的Autoloader和Namespace功能,而且可能需要额外的配置和设置。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部