V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
refresh
V2EX  ›  Node.js

有没有一个可以动态加载依赖的模块,我希望是使用时加载,并且兼容server/browser

  •  
  •   refresh · 2013-06-12 12:36:53 +08:00 · 4489 次点击
    这是一个创建于 3969 天前的主题,其中的信息可能已经有所发展或是发生改变。
    requirejs和seajs都需要预先define,并在define声明dependencies。但我现在想这样:

    1. web app加载
    2. 用户执行某个操作,发现模块不存在,自动从服务器加载这个模块及依赖

    有没有成熟的,松散耦合的解决方案?最好是兼容node.js,例如直接用require("module")这样的方式就可以。

    有一个browserify可以,还有一个webpack,但似乎需要最终打包成一个文件。
    web components应该可以解决这种问题,但是太超前了
    meteor也太超前了

    求一种简单稳定的解决方案
    5 条回复    2016-01-13 15:54:27 +08:00
    sun391
        1
    sun391  
       2013-06-13 10:04:05 +08:00 via iPhone
    显然要打包的,几个文件倒不是关键,但是要一起加载全。

    可以参考我自己搞过的一个 https://github.com/sunlt/stitcher
    refresh
        2
    refresh  
    OP
       2013-06-13 10:32:36 +08:00
    @sun391 一起加载全显然不合理,大点web app,按需加载比较好。
    建议项目加上中文的readme,呵呵,要不就commit也是英文 :P
    sun391
        3
    sun391  
       2013-06-13 11:44:50 +08:00   ❤️ 1
    @refresh 按需加载体验不好,需要用户不时的等待,索性一起加载全反倒好些,我做过最大的webapp js+模板 源码1000k+ ,合并、压缩、gzip过后也就200K不到,完全可以接受。

    原先就是按需加载的,粒度分很细,结果就是需要不停的等待。
    jinwyp
        4
    jinwyp  
       2013-06-21 13:58:25 +08:00   ❤️ 1
    其实动态加载问题很多, 用户体验也不好
    imdoge
        5
    imdoge  
       2016-01-13 15:54:27 +08:00
    @sun391
    请教一下, browserify 是不是不能按需加载呢?编译的时候全打包成一个文件了
    另外如果是 SPA 这样的,比如 angular 应用,如果很多个子页面,首次加载不是会加载很多可能根本用不上的 js 吗
    这么久了还回复不好意思哈。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1140 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:00 · PVG 07:00 · LAX 16:00 · JFK 19:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.