Aurelia Element装载问题

时间:2016-05-21 13:53:07

标签: aurelia systemjs jspm

我们的环境已经设置了私有git存储库并配置了jspm来从此存储库安装软件包。 repo有一个.js,.html和.css文件。 Jspm将所有文件放入一个文件夹中,并在名称后附加@master以反映分支,并将其全部存储在我机器上预配置的jspm_packages位置。它还在文件夹旁边添加了第二个@master.js文件,其中包含导出语句(我自己没有创建此文件)。

这些文件代表我想在我的aurelia应用程序中使用的自定义元素。视图模型有一个.js,视图有一个.html(和.css文件)。当我去使用自定义元素时,我得到一个404,找不到文件,因为system.js正在寻找一个不存在的@master.html文件。

Jspm似乎引用了config.js中的@master.js文件,不知怎的,假设在Aurelia中有一个@master.html文件?使用jspm安装软件包时,只创建了@master.js文件。原始.html文件确实存在并存在于我上面提到的文件夹中,但是@master.html文件没有,我不确定1)该文件的用途和2)为什么它的原因被引用。我的代码中没有对@master.html的引用。

我甚至不确定这是JSPM问题,Aurelia问题,System.js问题还是它们的某些组合?

其他人对这些技术有类似的经历吗?

谢谢, 克里斯

1 个答案:

答案 0 :(得分:0)

从本质上讲,Aurelia相信你将你的repo导入为自定义元素,所以当你导入@master.js时,它正在寻找匹配的"视图"它假设的是一个视图模型。

听起来您需要将存储库构建为插件。在顶层添加index.js文件并使其负责运行configure函数,该函数应该使您想要全局资源的组件。确保您的package.json指向您的main.js作为' main'。之后,您需要在index.js文件中添加.plugin(' your-package-name'),就像任何其他插件一样。

示例import {Options, GLOBAL_OPTIONS, DIRECTION} from './options'; import {Dragula} from './dragula'; import {moveBefore} from './move-before'; export {Dragula, Options, DIRECTION, moveBefore}; export function configure(config, callback) { let defaults = new Options(); config.container.registerInstance(GLOBAL_OPTIONS, defaults); if (callback !== undefined && typeof callback === 'function') { callback(defaults); } config.globalResources(['./dragula-and-drop']); } 就像这样:

{{1}}

(摘自here