标签: amd

Howto bootstrap Backbone app与yeoman启用了require.js

我现在和自耕农打了一段时间.我想知道如何完成自举Backbone应用程序的启动并同时启用require.js.

yeoman init
Run Code Online (Sandbox Code Playgroud)

为我提供了一个可以使用AMD风格模块的设置.

yeoman init backbone:all
Run Code Online (Sandbox Code Playgroud)

为我提供了一个Backbone脚手架,但我必须在index.html中手动"包含"我的所有模型,集合等.

有两种方法可以同时拥有吗?

问菲利克斯

amd requirejs backbone.js yeoman

7
推荐指数
2
解决办法
4102
查看次数

包装许多内部模块以便在typescript中导出

我正在寻找在节点内使用typescript,我目前习惯通过///<reference.../>语法纯粹使用内部模块来使用typescript .但是对于较大的项目,这可能会变得难以处理,因为您可以使用引用其他模块的模块,这些模块都具有相互链接的引用.

所以对于这个节点项目,我正在考虑尝试将所有逻辑组件分组为内部模块/类,就像之前一样,因此它们将在内部相互引用,但是通过一个外部模块公开它们,这将暴露底层类等.

这种方式的语法与现有需要机制的节点非常相似,例如:

import database = require("my-external-db-module.ts");
var connection = new database.Connection(someUrl);
Run Code Online (Sandbox Code Playgroud)

而不是

///<reference path="my-internal-db-modules.ts" />
var connection = new Database.Connection(someUrl);
Run Code Online (Sandbox Code Playgroud)

我想像语法会是这样的:

///<reference path="all-my-internal-module-files-etc.ts" />
///<reference path="..." />
export module SomeExposingModule
{
   // Not quite sure what to put in here to expose the internal modules
}
Run Code Online (Sandbox Code Playgroud)

那么有什么样的最佳实践围绕这类事情或任何其他类似的东西,或者每个人都只是坚持使用内部模块来处理复杂的东西?

amd node.js typescript

7
推荐指数
1
解决办法
2587
查看次数

如何判断javascript库是否支持AMD

所以我开始学习如何使用requirejs并将其与其他一些可用的javascript库结合起来.据我所知,你需要填充所有非异步模块定义兼容的库(AMD),但除了通过库代码搜索"require"之外,还有一种更简单的方法可以找出哪些库支持AMD而哪些库不支持?作为一个例子我知道jquery支持AMD,但jqueryui没有,我只知道这是因为"有人告诉我".

javascript amd

7
推荐指数
1
解决办法
1475
查看次数

babel/6to5 - 导出模块时重复的代码

我正在使用Babel将ES6转换为ES5并且效果很好.唯一的问题是,一旦转换成每个模块重复这些行:

var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" …
Run Code Online (Sandbox Code Playgroud)

amd ecmascript-harmony ecmascript-6 gulp babeljs

7
推荐指数
1
解决办法
1509
查看次数

TypeScript + SystemJS使用JSON和Text插件

TypeScriptSystemJS一起使用,如何使用?导入JSON文件plugin-json

如果我写,System.import('myjson.json!json').then(...)那么它会异步导入它,而不是作为其一部分System.register([...]).

那么,我如何导入JSON文件作为一部分System.register([...])并说服TypeScript同意这一点?(没有then Promise语法).

注意: 我正在使用tsc旗帜-m system


更新:

一个可能的解决方案是使用-m umd选项tsc代替-m system,然后我可以执行以下操作:

/// <reference path="typings/requirejs/require.d.ts" />
var myJson = require('myJson.json!json')
Run Code Online (Sandbox Code Playgroud)

但是,仍在等待有关使用的答案-m system.

javascript amd typescript systemjs typescript1.5

7
推荐指数
1
解决办法
3353
查看次数

将现有的AMD模块导入ES6模块

我有一个现有的应用程序,我使用RequireJS定义AMD模块.我在我的项目中广泛使用了"text"和"i18n"插件for requirejs.我最近一直在试验ES6模块,并希望在我的应用程序中创建新模块时使用它们.但是,我想重用现有的AMD模块并在定义我的ES6模块时导入它们.

这甚至可能吗?我知道Traceur和Babel可以从ES6模块创建AMD模块,但这仅适用于不依赖于现有AMD模块的新模块,但我找不到重用现有AMD模块的示例.

任何帮助将不胜感激.这对我来说是一个阻止我开始使用所有ES6好东西.

谢谢

javascript module amd requirejs ecmascript-6

7
推荐指数
1
解决办法
3145
查看次数

Webpack加载器相当于使用XMLHttpRequest加载requirejs插件

我有一对requirejs插件,我想用webpack加载器替换它.

