Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 网页包';s的批量需求替代方案实施问题_Javascript_Regex_Angularjs_Webpack_Nw.js - Fatal编程技术网

Javascript 网页包';s的批量需求替代方案实施问题

Javascript 网页包';s的批量需求替代方案实施问题,javascript,regex,angularjs,webpack,nw.js,Javascript,Regex,Angularjs,Webpack,Nw.js,我正在用Webpack和Angular构建nw.js应用程序。 我想从这个样板中实现我在另一个plane angular应用程序中看到和使用的东西 下面的代码用于代码和模块组织,它做得很好。每个模块中都有一个_index.js文件,其中包含以下内容: var bulk = require('bulk-require'); module.exports = angular.module('app.services', []); bulk(__dirname, ['./**/!(*_index|*.

我正在用Webpack和Angular构建nw.js应用程序。 我想从这个样板中实现我在另一个plane angular应用程序中看到和使用的东西

下面的代码用于代码和模块组织,它做得很好。每个模块中都有一个_index.js文件,其中包含以下内容:

var bulk = require('bulk-require');
module.exports = angular.module('app.services', []);
bulk(__dirname, ['./**/!(*_index|*.spec).js']);
这将导出angular模块,然后在同一目录中,每个文件只需要它,并继续使用它(不太确定,但可能需要它的文件不必在同一目录中):

现在,对于Webpack实现,我已尝试调整此示例:

这是我的版本

require.context(__dirname, true, /./**/!(*_index|*.spec).js/);
我很确定我的正则表达式没有正确地应用在那里,所以我需要你的帮助来实现这一点

另一方面,我不确定样板文件的大容量如何需要函数,以及它到底做了什么。我相信它以某种方式包含了所有文件,因为否则应用程序的其他部分就不会知道它们。 因此,我想说的是,它为您完成了这项工作,而不是手动包含每个指令、服务和控制器


非常感谢帮助:)

我不确定,可能会出错,但在正则表达式中似乎不正确地使用了
*
量词,而不是转义字符
/
;您正在尝试将多余的量词应用于
/
*

如果无法获得“任何字符零次或多次”,则必须使用
*

大概是这样的:

/\.\/.*\/!(.*_index|.*\.spec)\.js/
您还可以使用
\w
-任何字母数字字符(而不是

我也不明白,当使用
时,你的意思是什么

这个例子可以找到像
aaa/bbb/ccc/blabla_index.js
aaa/bbb/ccc/blablabla.spec.js
这样的字符串:

/(\w*\/)*(\w*_index|\w*\.spec)\.js/
我希望这对你有帮助;

解决了

我最终使用了这个解决方案,并对其进行了一些调整。 @user3335966提供的正则表达式返回了我想要排除的文件,但还是要感谢:)

/(\w*\/)*(\w*\u index |\w*\.spec)\.js/

其想法是包括文件夹和子文件夹中的所有文件,但不包括
\u index.js

但是,此正则表达式会返回每个.js文件:

/^(.\.(js$)[^.]*$/igm

由于我不知道正则表达式,我最终在函数中排除了
\u index.js
,结果是:

var req = require.context("./", true, /^(.*\.(js$))[^.]*$/igm);
req.keys().forEach(function(key){
    if (key !== './_index.js') {
        req(key);
    }
});
所以现在我基本上是这样做的:

module.exports = angular.module('app.homeModule', []);

var req = require.context("./", true, /^(.*\.(js$))[^.]*$/igm);
req.keys().forEach(function(key){
    if (key !== './_index.js') {
        req(key);
    }
});
这样我就定义了一个angular模块,并使其可用于该文件夹中的所有其他文件(控制器、服务、指令)


如果有人知道如何在正则表达式中进行排除,我将不胜感激。

对于我在ElectronJS上的Angular project应用程序,我编写了一个小的网页加载程序,用于按模式要求目录树中的所有文件,如批量文件

我用它来要求模块。 js文件示例:

//@require "./**/index.js" 
//@require "./**/!(index|config|run)*" 
我使用它来要求所有模块依赖项(js、模板缓存的html、图像)。 js文件示例:

//@require "./**/index.js" 
//@require "./**/!(index|config|run)*" 
并将其用于css。 css文件示例:

@require "./**/!(app|bootstrap).css"; 
我在我的项目中成功地使用了它。也许是其他人让生活更轻松。

今天晚些时候我一定会试试这个。感谢您对regex@user3335966:)的帮助
@require "./**/!(app|bootstrap).css";