6

ゼプトをrequirejsで動作させることができないようです。

ここに私のファイルがあります

main.js

require.config({
  paths: {
    zepto: 'libs/zepto/zepto.min',
    underscore: 'libs/underscore/underscore-min',
    backbone: 'libs/backbone/backbone-min',
    cordova: 'libs/cordova/cordova-2.1.0',
    history: 'libs/history/history',
    historyZ: 'libs/history/history.adapter.zepto'
  },
  shim: {
        zepto: {
          exports: '$'
        },
        backbone: {
            deps: ['underscore', 'zepto']
        }}
});

require([

  // Load our app module and pass it to our definition function
  'app',
], function(App){
  // The "app" dependency is passed in as "App"
  App.initialize();
});

app.js

define([
  'zepto',
  'underscore',
  'backbone',
  'router' // Request router.js
], function($, _, Backbone, Router){
  var initialize = function(){
    // Pass in our Router module and call it's initialize function
    Router.initialize();
  }

  return {
    initialize: initialize
  };
});

router.js

define([
  'zepto',
  'underscore',
  'backbone',
  'views/dashboard'
], function($, _, Backbone, DashboardView){
  var AppRouter = Backbone.Router.extend({
    routes: {
      // Define some URL routes
        ''      : 'showDashboard',
    }
  });

  var initialize = function(){
    var app_router = new AppRouter;
    app_router.on('showDashboard', function(){
        // We have no matching route, lets just log what the URL was
        //console.log('No route:', actions);
        var dashboardView = new DashboardView();
        dashboardView.render();
      });
    Backbone.history.start();
  };
  return {
    initialize: initialize
  };
});

あなたは写真を手に入れます..しかし、これをすべて実行すると、Chromesコンソールに次のように表示されます。

GET http://localhost/SBApp/www/js/jquery.js 404 (Not Found)         require.js:1824

およびスクリプト エラー (括弧 bc を挿入したため、投稿できませんでした。)

Firebug のある Firefox では、scripterror を吐き出します。

だれかが require で zepto の設定に成功したことがありますか?助けを求めることができますか?

4

4 に答える 4

1

Zepto.js を変更する代わりに、「extend/zepto.js」ファイルを追加できます。

/**
 * extend Zepto
 */

define([
  'zepto'
], function() {

  "use strict";

  window.Zepto = Zepto
  // If `$` or `jQuery` is not yet defined, point them to `Zepto`
  '$' in window || (window.$ = Zepto)
  'jQuery' in window || (window.jQuery = Zepto)

  return Zepto;

});

次に、jqueryパスをextend/zepto次のように設定します。

require.config({
  paths: {
    'jquery': 'extend/zepto'
  }
})
于 2014-07-12T02:15:11.430 に答える
1

バックボーンには通常、「define(["underscore","jquery","exports"],..」が含まれているため、それを置き換えるだけで済みます。次に、zepto.js の最後に次のスニペットを追加しました。

// If `$` is not yet defined, point it to `Zepto`
window.Zepto = Zepto
'$' in window || (window.$ = Zepto)

if ( typeof define === "function" && define.amd ) {
  define( "zepto", [], function () { return Zepto; } );
}

うまくいくようです。バックアップとしてjqueryが必要な場合(これは汚いです)、zepto.jsファイルで「zepto」を「jquery」として定義し、requirejs.configでこれを行いました...

requirejs.config({
  paths: {
      // Jquery should be zepto, probably a better way to do this...
      jquery: RegExp(" AppleWebKit/").test(navigator.userAgent) ? '/js/vendor/zepto' : '/js/vendor/jquery.min',
      underscore: '/js/vendor/underscore.min',
      backbone: '/js/vendor/backbone.min'
  }
});

require(['jquery', 'underscore', 'backbone'], function($, _, Backbone) {
  // Stuff here...
});

しかし、そうすることで、jquery の backbone.js 定義ファイルを変更する必要がなくなり、IE のブラウザー サポートが導入されました...

于 2012-12-18T20:34:21.370 に答える
0

https://github.com/l-zhi/html5-backbone-boilerplateこのボイラープレートで webpack で使用できます

resolve: { alias: {
     "jquery": 'xxx/zepto.js' // or jquery.js for PC
}},
于 2016-05-29T03:19:59.293 に答える