Optimization jQuery作为AMD模块并使用r.js进行优化

Optimization jQuery作为AMD模块并使用r.js进行优化,optimization,node.js,requirejs,js-amd,Optimization,Node.js,Requirejs,Js Amd,好吧,他就是那个人。我在AMD加载程序中使用curl.js,但我不太喜欢“cram”,因为它需要在unix上运行,而我是在Windows上开发的。因此,我们想到了RequireJS库中用于nodeJS的r.js适配器,因为node已经为Windows提供了二进制文件 现在,当前版本(1.6.4)中的jQuery不是有效的AMD模块(版本1.7),并且jQueryUI组件中存在依赖项,因此我不得不这样假装: curl( [js!Core/jquery.js] ) .then( functi

好吧,他就是那个人。我在AMD加载程序中使用curl.js,但我不太喜欢“cram”,因为它需要在unix上运行,而我是在Windows上开发的。因此,我们想到了RequireJS库中用于nodeJS的r.js适配器,因为node已经为Windows提供了二进制文件

现在,当前版本(1.6.4)中的jQuery不是有效的AMD模块(版本1.7),并且jQueryUI组件中存在依赖项,因此我不得不这样假装:

curl( [js!Core/jquery.js] )
    .then( function() {
        define('jquery', function() { return jQuery; });
    })
我的申请很满意。但是,使用r.js(版本0.26.0)在该部件上失败,出现以下错误:

Tracing dependencies for: boot
function (){return jQuery}

node.js:207
    throw e; // process.nextTick error, or 'error' event on first tick
          ^
ReferenceError: jQuery is not defined
at eval at <anonymous> (r.js:7468:30)
at main (r.js:770:33)
at callDefMain (r.js:840:18)
下面是完整的boot.js,供参考(coffeescript):


提前感谢您提供的任何关于捕获位置的提示…

正确。RequireJS在其全局
RequireJS()
(又称
require()
)函数上使用了不同的语法。RequireJs也没有内置“js!”插件。您可能必须在配置中包含指向它的路径。您还可以对非模块javascript文件使用RequireJS语法

另外:cram 0.2将支持使用Rhino的Windows环境。我们正在为cram 0.2编写测试,不久将发布它

RequireJS语法(删除js!前缀并包含.js扩展名):


哦,我想我知道那里发生了什么。RequireJS不支持基于promise的AMD加载,所以它不理解那些“then”和“next”函数,也不想在真正加载之前定义jquery……我能做些什么吗?谢谢,期待cram 0.2。
({
    appDir: '../',
    baseUrl: 'Scripts/',
    paths: {
        'link': '../../../Lib/@Javascript Libs/curl.js/src/curl/plugin/link.js'
    },
    dir: 'built',
    optimize: 'none',
    modules: [
        { name: 'boot' }
    ]
})
require([
    'link!styles/main.css'
    'js!Core/jquery.js!order'
    'js!Core/underscore.js!order'
    'js!Core/backbone.js!order'
]).then ->
    define 'jquery', -> jQuery

.next(['Router/MainRouter'])
.then (MainRouter) ->
    new MainRouter()
    Backbone.history.navigate('home') unless Backbone.history.start(
        pushState: false
    )
require([
    'link!styles/main.css'
    'order!Core/jquery.js'
    'order!Core/underscore.js'
    'order!Core/backbone.js'
], function (maincss, jQuery, underscore, backbone) {
    // do something here
});