标签: commonjs

如何在nodejs中对"私有"效用函数进行单元测试

我正在为nodejs应用程序编写一些测试.假设我有一个这样的模块:

module.exports = function myModule(moduleParam) {
    var someVar;
    ....
    ....
    function helper(param) {
        return param + someVar;
    }
    return {
        doSomething: function (bar) {
            ....
            ....
            var foo = helper(bar);
            ....
            ....
        }
    };
};
Run Code Online (Sandbox Code Playgroud)

假设'helper'函数仅在模块中有用,不应暴露给外部.

测试它的"最佳实践"是什么?(当然,我可以测试doSomething函数作为一个整体,但是这样,'helper'函数在特定情况下以'黑盒'的方式进行测试).

我正在使用nodeunit作为测试框架,但是我可以根据需要进行更改.

javascript unit-testing commonjs node.js

17
推荐指数
2
解决办法
5888
查看次数

打字稿模块创建AMD vs Common JS

任何打字稿专家都可以澄清在使用Typescript时何时以及为什么选择AMD vs Common JS进行模块创建?

module amd commonjs typescript

17
推荐指数
2
解决办法
5448
查看次数

Webpack:在窗口中导出到现有模块

我的目标是使用Webpack将隔离的组件导出到假定的全局对象中.

的index.html

<script>
   var MyApp = window.MyApp || {};
   MyApp.something = MyApp.something || {};
</script>
<script src="my-isolated-module.js"></script>

//
// other modules/components loaded here...
//

<script>
   MyApp.something.myIsolatedModule.run();
</script>
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我假设有一个全局对象/模块,它有一个属性something,它将附加其他模块.所以我想将我的孤立模块附加到全局MyApp.something对象而不破坏任何一个MyAppMyApp.something.

webpack.config.js

var webpack = require('webpack');
var UglifyJsPlugin = require('webpack/lib/optimize/UglifyJsPlugin');

