到目前为止我的设置:
<script src="/common/js/require.configure.js"></script>
<script src="/common/js/lib/require.js" data-main="/common/js/app.js"></script>
require.configure.js
var require = {
baseUrl: '/',
paths: {
"jquery": "/common/js/lib/jquery",
"fastclick": "/common/js/lib/fastclick",
"knockout": "/common/js/lib/knockout",
"common": "/common/js/scripts/common"
}
};
前三条路径显然只是我用于我的应用程序的库。最后一个文件&#34; common&#34;是我的应用程序的全局函数集合,如打开主菜单,向用户发送消息或绑定处理程序等。
app.js
define(["jquery", "knockout", "fastclick", "common"], function (){
});
我知道requireJS总是需要一个数据主文件来运行。但是上面的代码到底做了什么?我试图在线学习教程,但没有帮助。我猜测通过在数组中定义这些字符串,它会在配置文件中查找并加载到这些文件中,但这些文件如何被访问或使用?我猜测我可以简单地只需要&#34;要求&#34;那些相同的字符串,我的功能可以使用它们吗?
common.js (针对Stack Overflow进行了简化)
require(["knockout"], function (ko) {
var appViewModel = {};
appViewModel.loaded = ko.observable(false);
});
通过将所有内容包装在require()中,我认为这是注入需要淘汰的依赖项。
应用的第一页 - login.html(简化为S.O。)
在应用的第一页中,我使用以下
<script>
标记
require(["jquery", "knockout", "fastclick", "common"], function ($, ko, FastClick)
{
$(function(){
appViewModel.loginData = {
email : ko.observable(),
password : ko.observable()
};
});
});
尝试运行时产生的错误是
Uncaught ReferenceError: appViewModel is not defined
尽管事实上我已经包含了#34;普通&#34;在要求([])。
我在这里缺少什么?我认为我可能完全误解了&#34;要求&#34;和&#34;定义&#34;在requireJS中做,这对我来说是一个很好的答案基础。
答案 0 :(得分:1)
我想你想做那样的事情:
定义全局obj的模块
require(["knockout"], function (ko) {
window.appViewModel = {};
window.appViewModel.loaded = ko.observable(false);
});
模仿obj:
require(["jquery", "knockout", "fastclick", "common"], function ($, ko, FastClick)
{
window.appViewModel.loginData = {
email : ko.observable(),
password : ko.observable()
});