Tag: 模块

终极JS模块解决scheme与UMD的依赖?

我在CommonJS编写的一些需要高质量UMD包装的JavaScript模块上进行维护和协作。 依赖来自npm但至less有CommonJS和AMD支持(或者我可以添加它)。 CommonJS版本继续npm UMD包装模块将被推到bower 包装必须在浏览器(AMD +全局)和Node.js(如果可能的话,任何其他CommonJS系统)中工作。 任何自动化应该最好发生使用Grunt(我很咕噜)。 我已经花了很多时间在谷歌上search,但这是一个巨大的混乱。 一些有希望的人不会削减它(或者我错过了一些完全可能的东西): browserify gluejs 咕噜-UMD 我到处都find这样的绝望构造: http : //rathercurio.us/building-umd-modules-with-dependencies-with-browserify ,但是我对这样的hackery并不是很酷。 任何好的提示呢? 我会采取任何指针或链接或提示。 编辑:澄清:最后一件事说,理想的解决scheme不应该要求我们手工组装大块的样板模板代码,并创build新的错误。 我冷静configuration和指定的东西虽然。

如何解决node.js中的模块caching警告(单例问题)?

接下来的另一个问题 ,我明白我面临一个模块caching警告问题 。 很明显,我的项目中创build了几个相同模块的实例。 我需要位于不同文件夹中的其他模块的模块: var mm = require("./myModule.js"); … var mm = require("../myDir/myModule.js"); … var mm = require("../../MyDir/myModule.js"); … 我一直在尝试使用一个对象创build一个myModule (singleton)的独特实例并导出它: var myModule = function() { if (!(this instanceof myModule)) { return new myModule(); } … }; … module.exports = new myModule(); 但是,这并不能解决问题。 什么是在node.js中声明单例的正确方法? 以及如何检索其他模块中的实例?

JavaScript中的Javascript模块

好的问题很简单。 我想使用两个JavaScript文件:一个在模块模式之后,另一个在调用第一个。 我使用Node.jstesting了所有的代码 当所有的代码在一个文件中的作品,但如果我把代码分成两个文件,我得到一个错误。 代码如下: // module.js var testModule = (function(){ "use strict"; var counter = 0; return { incrementCounter : function(){ return counter++; }, resetCounter : function(){ console.log("Last Counter Value before RESET :" + counter); counter = 0; }; }; })(); // script.js var testModule = require('./module.js'); // i'm not sure about require or […]

将node.js中的另一个模块replace为另一个模块

如果我有一个node.js应用程序有数百个引用模块的文件(比如下划线),并且我想用另一个模块(比如说lodash)来代替这个模块,那么做这个replace的一个显而易见的方法就是使用一个全局名称replace和switch从package.json文件中取出模块。 有没有办法只是改变名称引用的模块,以便当node.js看到require('moduleA')它实际上加载“moduleB”而不是? 现在我知道这会导致命名地狱,因为任何在项目上工作的人都会看到require('moduleA')并且不知道被加载的真正模块是'moduleB',所以最终你可能会想要第一个解。 我正在考虑的用例是,如果您想尝试一些API兼容模块的替代方法来测量每个模块的应用程序性能(例如)。

NodeJS中的提示模块重复input

我正在使用NodeJS及其CLI应用程序进行应用程序; 从用户获得input,我使用“提示”模块。 我可以使用它,但在input提示符的提示时,每个字符都会重复,但是输出很好! 代码如下。 请帮忙。 prompt.start(); prompt.get({ properties: { name: { description: "What is your name?".magenta } } }, function (err, result) { console.log("You said your name is: ".cyan + result.name.cyan); }); 图片:

导出一个节点模块作为唯一的实例