module.exports = {
    target: 'web',
    context: __dirname + '/src/',
    entry: './main.jsx',
    output: {
        path: __dirname + '/dist/',
        filename: 'app.bundle.js',
        library: 'something',
        libraryTarget: 'var'
    },
    resolve: {
        extensions: ['', '.js', '.jsx']
    },
    module: {
        loaders: [ …
Run Code Online (Sandbox Code Playgroud)

javascript commonjs reactjs webpack

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

browserify如何处理循环依赖?

我正在考虑将一个基于浏览器的大型代码库移到CommonJS(它是一个用TypeScript编写的AngularJS 1.x应用程序).该应用程序具有循环依赖性,因此我认为RequireJS是不可能的.

Browserify如何处理循环依赖?是否存在不同类型的循环依赖关系?或者使用CommonJS/Browserify处理循环依赖的任何提示?

circular-dependency commonjs browserify

17
推荐指数
1
解决办法
641
查看次数

如何在浏览器中使用UMD而不需要任何其他依赖项

假设我有一个这样的UMD模块(保存在'js/mymodule.js'中):

(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ?     factory(exports) :
  typeof define === 'function' && define.amd ? define(['exports'], factory) :
  (factory((global.mymodule = global.mymodule || {})));
}(this, function (exports) { 'use strict';
    function myFunction() {
        console.log('hello world');
    }
}));
Run Code Online (Sandbox Code Playgroud)

如何在这样的HTML文件中使用此模块?(没有requirejs,commonjs,systemjs等......)

<!doctype html>
<html>
<head>
    <title>Using MyModule</title>
    <script src="js/mymodule.js"></script>
</head>
<body>
<script>
/* HOW TO USE myFunction from mymodule.js ??? */
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助.

html javascript commonjs requirejs systemjs

17
推荐指数
4
解决办法
7979
查看次数

如何在 ES6 模块节点应用程序中包含 commonjs 模块?

我有一个节点应用程序,我想以标准 ES6 模块格式(即,"type": "module"package.json, 和 using中)使用它importexport而无需转换为 ES5。但是我想利用一些较旧的库,例如使用 CommonJS /require格式的 express 和 socket.io 。将 CommonJS 模块组合到 ES6 应用程序中的选项是什么(截至 5/2020,Node 12.16.3)?

javascript commonjs node.js ecmascript-6 es6-modules

17
推荐指数
3
解决办法
7826
查看次数

node.js - 评估实时进程

有没有人使用现有的node.js REPL为自己设置这样的东西?我没想到要快速做到这一点.

我今天这样做的方式是使用emacs和这个:https: //github.com/ivan4th/swank-js

该模块由以下部分组成:

  1. 一个SLIME-js插件到emacs,结合js2-mode,让你只需在函数def的主体中的某个地方发出一个CMx,然后关闭函数的字符串到...

  2. 用Node.js编写的Swank-js服务器(是的,您可以从本地计算机直接评估到远程进程) - 它接收您评估的函数的字符串并实际上将其删除

  3. 整个部分允许您使用浏览器连接到该服务器上的另一个端口,然后让您在该浏览器上操作DOM(这非常了不起但不相关)

我的解决方案在emacs端使用SLIME-js我需要('swank-js')在我的app.js文件上

现在..我有几个关于我的解决方案或其他可能的问题和问题:

Q1:这有点过头了吗?有人有秘密的方式来评估从纳米到他的实时过程的东西吗?

Q2:我不得不改变swank-js评估的方式..它使用了某种黑魔法:


var Script = process.binding('evals').Script;
var evalcx = Script.runInContext;
....
this.context = Script.createContext();
for (var i in global) this.context[i] = global[i];
this.context.module = module;
this.context.require = require;
...
r = evalcx("CODECODE", this.context, "repl");
Run Code Online (Sandbox Code Playgroud)

据我所知,只是将全局变量复制到新的上下文中,并且在eval上,不会更改原始函数定义 - SOOO ..我只是使用简单的"eval"和IT WORKS.

你对此有何评论?

问题3:为了重新评估函数,它需要是一个GLOBAL函数 - 将所有函数定义都设置为全局(类似clojure)是不好的做法?你认为还有另一种方法吗?

eval swank commonjs node.js read-eval-print-loop

16
推荐指数
1
解决办法
3913
查看次数

使用带有CommonJS语法文件的Karma和RequireJS进行测试

我正在研究一个用CommonJS语法编写的角度应用程序,并使用grunt-contrib-requirejs任务的grunt任务将源文件转换为AMD格式并将其编译成一个输出文件.我的目标是使Karma与RequireJS一起工作,并将我的源文件和spec文件保存在CommonJS语法中.

我已经能够通过以下文件结构以AMD格式传递一个简单的测试:

-- karma-test
   |-- spec
   |   `-- exampleSpec.js
   |-- src
   |   `-- example.js
   |-- karma.conf.js
   `-- test-main.js
Run Code Online (Sandbox Code Playgroud)

和以下文件:

karma.conf.js

// base path, that will be used to resolve files and exclude
basePath = '';

// list of files / patterns to load in the browser
files = [
  JASMINE,
  JASMINE_ADAPTER,
  REQUIRE,
  REQUIRE_ADAPTER,
  'test-main.js',
  {pattern: 'src/*.js', included: false},
  {pattern: 'spec/*.js', included: false}
];

// list of files to exclude
exclude = [];

// test results reporter to use
// possible …
Run Code Online (Sandbox Code Playgroud)

javascript amd commonjs requirejs karma-runner

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

需要一个带webpack的模块

我使用Webpack来构建我的网站的JavaScript.

一切都很完美,但我想将require调用到模板中(动态添加).

我希望能够在构建之后需要一个模块.(require未定义到全局上下文中).

可能吗 ?

谢谢

javascript build require commonjs webpack

16
推荐指数
1
解决办法
8333
查看次数

如何导入ES6模块中的部分对象

反应文档中,我发现了这种导入PureRenderMixin的方法

var PureRenderMixin = require('react/addons').addons.PureRenderMixin;
Run Code Online (Sandbox Code Playgroud)

如何以ES6风格重写.我唯一能做的就是:

import addons from "react/addons";
let PureRenderMixin = addons.addons.PureRenderMixin;
Run Code Online (Sandbox Code Playgroud)

我希望有更好的方法.

javascript module commonjs browserify ecmascript-6

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