hiloteam / Hilo

A Cross-end HTML5 Game development solution
https://hiloteam.github.io/
MIT License
5.93k stars 863 forks source link

amd加载模块, 无法直接引入 #139

Closed zhangrunhao closed 5 years ago

zhangrunhao commented 5 years ago
  1. 使用requirejs无法直接引入, 需要指定模块名称.

  2. 在打包后的工具中含有, 匿名模块, 但是没有任何返回值.

  3. 必须通过指定名称才可以引入. 怀疑关于amd规范的打包, 有问题.

require.config({
  baseUrl: '../../',
  paths: {
      // 'hilo/core/Hilo': 'common/hilo-amd', // 正常
      'Hilo': 'common/hilo-amd', // 无法引入, 但是在hilo-amd.js中, 有定义的匿名模块, 无返回值
  }
})

require(['Hilo'], function (Hilo) {
  console.log(Hilo) // undefined
})
zhangrunhao commented 5 years ago

通过指定module_id 的方式, 可以正常引入Hilo 但是, 无法正常使用功能

zhangrunhao commented 5 years ago

尝试通过使用,具名的方法, 以此引入,

  paths: {
      'hilo/core/Hilo': 'common/hilo-amd',
      'hilo/core/Class': 'common/hilo-amd',

      'hilo/util/Ticker': 'common/hilo-amd',
      'hilo/view/Stage': 'common/hilo-amd',
      'hilo/loader/LoadQueue': 'common/hilo-amd',
  }

但是在加载hilo/loader/LoadQueue时报错.Uncaught Error: Load timeout for modules: hilo/loader/LoadQueue

06wj commented 5 years ago

amdTest.zip 你按照这个测试文件写

zhangrunhao commented 5 years ago

amdTest.zip 你按照这个测试文件写

我认为, 打包之后的文件, 还是存在问题, 这个示例中, hilo/hilo中 包含了, 所有的模块. 在require.config是直接引入的. 而不是引入的hilo-amd.js 如果单独引入hilo-amd-js, 是无法使用amd规范的.

06wj commented 5 years ago

hilo/hilo只是指定模块路径。。具体加载哪个文件是看你引了哪个模块。。

zhangrunhao commented 5 years ago

是否有方法, 可以只引入hilo-amd.js,. 而并非把所有的hilo功能, 分成各个文件, 各个引入.

06wj commented 5 years ago

amd不就是为了分模块加载么,想所有模块直接用直就引standalone模式的吧。。

zhangrunhao commented 5 years ago

这..
的确是这样.. 我的问题, 没有理解好.

最后问一句, 如果就是为了分模块加载, 为什么要生成一个hilo-amd.js? 我理解这个文件存在的目的, 是为了, 直接引入所有的模块.

zhangrunhao commented 5 years ago

分开加载, 正常引入. 但不可只引入 hilo-amd.js,.