2014-09-29 32 views
1

因此,我将PNotify从bower导出到js文件夹。我用requirejs,包括我的图书馆不可能包含要求的PNotify

HTML

<script data-main="assets/js/app" type="text/javascript" src="assets/js/lib/require.js"></script> 

我的架构是这样的:

js 
--- app.js 
--- lib 
------ pnotify.core.js 
------ pnotify.desktop.js 
------ pnotify.buttons.js 
------ pnotify.callbacks.js 
------ pnotify.confirm.js 
------ pnotify.history.js 
------ pnotify.nonblock.js 
------ pnotify.reference.js 
------ jquery.js 
------ ... 

我添加主模块,该模块是pnotify.core

APP .JS

requirejs.config({ 
    base: '/assets/js', 
    paths: { 
     'jQuery': 'lib/jquery.min', 
     'underscore': 'lib/underscore-min', 
     'Backbone': 'lib/backbone', 
     'Modernizr' : 'lib/modernizr', 
     'PNotify' : 'lib/pnotify.core', 
     'LoginView' : 'views/login' 
    }, 
    shim: { 
     'jQuery': { 
      exports: '$' 
     }, 
     'underscore': { 
      exports: '_' 
     }, 
     'Backbone': { 
      exports: 'Backbone' 
     }, 
     'Modernizr': { 
      exports: 'Modernizr' 
     }, 
     'LoginView': { 
      exports: 'LoginView' 
     }, 
     'PNotify': { 
      exports: 'PNotify' 
     } 
    } 
}); 

PNotify已加载到我的页面中。通常情况下,PNotify与requirejs一起工作:https://github.com/sciactive/pnotify#using-pnotify-with-requirejs

我不知道如何导入所有模块,也许concat这些模块在一个文件pnotify.min.js?

在这里,当我打电话下requirejs.config

define(['jQuery', 'underscore', 'Backbone', 'Modernizr', 'LoginView', 'PNotify'], function ($, _, Backbone, Modernizr, LoginView, PNotify) { 
    $(document).ready(function(){ 
     new PNotify({ 
      title: 'Desktop Notice', 
      text: 'If you\'ve given me permission, I\'ll appear as a desktop notification. If you haven\'t, I\'ll still appear as a regular PNotify notice.' 
     }); 
    }); 
}); 

我有这样的错误PNotify对象:Uncaught TypeError: undefined is not a function上线“新PNotify” ......

你有一些想法?

回答

1

当它们检测AMD/RequireJS,PNotify芯限定命名模块 “pnotify”,并且每个PNotify的模块定义诸如 “pnotify.module” 名称。以下示例显示了非阻塞 和带有RequireJS的桌面模块的用法。

所以我的错误是在这里

requirejs.config({ 
    base: '/assets/js', 
    paths: { 
     'jQuery': 'lib/jquery.min', 
     'underscore': 'lib/underscore-min', 
     'Backbone': 'lib/backbone', 
     'Modernizr' : 'lib/modernizr', 
     'PNotify' : 'lib/pnotify.core', 
      ^_____ 'replace by pnotify' 
     'LoginView' : 'views/login' 
    }, 
    ... 
-1

编译所有的模块到一个缩小的文件。

这些设置在Require.js

paths: { 
    'pnotify': 'lib/pnotify.min', 
    'pnotify.nonblock': 'lib/pnotify.min', 
    'pnotify.desktop': 'lib/pnotify.min, 
    'jquery' : 'lib/jquery' 
} 

define(['jquery', 'pnotify','pnotify.nonblock', 'pnotify.desktop', function($, pnotify){ 

    new PNotify({ 
     title: 'Desktop Notice', 
     text: 'If you\'ve given me permission, I\'ll appear as a desktop notification. If you haven\'t, I\'ll still appear as a regular PNotify notice.', 
     desktop: { 
      desktop: true 
     }, 
     nonblock: { 
      nonblock: true 
     } 
    }); 
}); 
为我工作