我正在使用for ( ;; )
{
char input[SIZE]; // for some reasonable SIZE value, at least 12 to handle
// a 32-bit int (up to 10 digits plus sign plus
// string terminator
printf("What is %d %c %d ? ", n1, op, n2);
if ( fgets( input, sizeof input, stdin ) )
{
char *check; // will point to first non-digit character in input buffer
int tmp = (int) strtol( input, &check, 10 );
if ( isspace( *check ) || *check == 0 )
{
user_answer = tmp;
break;
}
else
{
fprintf( stderr, "%s is not a valid input, try again\n", input );
}
}
else
{
/**
* error or EOF on input, treat this as a fatal error and bail
*/
fprintf( stderr, "EOF or error while reading input, exiting...\n" );
exit( 0 );
}
}
并尝试让它跳过浪费时间,包括或解析jquery和其他c = scanf("%d", &user_answer);
- 我通过CDN加载的文件较少。
我应该使用browserify
还是require
?有什么不同?他们的输出似乎完全相同,而且我不清楚这些文档:
bundle.exclude('jquery')
:https://github.com/substack/node-browserify#bexternalfile 防止将文件加载到当前包中 引用另一个包。
如果file是一个数组,文件中的每个项目都将被外部化。
如果file是另一个bundle,那么将读取该bundle的内容 当文件包捆绑在一起时,从当前包中排除。
bundle.external('jquery')
:https://github.com/substack/node-browserify#bexcludefile 防止文件中的模块名称或文件显示在输出中 束。
如果您的代码尝试require()该文件,它将抛出,除非您已经 提供了另一种加载它的机制。
答案 0 :(得分:5)
您应该使用exclude
。
这两个函数都会阻止文件包含在捆绑包中。对于您的用例,您可能不会使用require
jQuery,因此您使用它并不重要。但是,这就是:#/ p>
browserify使用module-deps来探索您的代码并查找任何require
语句,然后告诉module-deps在哪里找到所需的模块。
如果文件在捆绑包中,则只需在捆绑包的模块映射中为其提供密钥。
如果您说该文件是external
,则browserify会假定您将其包含在另一个捆绑包中,因此提供该文件的路径,假设该ID作为ID将从其他捆绑包中解析。为了能够做到这一点,还需要一些额外的簿记。
如果您exclude
该文件,则browserify将向模块提供undefined
,当您尝试使用需要该文件的包时,肯定会有火。但是,这种方法缺乏跟踪文件路径的开销(这实际上可以忽略不计),并且没有浪费时间"在爆炸之前查看其他捆绑包。
一些例子: 我摆弄了node-browserify / example / api以生成一些包,下面的例子是来自各种测试的模块映射,为了便于阅读而进行了格式化。
Vanilla - 在浏览器回购中运行:
{
1: [function(require, module, exports) {
module.exports = function(n) {
return n * 3 };
}, {}],
2: [function(require, module, exports) {
var bar = require('./bar');
module.exports = function(n) {
return n * bar(n);
};
}, { "./bar": 1 }],
3: [function(require, module, exports) {
var foo = require('./foo');
console.log(foo(5));
}, { "./foo": 2 }]
}
3
(main.js)取决于./foo
2
2
(foo.js)取决于./bar
1
1
(bar.js)没有依赖
将api/bar.js
标记为外部:
{
1: [function(require, module, exports) {
var bar = require('./bar');
module.exports = function(n) {
return n * bar(n);
};
}, { "./bar": "/browser/bar.js" }],
2: [function(require, module, exports) {
var foo = require('./foo');
console.log(foo(5));
}, { "./foo": 1 }]
}
2
(main.js)取决于./foo
1
1
(foo.js)取决于./bar
,在其他捆绑包中应标记为/browser/bar.js
标记为api/bar.js
以排除:
{
1: [function(require, module, exports) {
var bar = require('./bar');
module.exports = function(n) {
return n * bar(n);
};
}, { "./bar": undefined }],
2: [function(require, module, exports) {
var foo = require('./foo');
console.log(foo(5));
}, { "./foo": 1 }]
}
2
(main.js)取决于./foo
1
1
(foo.js)取决于ZOMFG的./bar
!我不知道它在哪里。你需要??!1!
删除了排除/外部电话,并从./bar
移除了foo.js
的要求:
{
1: [function(require, module, exports) {
module.exports = function(n) {
return n * bar(n);
};
}, {}],
2: [function(require, module, exports) {
var foo = require('./foo');
console.log(foo(5));
}, { "./foo": 1 }]
}
2
(main.js)取决于./foo
1
1
(foo.js)没有依赖关系,世界是桃子。我想知道他们是否通过其他方式加载bar
答案 1 :(得分:0)
@ Will的答案的第一部分也很重要:
对于您的用例,您可能不会要求使用jQuery,因此使用它并不重要
我认为OP的例子令人困惑,要求排除与外部之间的区别。如果jQuery永远不会在代码中被要求() - 那么就没有问题:它将永远不会被browserify解析,并且必须通过其他方式加载。
我只是想指出这一点,因为我发现这也令人困惑。