[英]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()函數沒有將其返回保存到變量中,那么在genereal中會發生什么?
基本的require
是它執行模塊中編寫的代碼。 最后,這個執行的代碼可能會或可能不會返回一些東西。 在您的情況下,此代碼返回的內容無關緊要,重要的是此代碼至少執行一次。
同樣重要的是要注意require
的結果是緩存的。 這意味着即使您多次要求該模塊,“代碼”也只執行一次。
這個模塊和需求的整個范例來自CommonJS模式,我建議你閱讀它。
在模塊上調用require
實際上執行模塊中的任何代碼。 在大多數情況下,模塊會導出一個或多個函數或一個對象,您希望將其存儲在變量中。 但如果你寫的東西如下:
for (var i = 0;i < 100; i++){
console.log("I've been called %d times", i);
}
在.js文件中,然后在節點程序中require
該文件,您將獲得100行添加到您的控制台,沒有其他任何事情發生。
該模塊可能不會導出任何內容,但它可能會將一些內容分配給global
。
例如,在helper.js
global.timeout = 5000;
global.sayHello = function(e) {
console.log('Hello',e);
}
並在main.js
require('./helper.js');
sayHello('fish');
有些人可能不喜歡它,因為你將污染全局命名空間。 但對於小型應用程序,您可以逃脫它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.