我已经开始使用webpack2(准确地说, v2.3.2 ),并重新创build我的configuration后,我一直遇到一个问题,我似乎无法解决。 我得到(提前抱歉难看的转储): ERROR in ./src/main.js Module not found: Error: Can't resolve 'components/DoISuportIt' in '[absolute path to my repo]/src' resolve 'components/DoISuportIt' in '[absolute path to my repo]/src' Parsed request is a module using description file: [absolute path to my repo]/package.json (relative path: ./src) Field 'browser' doesn't contain a valid alias configuration aliased with mapping […]
有没有办法创build一个JavaScript微型库(一个没有依赖关系的库),支持以下所有模块格式: asynchronous模块定义 CommonJS的 将库的导出作为全局名称空间对象公开(无加载器)
我正在学习.js和一些更有经验的人提到,他们使用CommonJS处理保持js代码组织(因为没有“模块”function)。 我看着Quora,但它解释了这个组织 ,这是目标,而不是我怎么使用它。
为什么不把它用作Javascript的通用组件模式,包括浏览器执行的Javascript? 一目了然,这似乎是模块化我目前正在进行的项目的一个好方法,它包括一个大的Javascript代码库,有很多组件,其中一些与其他组件交互。
在浏览器中加载CommonJS模块作为客户端JavaScript的最佳方式是什么? CommonJS模块将它们的function放在module.exports命名空间中,通常包含在服务器端脚本中使用require(pathToModule) 。 在客户端加载它们不能以同样的方式工作(需要被replace,需要考虑asynchronous性等) 我发现了模块加载器和其他解决scheme:Browserify,RequireJS,yabble等或简单地更改模块的方法。 你认为最好的方法是什么?为什么?
可能重复: JavaScript中的延期,承诺和未来有什么区别? 最近我一直在努力提高我的JavaScript应用程序的质量。 我采用的一种模式是使用单独的“数据上下文”对象为我的应用程序加载数据(以前我直接在我的视图模型中执行此操作)。 以下示例返回在客户端上初始化的数据: var mockData = (function($, undefined) { var fruit = [ "apple", "orange", "banana", "pear" ]; var getFruit = function() { return fruit; }; return { getFruit: getFruit } })(jQuery); 在大多数情况下,我们将从服务器加载数据,所以我们不能立即返回响应。 看来我有两个select来处理我们在API中的处理方式: 使用callback 回复一个承诺 。 以前我总是使用callback方法: var getFruit = function(onFruitReady) { onFruitReady(fruit); }; // … var FruitModel = function(dataContext, $) { […]
根据Node.js手册: 如果您希望模块导出的根目录是一个函数(如构造函数),或者如果要在一个赋值中导出一个完整的对象,而不是一次构build一个属性,则将其分配给module.exports,而不是导出。 给出的例子是: // file: square.js module.exports = function(width) { return { area: function() { return width * width; } }; } 并像这样使用: var square = require('./square.js'); var mySquare = square(2); console.log('The area of my square is ' + mySquare.area()); 我的问题:为什么这个例子不使用方形作为对象? 以下是否有效?是否使示例更“面向对象”? var Square = require('./square.js'); var mySquare = new Square(2); console.log('The area of my […]
有一些第三方的Javascript库有一些我想在Node.js服务器中使用的function。 (具体来说,我想使用我find的QuadTree JavaScript库)。但是这些库只是简单的.js文件而不是“Node.js库”。 因此,这些库不遵循Node.js对其模块所期望的exports.var_name语法。 据我所知,这意味着当你做module = require('module_name'); 或者module = require('./path/to/file.js'); 你最终将得到一个没有公共function的模块等。 那么我的问题是“如何将一个任意的javascript文件加载到Node.js中,以便我可以利用它的function,而不必重写它,以便它能够exports ? 我对Node.js非常陌生,所以请让我知道是否有一个明显的漏洞,我了解它是如何工作的。 编辑 :研究更多的东西,我现在看到Node.js使用的模块加载模式实际上是最近开发的加载Javascript库CommonJS标准的一部分。 它在Node.js的模块doc页面上说了这个,但是直到现在我才意识到这一点。 最终可能的结果是,我的问题的答案是“等到你的图书馆的作者开始写一个CommonJS接口或者做你该死的自己”。
我有一个脚本,我需要一个node.js脚本,我想保持JavaScript引擎独立。 所以,例如,我想要做的是: exports.x = y; 只有在node.js下运行 我怎样才能执行这个testing? 编辑:当发布这个问题时,我不知道node.js模块function是基于commonjs 。 对于具体的例子,我提出了一个更准确的问题: 脚本如何能够判断它是否被要求作为commonjs模块?
我有一些JavaScript“类”,每个都在自己的JavaScript文件中实现。 对于开发这些文件是单独加载,并为生产他们连接,但在这两种情况下,我必须手动定义一个加载顺序,确保B之后A如果B使用答:我打算使用RequireJS作为CommonJS Modules / AsynchronousDefinition为我自动解决这个问题。 有没有更好的方法来做到这一点,而不是定义每个导出一个类的模块? 如果没有,如何命名模块导出的内容? 一个模块“员工”出口class级“员工”,如下面的例子,对我来说感觉不够干 。 define("employee", ["exports"], function(exports) { exports.Employee = function(first, last) { this.first = first; this.last = last; }; }); define("main", ["employee"], function (employee) { var john = new employee.Employee("John", "Smith"); });