Javascript DataJS库未在RequireJS中加载
我是新来的RequireJS,所以这可能是一个愚蠢的问题 我正在使用requirejquery 我想将库作为模块加载。它是一个独立的库,不依赖于jQuery 这是我的HTML文件start.htm的外观:Javascript DataJS库未在RequireJS中加载,javascript,jquery,requirejs,amd,datajs,Javascript,Jquery,Requirejs,Amd,Datajs,我是新来的RequireJS,所以这可能是一个愚蠢的问题 我正在使用requirejquery 我想将库作为模块加载。它是一个独立的库,不依赖于jQuery 这是我的HTML文件start.htm的外观: <html> <head> </head> <body> <script type="text/javascript" src="Scripts/Loader.js"></script> </body>
<html>
<head>
</head>
<body>
<script type="text/javascript" src="Scripts/Loader.js"></script>
</body>
</html>
(function (window, undefined) {
var script = document.createElement('script');
script.async = true;
script.src = "scripts/require-jquery.js";
var entry = document.getElementsByTagName('script')[0];
entry.parentNode.insertBefore(script, entry);
script.onload = script.onreadystatechange = function () {
var rdyState = script.readyState;
if (!rdyState || /complete|loaded/.test(script.readyState)) {
require([
"jquery",
"scripts/datajs-1.1.0"
],
function (jQueryHandle, odata) {
alert(odata);
});
script.onload = null;
script.onreadystatechange = null;
}
};
})(window);
(function (window, undefined) {
var datajs = window.datajs || {};
var odata = window.OData || {};
// AMD support
if (typeof define === 'function' && define.amd) {
define('datajs', datajs);
define('OData', odata);
} else {
window.datajs = datajs;
window.OData = odata;
}
/* -------------------- */
})(this);
这是我的文件结构:
Project
|
|----- start.htm
|
|----- Scripts
|
|----- datajs-1.1.0.js
|
|----- require-jquery.js
|
|----- loader.js
我认为datajs库支持AMD,因为这是该库的外观:
<html>
<head>
</head>
<body>
<script type="text/javascript" src="Scripts/Loader.js"></script>
</body>
</html>
(function (window, undefined) {
var script = document.createElement('script');
script.async = true;
script.src = "scripts/require-jquery.js";
var entry = document.getElementsByTagName('script')[0];
entry.parentNode.insertBefore(script, entry);
script.onload = script.onreadystatechange = function () {
var rdyState = script.readyState;
if (!rdyState || /complete|loaded/.test(script.readyState)) {
require([
"jquery",
"scripts/datajs-1.1.0"
],
function (jQueryHandle, odata) {
alert(odata);
});
script.onload = null;
script.onreadystatechange = null;
}
};
})(window);
(function (window, undefined) {
var datajs = window.datajs || {};
var odata = window.OData || {};
// AMD support
if (typeof define === 'function' && define.amd) {
define('datajs', datajs);
define('OData', odata);
} else {
window.datajs = datajs;
window.OData = odata;
}
/* -------------------- */
})(this);
我做错了什么?我认为这是定义([..)而不是要求([..使用requirejs我有以下代码:
<script type="text/javascript" src="0.1/Clientscripts/requirejs/2.1.11/require.js"></script>
<script type="text/javascript">
requirejs.config({
'baseUrl': '0.1/Clientscripts/',
'paths': {
'datajs':'datajs/1.1.2/datajs.min',
'OData':'datajs/1.1.2/datajs.min'
},
'shim': {
'OData':['datajs']
}
});
</script>
这里可以访问datajs和OData对象
就个人而言,我认为有多个“路径”——指向同一个文件的条目——有点尴尬
如果你能说:
'paths': { 'datajs':'path/to/datajs',...
//and then
require(['datajs/core','datajs/OData'],...
但话说回来……没有什么是完美的:)谢谢你,男人似乎在工作,我一直在努力,但我不知道它是如何工作的:但工作这应该被接受为答案……它也帮助了我!对于我在这里提出的观点,关于什么是更好的名字,它不符合定义或要求。