标签: amd

RequireJS和遗留应用程序

我有一个遗留应用程序,我已将部分应用程序重构为单独的backbone.marionette应用程序.我没有时间或预算来重构整个事情,我希望我的代码更容易管理,这让我想起了requirejs.

大多数文件都是缩小的并且在一起.

我可以将requirejs用于这种类型的混合解决方案,在那里我可以处理单独的主干模块并仍然可以访问现有的javascript吗?

javascript amd requirejs backbone.js

6
推荐指数
1
解决办法
973
查看次数

RequireJS加载脚本文件但传递的引用未定义

我有以下requireJS配置.当试图引用包/ ImagingX模块时,我总是得到未定义,即使我可以看到脚本已经加载到firebug中.如果我将有问题的js文件移动到baseUrl目录并删除package /它按预期工作.

我究竟做错了什么?

window.requirejs.config(
        {
            baseUrl: '/Scripts',
            paths: {
                "jquery": "./jquery-1.7.1.min",
                "jqx": "/Content/Plugins/jqWidgets",
                "package" : "/Scripts/packages"
            },
            urlArgs: "bust=" + (new Date()).getTime(),
            shim : {
                'jqx/jqxcore': ['jquery'],
                'jqx/jqxsplitter': ['jquery','jqx/jqxcore']
            }
        }
    );

    window.require(['jquery', 'layoutManager', 'container', 'package/ImagingX'],
        function ($,lm,container,px) {

            px.Focus();

            $(document).ready(function () {
                lm.Init(); // Sets up panes
                container.Init(); //Set up the containers
            });
    });
Run Code Online (Sandbox Code Playgroud)

更新15/10/2012

我现在急需解决这个问题,我已经把所有内容都删回了基础,所以这里是新的主文件:

(function () {

    requirejs.config({
        paths: {
            "packages": "packages"
        }
    });

    require([
            'packages/testmodule'
        ],
        function (tm) {
                alert(tm);
    });

})();
Run Code Online (Sandbox Code Playgroud)

以及名为packages的子文件夹中的模块.

