dgn*_*nin 4 javascript jquery requirejs
我正在尝试使用requireJS,但我想构建依赖关系的层次结构:main需求obr.platcom和obr.platcom要求obr(例如).
我有这种文件层次结构:
- index.html
-> js
- main.js
-> lib
- jquery.js
- require.js
-> obr [my own 'libraries']
- obr.js
- obr.platcom.js
Run Code Online (Sandbox Code Playgroud)
的index.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
<title>Platcom</title>
<script type="text/javascript" src="js/lib/jquery.js"></script>
<script data-main="js/main" src="js/lib/require.js"></script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
main.js
$(document).ready(function() {
require(["obr/obr.platcom"], function() {
obr.hola();
var myPlatcom = obr.platcom();
myPlatcom.test();
});
});
Run Code Online (Sandbox Code Playgroud)
obr.js
var obr = {};
obr.hola = function() {
alert('Hola OBR');
};
Run Code Online (Sandbox Code Playgroud)
obr.platcom.js
require(["obr.js"],function() {
obr.platcom = function(params) {
var that = {};
var test = function test() {
alert('Hola Platcom!');
}
that.test = test;
return that;
}
});
Run Code Online (Sandbox Code Playgroud)
如果我需要两个obr和所有工作中的obr.platcom文件main,但如果我使用这个嵌套样式我收到下一个错误:
Uncaught ReferenceError: obr is not defined main.js:3
Run Code Online (Sandbox Code Playgroud)
你知道我做错了什么吗?先感谢您.
好吧,你做错了几件事.
您需要指定要注入的依赖项作为参数.例如,require(["obr/obr.platcom"], function() {除非您指定如何调用所需模块,否则不会做太多工作.你应该需要这个:
require(["obr/obr.platcom"], function( obr ) {
Run Code Online (Sandbox Code Playgroud)
这样,您就知道所需对象在哪个变量中.
该obr.js变量是在全球范围内.你需要用他们在一个require或define函数调用.以下将有效:
define(function() {
var obr = {};
obr.hola = function() {};
return obr;
});
Run Code Online (Sandbox Code Playgroud)
您可能已经注意到上一个文件有些问题.
如果您希望在某处导入模块,则必须对其进行定义.所以你必须使用这个define功能,而不是require一个.并且该define函数必须返回一个对象.这是一个固定obr.platcom.js文件:
// If you don't use "define" for the obr.js file too, this won't work
define(['obr'], function( obr ) {
obr.platcom = function() {};
// Don't forget to return the obr object, or the require of
// the main file won't return anything
return obr;
});
Run Code Online (Sandbox Code Playgroud)这样,事情就以正确的方式完成.或者至少,require.js希望你做的事情.
我希望这能告诉你如何有效地使用require.js来轻松地分离模块中的代码:)
| 归档时间: |
|
| 查看次数: |
5524 次 |
| 最近记录: |