Node.js require 而不将其存储到变量中
Node.js require without storing it into a variable
我有以下代码片段,它在其上下文中有效。
"use strict";
require('chromedriver');
var selenium = require('selenium-webdriver');
var driver = new selenium.Builder()
.forBrowser('chrome')
.build();
我不明白的是:
require('chromedriver');
如果我删除它,我会得到一个错误:
Error: The ChromeDriver could not be found on the current PATH. Please download the latest version of the ChromeDriver from http://chromedriver.storage.googleapis.com/index.html and ensure it can be found on your PATH.
所以它做了一些事情。
我明白 var chromedriver = require('chromedriver');
的作用,到目前为止我只看到 require 函数是这样使用的。
所以我关于这条线的问题:require('chromedriver');
为什么有效?
所需的 chromedriver 在哪里结束?
如果 require() 函数没有将其 return 保存到变量中,通常会发生什么情况?
调用模块上的 require
实际上会执行模块中的任何代码。在大多数情况下,模块导出一个或多个函数或一个对象,您希望将其存储在变量中。但是如果你要写这样的东西:
for (var i = 0;i < 100; i++){
console.log("I've been called %d times", i);
}
在 .js 文件中,然后 require
在节点程序中的那个文件,你会在你的控制台中添加 100 行,没有其他任何事情发生。
require
做的基本事情是执行模块中编写的代码。最后,这个执行的代码可能会或可能不会 return 东西。在您的情况下,这段代码 returns 并不重要,重要的是这段代码至少执行一次。
同样重要的是要注意require
的结果被缓存了。这意味着即使您多次需要该模块,"code" 也只会执行一次。
整个模块和需求的范例来自 CommonJS 模式,我建议您阅读它。
该模块可能不会导出任何内容,但它可能会将一些内容分配给 global
。
例如,在helper.js
global.timeout = 5000;
global.sayHello = function(e) {
console.log('Hello',e);
}
并在 main.js
require('./helper.js');
sayHello('fish');
有些人可能不喜欢它,因为您会污染全局命名空间。但对于小型应用程序,您可以摆脱它。
我有以下代码片段,它在其上下文中有效。
"use strict";
require('chromedriver');
var selenium = require('selenium-webdriver');
var driver = new selenium.Builder()
.forBrowser('chrome')
.build();
我不明白的是:
require('chromedriver');
如果我删除它,我会得到一个错误:
Error: The ChromeDriver could not be found on the current PATH. Please download the latest version of the ChromeDriver from http://chromedriver.storage.googleapis.com/index.html and ensure it can be found on your PATH.
所以它做了一些事情。
我明白 var chromedriver = require('chromedriver');
的作用,到目前为止我只看到 require 函数是这样使用的。
所以我关于这条线的问题:require('chromedriver');
为什么有效?
所需的 chromedriver 在哪里结束?
如果 require() 函数没有将其 return 保存到变量中,通常会发生什么情况?
调用模块上的 require
实际上会执行模块中的任何代码。在大多数情况下,模块导出一个或多个函数或一个对象,您希望将其存储在变量中。但是如果你要写这样的东西:
for (var i = 0;i < 100; i++){
console.log("I've been called %d times", i);
}
在 .js 文件中,然后 require
在节点程序中的那个文件,你会在你的控制台中添加 100 行,没有其他任何事情发生。
require
做的基本事情是执行模块中编写的代码。最后,这个执行的代码可能会或可能不会 return 东西。在您的情况下,这段代码 returns 并不重要,重要的是这段代码至少执行一次。
同样重要的是要注意require
的结果被缓存了。这意味着即使您多次需要该模块,"code" 也只会执行一次。
整个模块和需求的范例来自 CommonJS 模式,我建议您阅读它。
该模块可能不会导出任何内容,但它可能会将一些内容分配给 global
。
例如,在helper.js
global.timeout = 5000;
global.sayHello = function(e) {
console.log('Hello',e);
}
并在 main.js
require('./helper.js');
sayHello('fish');
有些人可能不喜欢它,因为您会污染全局命名空间。但对于小型应用程序,您可以摆脱它。