[英]How to use RequireJS with Knockout
到目前為止,我的設置:
<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"
}
};
頂部的三個路徑顯然只是我在應用程序中使用的庫。 最后一個文件“ common”是我的應用程序全局功能的集合,例如打開主菜單,向用戶提供消息或綁定處理程序等。
app.js
define(["jquery", "knockout", "fastclick", "common"], function (){
});
我知道requireJS總是需要一個數據主文件才能最初運行。 但是上面的代碼實際上是做什么的? 我試圖在線學習教程,但沒有幫助。 我猜想是通過在數組中定義這些字符串,它會在配置文件中查找並加載到這些文件中,但是這些文件如何被訪問或使用? 我猜想我可以然后簡單地“要求”這些相同的字符串,它們將在我的函數中提供給我使用嗎?
common.js (簡化為堆棧溢出)
require(["knockout"], function (ko) {
var appViewModel = {};
appViewModel.loaded = ko.observable(false);
});
通過將所有內容包裝在require()中,我認為這注入了需要剔除的依賴項。
應用程序的首頁-login.html(已簡化為SO)
在應用程序的第一頁中,我定義了一個<script>
標簽,內容如下
require(["jquery", "knockout", "fastclick", "common"], function ($, ko, FastClick)
{
$(function(){
appViewModel.loginData = {
email : ko.observable(),
password : ko.observable()
};
});
});
嘗試運行時產生的錯誤是
Uncaught ReferenceError: appViewModel is not defined
盡管我在require([])中包含了“ common”。
我在這里想念什么? 我認為我可能完全誤解了requireJS中的“ require”和“ define”的作用,因此這將成為回答我的良好基礎。
我想你想做這樣的事情:
定義全局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()
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.