标签: amd

定义模块并使用RequireJS立即使用它们

我正在为使用RequireJS的应用程序编写一些测试.由于应用程序的工作方式,它希望通过调用获得一些类require.因此,对于测试,我有一些虚拟类,但我不想将它们放入单个文件中,仅用于此测试.我更喜欢define()在我的测试文件中手动设置它们,如下所示:

define('test/foo', function () {
    return "foo";
});

define('test/bar', function () {
    return "bar";
});

test("...", function () {
    MyApp.load("test/foo"); // <-- internally, it calls require('test/foo')
});
Run Code Online (Sandbox Code Playgroud)

这里的问题是这些模块的评估被推迟,直到脚本onload事件被触发.

1600左右的require.js开始:

//Always save off evaluating the def call until the script onload handler.
//This allows multiple modules to be in a file without prematurely
//tracing dependencies, and allows for anonymous module support,
//where the module name is not known until the script onload event
//occurs. If …
Run Code Online (Sandbox Code Playgroud)

javascript module amd requirejs

9
推荐指数
1
解决办法
2980
查看次数

如何将多个AMD模块捆绑在一个文件中?

AMD似乎是根据需要加载JavaScript模块的最佳实践.

这应该适用于大型Web应用程序,其中用户只使用一小部分可用功能.

我已经阅读了优化器,它将所有必需的模块连接成一个文件,我读过没有优化,即用异步请求加载每个模块.

两者似乎都不适合这种用例:使用请求加载每个模块可能会很快导致大量请求,而优化会强制您下载所有代码.

有没有办法将多个模块捆绑到一个文件中?

javascript amd

9
推荐指数
2
解决办法
4981
查看次数

requirejs + jqueryui = $ .widget未定义

我正在使用requirejs + jquery + jqueryui.我已经阅读了很多关于如何做到这一点的例子.我想我了解各种方法,在我看来,我的设置应该正常工作.但是,我偶尔会在依赖于jquery-ui的自定义模块中获得$ .widget未定义的错误.这是一种痛苦,因为它不一致且难以复制,因此我很难测试其他方法.

我没有填充所有的jquery插件,因为有很多.相反,我正在使用单独的requirejs调用加载jquery.然后,在回调中,我加载其余的东西.这样我就不必维护所有jquery插件的填充程序列表.

对于jquery-ui,我使用垫片使其依赖于jquery.然后我使用小部件工厂的所有自定义模块在其依赖项列表中都有"jquery-ui".

在我的模板中......

requirejs.config({
    baseUrl: ATHLETE.siteConfig.jsBaseUrl,
    paths: {
        'jquery': '//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min',
        'jquery-ui': '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min'
    },
    shim: {
        "jquery-ui": ['jquery']
    },
    waitSeconds: 15
});

requirejs(['jquery'], function($) {
    requirejs(['site'], function() {
        requirejs(['mypage']);
    });
});
Run Code Online (Sandbox Code Playgroud)

请注意,我在mypage.js之前加载site.js. 他们有一些共享的依赖项.在我的构建配置中,我从mypage.js中排除了site.js,因此共享依赖项被编译到site.js而不是mypage.js.因此,我需要在加载mypage.js之前完全加载site.js,否则require可能会尝试单独加载这些共享依赖项.

这是我的一个示例自定义模块,它依赖于jquery-ui.