define('testmodule',
function …
Run Code Online (Sandbox Code Playgroud)

amd requirejs

6
推荐指数
1
解决办法
2779
查看次数

在noConflict模式下使用jQuery在require.js中加载非AMD兼容的jQuery插件的正确方法?

假设我想将jquery与一个标准的,非amd启用的jquery插件一起使用,该插件已经使用标准闭包定义:(function($))( $.fn.myplugin = { ... } )(jQuery);并且它都位于一个js/libs/jquery/jquery.myplugin.js.

我用这个配置:

require.config({
  baseUrl: 'js/',
  paths: {
    'jquery':          'libs/jquery/jquery-noconflict', 
    'underscore':      'libs/underscore/underscore',
    'backbone':        'libs/backbone/backbone',
    'jquery-myplugin': 'libs/jquery/jquery.myplugin'
  },
  shim: {
    'backbone': {
      deps: ['underscore', 'jquery'],
      exports: 'Backbone'
  },
  'jquery-myplugin': {
    deps:  ['jquery'] 
  }
});
Run Code Online (Sandbox Code Playgroud)

我在无冲突模式下加载jQuery,因为libs/jquery/jquery-noconflict.js我不想污染全局命名空间:

define(['libs/jquery'], function () {
  return jQuery.noConflict(true);
});
Run Code Online (Sandbox Code Playgroud)

这就是我加载我的主app.js的方式:

define([
  'jquery',
  'underscore',
  'backbone',
  'jquery-myplugin'],
function($, _, Backbone, MyPlugin){
  //MyPlugin is always undefined, not even sure if 
  //I should be passing it here if it only extends …
Run Code Online (Sandbox Code Playgroud)

amd requirejs

6
推荐指数
1
解决办法
4096
查看次数

我可以拥有RequireJS模块的多个实例吗?

我显然缺少一些概念/理解,绝大多数是javascript OO基础知识!

我喜欢使用RequireJS,现在我的网络应用程序看起来更像是一个结构化的应用程序,而不是一堆疯狂的代码.

我正在努力了解如何/如果可能的话.

我有一个模块作为基础数据服务模块,名为dataservice_base,如下所示:

define(['dataservices/dataservice'], function (dataservice) {

    // Private:     Route URL
    this.route = '/api/route-not-set/';
    var setRoute = function (setRoute) {
        this.route = setRoute;
        return;
    }

    //  Private:    Return route with/without id 
    var routeUrl = function (route, id) {
        console.log('** Setting route to: ' + route);
        return route + (id || "")
    }

    //  Private:    Returns all entities for given route
    getAllEntities = function (callbacks) {
        return dataservice.ajaxRequest('get', routeUrl())
        .done(callbacks.success)
        .fail(callbacks.error)
    };

    getEntitiesById = function (id, callbacks) …
Run Code Online (Sandbox Code Playgroud)

javascript amd requirejs

6
推荐指数
1
解决办法
6030
查看次数

AngularJS - 使用RequireJS或内置的模块化开发?

我一直在写一个angularjs应用程序,我有一些控制器,我已经放在1 JS文件中.我希望有一些更模块化的东西,并将我的控制器分成自己的文件.

我想到了RequireJS,但这是推荐的方式吗?或者angularjs是否提供了其他内容以及任何解释位置的线索?

也有所有这些文件进行调试是伟大的,但一旦生产建设需要确实angularJS提供某种合并的模块为1个文件,结果最小化?

如果有人能解释最好的方法,那将是非常有帮助的.

谢谢

amd requirejs angularjs

6
推荐指数
1
解决办法
4440
查看次数

requireJS - 多页垫片中不匹配的匿名define()模块

我在这里遵循多页垫片共享模式:https: //github.com/requirejs/example-multipage-shim

我使用相同的common.js并且设置非常相似且简单:

<script src="js/library/requirejs/require.min.js"></script>
<script>
require(['./js/config/common'], function (common) {
  //go on...
});
</script>
Run Code Online (Sandbox Code Playgroud)

一切都很好,我可以继续在require闭包内运行操作,但我一直在Firefox中抱怨错误,抱怨匿名的define()模块与上面的代码不匹配.鉴于它是多么简单,而且我正在按照示例模式进行操作,我有点困惑,为什么我得到它.我没有在任何地方使用define().requireJS中的某些内容在过去24天内发生了变化(因为多页git repo已更新)?

amd requirejs

6
推荐指数
1
解决办法
7995
查看次数

如何使用gulp构建JavaScript包?

我想使用gulp来构建JavaScript文件包.

例如,我的项目中有以下结构:

  1. /vendor/vendor1/vendor1.js
  2. /vendor/vendor2/vendor2.js
  3. /js/includes/include1.js
  4. /js/includes/include2.js
  5. /js/bundle1.js
  6. /js/bundle2.js

供应商包括(1-2),本地包括(3-4)和捆绑文件(5-6).

供应商包括只是与bowercomposer一起安装的第三方JavaScript库.它们可以是CommonJS,AMD或者只是一个普通的jQuery插件.

我想在bundle文件中指定依赖关系,如下所示:

/js/bundle1.js

(function() {

    // Vendor includes.
    include('vendor1');
    include('vendor2');

    // Local includes.
    include('includes/include1.js');
    include('includes/include2.js');

    // Some code here.

})();
Run Code Online (Sandbox Code Playgroud)

我希望gulp处理这个源文件并创建一个最终的分发文件(bundle),确保所有依赖项(包括)在一个文件中合并在一起.所以我可以从我的HTML中包含foo.js,所有依赖项都可以使用.

我希望有一个清晰而强大的系统来管理项目中的所有依赖项并构建分发文件.

  • 我怎样才能做到这一点?
  • 我应该为自己的脚本使用什么格式(AMD,CommonJS,其他)?
  • 如何在源包文件中指定依赖项?
  • 我如何建立分销?

javascript amd commonjs browserify gulp

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

如何在运行时"禁用"require.js?

我的团队和我有一个AngularJS应用程序,它不使用RequireJS,而是使用RequireJS 的现有站点的上下文中加载.在构建过程中,我将所有脚本缩小/连接成一个JS文件,其中包含某些供应商库,如Lodash,Moment等.

运行与父隔离的站点很好,但在父应用程序的上下文中,我得到了记录良好的错误:

Uncaught Error: Mismatched anonymous define() module: function () { return _; }
Run Code Online (Sandbox Code Playgroud)

我没有父应用程序的控制权,有没有办法在运行时 "禁用"RequireJS或将其配置为忽略我的脚本?

我们当前的解决方案是修改供应商库并删除AMD代码,但这是不受欢迎的,因为我们使用Bower(使用grunt-bower-install)并且希望自动更新依赖项而不是依赖于手动流程和自定义hacks .

javascript amd requirejs angularjs

6
推荐指数
1
解决办法
1098
查看次数

分发具有依赖项的可重用JavaScript模块的最佳方法是什么?

格式化JavaScript模块的方法有很多种:AMD,CommonJS,UMD,ES6,全局脚本.我已经看到了以他们想要的方式构建源代码的项目,并运行构建过程来生成包含所有上述格式的代码的dist目录.这具有以下优点:代码的用户可以选择最适合其环境的格式.

只要模块与其他模块没有依赖关系,此方法就可以正常工作.在模块必须导入其他模块的情况下,存在隐含的复杂性.例如,RequireJS使用的配置文件如下所示:

requirejs.config({
    paths: {
        'jquery': 'js/lib/jquery',
        'ember': 'js/lib/ember',
        'handlebars': 'js/lib/handlebars',
        'underscore': 'js/lib/underscore'
    }
});
Run Code Online (Sandbox Code Playgroud)

其他加载器具有映射导入路径的等效机制.

如果jQuery是依赖项,模块是否应该从路径'jquery'导入它?如果它所包含的系统将jQuery存储在路径'libs/jquery'中会怎么样?在这种情况下,包含jQuery的系统的作者是否有责任在导入路径的配置中提供别名?

这种质疑强烈建议真正可重用的模块必须提供以所有模块格式格式化的代码,并清楚地记录它所依赖的库(及其版本),并记录假定存在这些库的导入路径.

例如,我可以创作一个花哨的jQuery插件,我在AMD,CommonJS,ES6和全球变体中分发.我会记录这个插件依赖于通过路径'jquery_on_a_path_that_confuses_you'导入的jQuery 2.0版.该插件的潜在用户必须将插件复制到他的项目中,然后配置他的模块加载器或构建工具以在路径'jquery_on_a_path_that_confuses_you'中导出jQuery.

据我所知:

  • 导入路径的使用没有标准.
  • 没有标准方法可以向一段代码的用户表达依赖关系,版本和导入路径要求.
  • 处理冲突导入路径或加载库的多个版本没有标准的补救措施.

是否有任何处理这种奇怪安排的计划?对我而言,让模块系统不知道如何命名模块似乎有点疯狂.我错了吗?

javascript module amd commonjs

6
推荐指数
1
解决办法
728
查看次数

如何在VSCode中为Javascript AMD模块启用Intellisense

根据文件

通过了解您的代码,可以在项目文件夹中的CommonJS和AMD模块之间实现IntelliSense.

有没有人有关于如何使其工作的更多信息?我已经尝试将以下内容添加到我的工作区settings.json文件中,但没有快乐.

"javascript.validate.module": "amd"
Run Code Online (Sandbox Code Playgroud)

谢谢

javascript intellisense amd requirejs visual-studio-code

6
推荐指数
1
解决办法
1236
查看次数