簡體   English   中英

如何在淘汰賽中使用RequireJS

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM