Это показывает, как require()
работает в своей простейшей форме, выдержка из Eloquent JavaScript
Проблема Невозможно, чтобы модуль напрямую экспортировал значение, отличное от экспорта объект, такой как функция. Например, модуль может захотеть экспортировать только конструктор типа объекта, который он определяет. В настоящее время он не может этого сделать, потому что требование всегда использует объект exports
, который он создает в качестве экспортируемого значения.
Решение. Предоставьте модули с другой переменной module
, которая является объектом, обладающим свойством exports
. Это свойство первоначально указывает на пустой объект, созданный require, но может быть перезаписано другим значением, чтобы экспортировать что-то еще.
function require(name) {
if (name in require.cache)
return require.cache[name];
var code = new Function("exports, module", readFile(name));
var exports = {}, module = {exports: exports};
code(exports, module);
require.cache[name] = module.exports;
return module.exports;
}
require.cache = Object.create(null);
Нет, вы используете хранилище объектов для описания объектов. Описательное программирование - это когда вы не используете хранилище объектов.
Например:
Browser("title:=.*").Page("title:=.*").Link("text:=משרות.*").Click
Или:
Set Desc = Description.Create()
Desc("text").Value = "משרות הייטק ושיווק ללא ניסיון"
Desc("text").RegularExpression = False
Browser("title:=.*").Page("title:=.*").Link(Desc).Click