Tag: amd

是否有可能在testing中设置amdefine,以便我不必在所有模块文件中定义它?

我有一套使用浏览器端,但testing服务器端与摩卡的对象。 我使用require.js进行AMD加载。 Require.js网站build议在服务器端使用amdefine来获取定义的模块在node.js中的这一点代码: if (typeof define !== 'function') { var define = require('amdefine')(module) } 好。 但是我必须把它放到我想在Node中使用的每个模块中。 在我的情况下,这意味着我不得不从我使用客户端(大部分)的任何代码中删除它。 我想知道是否有任何方法把我的testing中的代码块,所以我不必把它放在我的客户端代码。 在我的文件中只有testing需要的代码似乎很愚蠢 – 把它放在testing代码中更有意义。 但是,当我这样做,我得到一个错误: Error: amdefine with no module ID cannot be called more than once per file. at runFactory (/home/vmplanet/dev/alpha/web/node_modules/amdefine/amdefine.js:159:23) at define (/home/vmplanet/dev/alpha/web/node_modules/amdefine/amdefine.js:275:13) at Object.<anonymous> (/home/vmplanet/dev/alpha/web/assets/src/coffee/delta/dataLayer.coffee:4:3) at Object.<anonymous> (/home/vmplanet/dev/alpha/web/assets/src/coffee/delta/dataLayer.coffee:158:4) at Module._compile (module.js:456:26) at Object.loadFile (/usr/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:179:19) at […]

Javascript:在AMD(asynchronous模块定义)中是'require'同步方法吗?

在AMD(asynchronous模块定义)中是否需要同步? 如果是这样,是什么使这个规范asynchronous? 如果我在代码中间要求()(还没有加载),它会停止执行吗? 在说浏览器端。

是否已有用于支持Dojo AMD,NodeJS require和Browser window的预先存在的代码

我有一些代码,支持编写一个微库,并在Dojo AMD,NodeJS require()和浏览器正常窗口中加载它。[但是我想知道是否已经build立了这样的方法,我只是重新发明了轮子,或者如果代码是值得的。 我在互联网上做了一个很好的search。 我创build的代码是在https://gist.github.com/forbesmyester/5293746 ,如果人们有评论,很好,但我更有兴趣找出是否有适当的方法来做到这一点。

包装许多内部模块输出打字稿

我正在查看在节点内使用打字稿,目前我习惯通过纯粹使用内部模块的///<reference…/>语法来使用打字稿。 但是,对于较大的项目,这可能会变得笨重,因为您可以使用引用其他模块的模块来引用相关链接。 因此,对于这个节点项目,我正在考虑尝试将所有逻辑组件作为内部模块/类进行分组,所以它们将全部在内部互相引用,而通过一个外部模块公开它们,从而暴露底层类等。 这种方式的语法将非常类似现有的需要机制的节点,如: import database = require("my-external-db-module.ts"); var connection = new database.Connection(someUrl); 而不是 ///<reference path="my-internal-db-modules.ts" /> var connection = new Database.Connection(someUrl); 我想象的语法是这样的: ///<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 } 那么,围绕这类事情或其他任何类似的事情有什么最好的做法,或者每个人都坚持使用内部模块来做复杂的事情吗?

如何编写一个与Node.js,RequireJS一起工作的模块

我正在处理JSON / XML处理的JavaScript库。 我的图书馆工作在浏览器以及Node.js(与xmldom和xmlhttprequest模块)。 其中一名用户最近要求RequireJS支持。 我已经看了RequireJS / AMD的东西,认为这是一个很好的方法,所以我想提供这个。 不过,我想保留可移植性:我的库必须在浏览器(有和没有RequireJS)以及Node.js中工作。 而在浏览器环境中,我不依赖于xmldom或xmlhttprequest因为这些东西是由浏览器本身提供的。 我的问题是:如何实现我的库,以便它可以在浏览器以及Node.js中使用,而不需要RequireJS? 一点历史和我目前的解决scheme 我最初写我的浏览器库。 所以它只是创build一个全局范围的对象,并把它放在它的一切: var Jsonix = { … }; 稍后用户请求Node.js支持。 所以我补充说: if(typeof require === 'function'){ module.exports.Jsonix = Jsonix; } 我还不得不导入上面提到的几个模块。 我有条件地做了,取决于requirefunction是否可用: if (typeof require === 'function') { var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; return new XMLHttpRequest(); } 现在有了RequireJS这个故事。 如果RequireJS存在,那么require函数也存在。 但是,模块加载工作方式不同,我必须使用define函数等。我也不能只require东西,因为require在RequireJS有一个asynchronousAPI。 此外,如果我的库通过RequireJS加载,它似乎处理源代码,并检测require('something')即使我有条件地 if (typeof require === 'function' […]

是否可以在同一个Typescript项目中混合使用AMD和CommonJS模块

我试图将Durandal与使用Typescript的node.js服务器集成,以在服务器和客户端定义模块。 我遇到的问题是,Durandal强烈依赖RequireJS和AMD定义模块的方式,我不想在服务器端引入它,因为它使用RequireJS,所以我没有机会运行CommonJS-ish模块在客户端(默认为node.js)。 在棺材的最后一个钉子是,我发现没有办法定义哪些文件应该被编译为AMD模块,哪一个作为CommonJS由TSC – 这似乎是一个最简单的解决scheme。 我不认为分离客户端部分和服务器部分是一个选项,因为很多代码将是通用的两个部分。 所以,我的问题是三重的: 有没有在同一个Typescript项目中混合使用AMD和CommonJS模块的方法(最好使用NodejsTools) 如果没有,是否有办法强制Durandal使用CommonJS文件来加载视图/ viewmodels等等 如果这些都不可能的话,那么在node.js服务器上使用AMD模块是可能的(也是明智的 ) 任何想法,高度赞赏

在TypeScript中将类导出为Node.js模块

我熟悉TypeScript中的export关键字,以及两种使用TypeScript从Node模块中导出事物的规范方法(当然,也可以使用TypeScript模块,但是它们比我所寻找的更进一步): export class ClassName { } 和一系列 export function functionName () { } 但是,我通常写我的模块的方式,以便他们以后导入作为可实例化闭包,是: var ClassName = function () { }; ClassName.prototype.functionName = function () { }; module.exports = ClassName; 有没有一种方法,我可以使用TypeScript导出语法来做到这一点?