define('firstLoader', {
  load: function (name, parentRequire, onload, config) {
    var xhr = new XMLHttpRequest();

    xhr.addEventListener('load', function () {onload(this.responseText);});
    xhr.addEventListener('error', onload.error);
    xhr.addEventListener('abort', onload.error);

    var url = '...' + name;
    xhr.open('GET', url);
    xhr.send()
  }
})

define('jsonLoader', {
  load: function (name, parentRequire, onload, config) {
    //This is the nasty part.
    req(['firstLoader!' + name], function (text) {
      try {
        onload(JSON.parse(text));
      }
      catch (err) {
        onload.error(err);
      }
    })
  }
});
Run Code Online (Sandbox Code Playgroud)

最大的问题是缺乏对异步请求和动态需求的承诺.有没有解决方法没有转换(使用`System.load)或其他库(蓝鸟等)?

编辑

所以我对此采取了一个措施,现在我收到了一个错误

Module not found: Error: Can't resolve 'future/url'

当我去的时候require('jsonLoader!future/url').webpack是否允许加载器在运行时运行?这是更新的代码.

firstPlugin.js …

javascript amd loader webpack

7
推荐指数
1
解决办法
1174
查看次数

如何规避RequireJS加载全局模块?

我正在尝试从书签中加载JS文件.JS文件有这个包装模块的JS:

(function (root, factory) {
    if (typeof module === 'object' && module.exports) {
        // Node/CommonJS
        module.exports = factory();
    } else if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(factory);
    } else {
        // Browser globals
        root.moduleGlobal = factory();
    }
}(this, function factory() {
    // module script is in here

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

因此,如果网页使用RequireJS,则脚本在加载时不会导出全局.为了解决这个问题我暂时设置definenull,加载脚本,然后重置define为其原始值:

function loadScript(url, cb) {
    var s = document.createElement('script');
    s.src = url;
    s.defer = true; …
Run Code Online (Sandbox Code Playgroud)

javascript amd global-variables dynamic-script-loading requirejs

7
推荐指数
1
解决办法
967
查看次数

RequireJS模块的TypeScript编译生成行Object.defineProperty(exports,“ __esModule”,{value:true}); 如何摆脱它?

这是我的tsconfig.json文件的外观:

{
    "compileOnSave": true,
    "compilerOptions": {
        "module": "amd",
        "noImplicitAny": false,
        "removeComments": false,
        "preserveConstEnums": true,
        "strictNullChecks": true,
        "sourceMap": false
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个名为a.ts的打字稿文件,它是一个AMD模块(我正在使用requirejs),如下所示:

export function a() {
    var a = {
        b: 5
    };
    return a;
}
Run Code Online (Sandbox Code Playgroud)

编译后的Javascript文件如下所示:

 define(["require", "exports"], function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    function a() {
        var a = {
            b: 5
        };
        return a;
    }
    exports.a = a;
 });
Run Code Online (Sandbox Code Playgroud)

我需要生成的JavaScript文件为:

define(function () {
    "use strict";
    var a = {
        b: 5
    }; …
Run Code Online (Sandbox Code Playgroud)

javascript amd requirejs typescript tsc

7
推荐指数
1
解决办法
3039
查看次数

RequireJS绝对路径产生脚本错误

我有一个简单的文件,我正在使用requireJS加载依赖项define:

define([
    "dojo/_base/declare",
    "dojo/aspect",
    "local/path/to/myFile"
], function(
    declare,
    aspect,
    myFile
) { ...
Run Code Online (Sandbox Code Playgroud)

这应该工作,文件映射在requireJS配置中.

但是,如果我尝试使用绝对路径(完全相同的文件)访问其中一个文件:

define([
    "dojo/_base/declare",
    "dojo/aspect",
    "https://blah.com/absolute/path/to/myFile.js"
], function(
    declare,
    aspect,
    myFile
) { ... 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

"message":"错误:\" https://blah.com/absolute/path/to/myFile.js \"的脚本错误,需要:/home/test_vds_jasmine/test/modules/myFile-spec4.js \nhttp://requirejs.org/docs/errors.html#scripterror \nat /home/node_modules/requirejs/require.js:168:17\n\nmakeError@/home/node_modules/requirejs/require.js:168:17 \nnewContext/context.onScriptError@/home/node_modules/requirejs/require.js:1738:36 \n"个

我已经尝试了所有方式的绝对路径,包括有和没有https,有和没有.js扩展但是我画了一个空白,错误信息根本没有帮助.

我是以错误的方式呼唤绝对的道路吗?有没有人有这样做的经验?

我必须使用绝对路径调用某些文件,或者我只是在本地调用所有文件,这是有正当理由的.

javascript amd requirejs

7
推荐指数
1
解决办法
962
查看次数