define([
    'jquery',
    'jquery-ui'
],function($) {
    $.widget('ui.viewAllSponsorsWidget', $.ui.dialog, {
        options: {
            autoOpen: false,
            dialogClass: 'view-all-sponsor-dialog-wrap',
            draggable: false,
            modal: true,
            resizable: false,
            width: 370,
            height: 400
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

错误$ .widget未定义是由此的第5行和我的类似自定义模块引起的.再次,它真的不一致,很难再现.通常情况下,即使清除缓存,我也不会收到错误.任何人都可以想到在jquery-ui完全加载之前第5行可能会被执行的方式吗?

更新2013年8月16日

我已经能够跟踪这一点了.我创建了一个依赖于jquery和jquery-ui的简单模块.

define([
    'jquery',
    'jquery-ui'
],function($) {
    console.log('$.widget is …
Run Code Online (Sandbox Code Playgroud)

jquery-ui amd requirejs jquery-ui-widget-factory

9
推荐指数
1
解决办法
1万
查看次数

RequireJS:何时使用'paths'与'packages'

什么时候应使用pathspackages在RequireJS?是否有最好的做法,或者在我应该考虑使用其中一个的特定时间?

我跟着文档,我想出了这个:

// main.js
requirejs.config({
    enforceDefine: true,
    urlArgs: "bust=" + (new Date()).getTime(),
    baseUrl: "./js",
    waitSeconds: 7,
    paths: {
        "jquery":     [
                        'jquery'
                      ],
        "underscore": [
                        'underscore'
                      ],
        "backbone":   [
                        'backbone'
                      ],
        "handlebars":     [
                        'handlebars'
                      ]
    },
    shim: {
        "underscore": {
            deps: [],
            exports: "_"
        },
        "backbone": {
            deps: ["jquery", "underscore"],
            exports: "Backbone"
        },
        "handlebars": {
            deps: [],
            exports: "Handlebars"
        }
    } // End shim

}); // End config


// List all files; use 'define()' and not 'require()' …
Run Code Online (Sandbox Code Playgroud)

javascript frontend amd requirejs

9
推荐指数
1
解决办法
5676
查看次数

用于生产和缓存管理的SystemJS版本控制(requirejs urlArgs替代)

我想从requirejs迁移到SystemJS但是我没有找到解决方案,因为requirejs有模块版本控制.例如在生产(ASP.Net网站)中我设置了RequireJS,如下所示:

require.config({
            baseUrl: "@Url.Content("~/Scripts/")",
            urlArgs: "buildNumber=@(File.GetLastWriteTime(ViewContext.Controller.GetType().Assembly.Location).ToBinary().ToString() + typeof(Foundation.MvcApplication).Assembly.GetName().Version)",
            ...
});
Run Code Online (Sandbox Code Playgroud)

它保证在生产环境中重新发布项目后重新加载文件,并保持这种方式直到重新加载.

但是,我没有为SystemJS找到任何解决方案(因为SystemJS管理更多类型的模块,我想迁移到它).

有没有人在生产中使用SystemJS并遇到同样的问题,你知道SystemJS中的"urlArgs"参数(或插件)吗?

caching amd requirejs systemjs

9
推荐指数
1
解决办法
1953
查看次数

SystemJS(angular2.0):加载单独的文件与最小化一个大JS?

我对SystemJS有点困惑,它似乎自动单独加载文件,不编译并将这些最小化为一个大的js文件.

我认为最初的想法是要求不同的文件,虽然较小的是不好的做法?和一个首选的大型js文件(最小化)并生成.

这就是我现在安装SystemJS来加载单独文件的方法(见下文),现在这是推荐的方法吗?

   System.config({
            packages: {
                app: {
                    format: 'register',
                    defaultExtension: 'js'
                }
            }
        });
        System.import('app/main')
                .then(null, console.error.bind(console));
Run Code Online (Sandbox Code Playgroud)

amd commonjs systemjs angular

9
推荐指数
1
解决办法
3121
查看次数

在AMD Radeon上尝试使用OpenCL + Theano时,获取"pygpu已配置但无法导入"错误

我遵循了以下说明:

https://gist.github.com/jarutis/ff28bca8cfb9ce0c8b1a

但是当我尝试时:
测试文件中的THEANO_FLAGS = device = opencl0:0 python test.py 我收到错误:

错误(theano.sandbox.gpuarray):pygpu已配置但无法导入Traceback(最近一次调用最后一次):文件"/home/mesayantan/.local/lib/python2.7/site-packages/theano/sandbox/gpuarray/init .py",第20行,in

import pygpu
Run Code Online (Sandbox Code Playgroud)

文件"/ usr/src/gtest/clBLAS/build/libgpuarray/pygpu/init .py",第7行,in

from . import gpuarray, elemwise, reduction
Run Code Online (Sandbox Code Playgroud)

文件"/usr/src/gtest/clBLAS/build/libgpuarray/pygpu/elemwise.py",第3行,in

from .dtypes import dtype_to_ctype, get_common_dtype
Run Code Online (Sandbox Code Playgroud)

文件"/usr/src/gtest/clBLAS/build/libgpuarray/pygpu/dtypes.py",第6行,in

from . import gpuarray
Run Code Online (Sandbox Code Playgroud)

ImportError:无法导入名称gpuarray

我没有好主意.我是第一次使用这些.我正在研究Ubuntu 14.04 LTS.我该如何解决这个错误?

amd opencl theano

9
推荐指数
2
解决办法
1万
查看次数

带有requirejs/AMD的Webpack

我正在为现有项目开发一个新模块,该模块仍然使用requireJS进行模块加载.我正在尝试为我的新模块使用新技术,例如webpack(允许我使用es6导入器使用es6加载器).似乎webpack无法与requireJS语法协调.它会说:"找不到模块:错误:无法解决".

问题:Webpack不会捆绑带有requireJS/AMD语法的文件.
问题:有没有什么方法可以让webpack在requireJS上玩得很好?

我的最终输出必须是AMD格式才能让项目正确加载它.谢谢.

javascript frontend amd requirejs webpack

9
推荐指数
1
解决办法
1万
查看次数

下载适用于 windows 和 linux 的 OpenCL AMD APP SDK 3.0

我想下载适用于 Windows 和 Linux 的 OpenCL AMD APP SDK 3.0 的独立版本。

amd opencl pyopencl amd-app

9
推荐指数
1
解决办法
3万
查看次数

每个脚本文件只能有一个匿名定义调用

我正在使用 loader.js 创建摩纳哥编辑器,但在控制台中出现两次错误“每个脚本文件只能有一个匿名定义调用”。

<script src="/monaco-editor/min/vs/loader.js"></script>
Run Code Online (Sandbox Code Playgroud)

创建编辑器的代码

require.config({ paths: { 'vs': '/monaco-editor/min/vs' }});
 require(['vs/editor/editor.main'], function() {                
    monacoEditor= monaco.editor.create(document.getElementById('coding-editor'), {
        value: [
        'function x() {',
        '\tconsole.log("Hello world!");',
        '}'
    ].join('\n'),
    language: 'javascript'
    });
 });
Run Code Online (Sandbox Code Playgroud)

我尝试搜索该问题并找到以下相关答案:

您正在加载的某些代码正在使用匿名模块 ID 调用定义。你可以:

通过 AMD 加载器加载该代码(即手动需要它),以便 AMD 加载器创建标签<script>

在 AMD 加载程序之前加载该代码(即定义对该代码段不可用)

在该脚本的评估期间取消设置定义(即,如果您使用标签加载它<script>,则在之前取消设置定义并在之后恢复它)

尝试取消设置define.jquery,据我所知jquery可能会在定义函数上检查它

这个页面已经有很多 jquery 了,我之所以理解这一点是因为 jQuery。请帮助一些人通过例子让我理解。谢谢

javascript amd visual-studio-monaco monaco-editor

9
推荐指数
1
解决办法
5990
查看次数