我正在尝试在Spine.js应用中使用elycharts。 Elycharts monkey-patches jQuery添加$('...')。chart(...)。不幸的是,我只是得到一个错误,说$没有功能“图表”。
因为这是我的第一个Spine.js应用程序,所以我使用spine.app生成它。这使用jQuery作为NPM模块。 Elycharts不是CommonJS友好的,因此必须包含在slug.json的“libs”部分中。根据Spine文档(参见Hem documentation中的slug.json),“libs”中的任何文件都会在“依赖项”中的任何内容之前加载。所以我很确定问题是elycharts是在jQuery之前加载,试图做它的猴子补丁,但由于$尚未定义,它会无声地失败。
有没有人看到类似的问题,使用“libs”依赖于已经包含在NPM中的库?有没有办法更精细地控制除libs之外的spine.js中的加载顺序 - >依赖
答案 0 :(得分:0)
对我而言,“不太好”的解决方案是:
<script type="text/javascript">
var jQuery = require("jqueryify");
var exports = this;
jQuery(function(jQuery){
// load jquery dependant libraries
$.getScript("//cdnjs.cloudflare.com/ajax/libs/waypoints/1.1.6/waypoints.min.js", function() {
var App = require("index");
exports.app = new App({el: $("#wrapper")});
});
</script>
所以诀窍是在初始化应用程序之前加载jquery依赖库。 希望它可以帮到某人。
答案 1 :(得分:0)
我一直在寻找一种解决方案,将Twitter Bootstrap(也取决于jQuery)包含在spine.js应用程序中(使用脊椎脚本生成)。我发现的最好的就是:只需将jqueryify
替换为jquery.js
!
删除以下行:
./app/lib/setup.coffee:3:require('jqueryify')
./package.json:9: "jqueryify": "~0.0.1",
./public/index.html:9: var jQuery = require("jqueryify");
./slug.json:5: "jqueryify",
然后将jquery.js
和您的javascript库放入app/lib
并将其添加到slug.json libs
数组中:
"libs": [
"app/lib/jquery.js",
"app/lib/jquery-dependent-3rd-party-lib.js"
]
瞧!
P.S。对于Twitter Bootstrap,我建议将整个bootstrap
目录放入public
目录(因为它还带有CSS和图像),并相应地从slug.json
引用它:
"libs": [
"app/lib/jquery.js",
"public/bootstrap/js/bootstrap.min.js"
]
这样更新Twitter Bootstrap库将是微不足道的 - 无需在整个地方分散文件。