我正在使用restify在节点中编写一个基本的REST API框架。 为了支持这个,我有几个帮助对象,我导出和要求。 我无法理解如何以这样一种方式要求这些对象,即每个传入的HTTP请求使用唯一的助手对象实例。 实际上,我需要()模块在GET请求的范围之内,但是我觉得这不是最好的做法。 例如: helper.js var helper = function(){ this.foo = new Date().getTime(); return this; }; helper.prototype.test = function(){ return new Date().getTime(); }; module.exports = new helper(); main.js app.get("/", function(req, res){ var helper = require("./helper"); helper.test(); }); helper.test()工作原理:每个传入的请求都有它自己的帮助程序的作用域实例。 如果我需要请求范围之外的帮助程序文件,则由于节点caching所需文件的对象的方式,帮助程序对象内的数据将在请求之间共享。 但是,在这种情况下,helper.foo对于每个调用都是一样的,大概是因为require()调用通过“new”关键字接收1个实例。 我遇到这个问题时,我有一个帮助函数,使用随机string命名文件,但因为我已经声明它像(下),所有的文件被命名为相同的。 helper.prototype.fileName = random(10) + ".json"; 在请求范围内是否需要文件会产生任何负面影响? 我会想象,当处理高频率stream量时,对于每个呼叫请求文件都不是理想的。 当通过express或restify考虑多个传入的HTTP请求时,需要/导出模块的最佳实践是什么? 我应该确保我写的帮手不处理这些边缘情况吗?

无法导出函数expression式:“TypeError:xxx不是函数”

我试图按照模块的基本指南。 我已经创build了test_module.js var textFunction = function() { console.log("text"); }; exports = textFunction; 然后我尝试在我的app.js中使用它: var textFunction = ('./test_module'); textFunction(); 但是我得到一个错误: TypeError: textFunction is not a function 难道我做错了什么? 或者这是一个非常老的指导? PS:出口只有在我声明如下的情况下才有效: exports.text = function() { console.log("text"); }

tsconfig compilerOptions“module”:“system”not working

在angular2 5分钟的教程中,他们使用“system”作为tsconfig中的模块。 我有systemjs作为node_module,但是当试图启动我的服务器时,我得到的System is not defined ,从编译js文件,看起来像这样的第一行: System.register(['http', 'express', './config/index', 'path'], function(exports_1) { 为什么System未定义,即使我把它作为一个节点的依赖? 我试图改变它commonjs,然后编译的js看起来更简单。 但是,然后我在angular度应用程序中得到错误。 我为了与SystemJs一起工作而错过了什么? 编辑 我想我解释我的问题是不好的。 从导入模块更改为我的server.ts文件“JavaScript风格”( var http = require('http'); )我猜“打字稿样式”( import * as http from 'http'; ) import * as http from 'http';我开始得到错误上面指定。 当做它的JavaScript风格编译js看起来就像ts( var http = require('http'); )然而,当它做“打字稿风格”它被编译与模块导入使用系统(指定的代码行以上)。 所以当我试图启动节点服务器而不是在浏览器中出现这个错误。 我尝试更改编译选项“模块”为“commonjs”而不是“系统”在tsconfig.json,这样做会导致浏览器错误 ( 这个错误 ,只有解决scheme似乎不适合)一些奇怪的原因,所以我想我会尝试与“系统”。 但后来我遇到了没有定义System的问题。 那么在启动节点服务器时如何访问系统呢?

导入目录的索引文件无法正常工作

application.js文件的下列内容报告“home”被导入的是未定义的。 import {home} from "./routes/index" console.log(JSON.stringify(home, null, 4)) index.js的内容如下: export * from "./home.js" home.js的内容如下: export const type = "GET" export const route = "/" export const middleware = []; export const action = function(req, res) { res.send("Testing custom routes"); } 目录结构的图片如下所示:

nodejscallback使用module.exports

我从NodeJS开始,并试图了解callback如何与module.exports相关。 我有两个NodeJS文件。 s1.js接收input字段消息并将结果传回。 s1.js通过module.exports公开 start.js包含s1.js(通过require),并接收我想在程序中使用的结果 start.js var s1=require('./s1.js'); var r1; s1.test("Leon", function(err, result) { if (err){console.log("Error occurred "+err);} console.log("Callback after s1.test execution "+result); r1=result; } ); console.log("result "+r1); console.log("end"); s1.js module.exports.test=function test(msg,result){ result="Hello "+msg; console.log("Inside s1.js – "+result); }; 当我执行start.js时,结果如下 Inside s1.js – Hello Leon result undefined end 正如所料,结果是未定义的,因为s1.test的callback尚未完成。 我不明白的是为什么从来没有达到s1.test的callback。 有任何想法吗? 谢谢莱昂