2016-05-31 2 views
0

У меня есть импорт для моего класса машинописьКак вы можете переопределить машинописные тексты AMD требуют функциональности?

import Service = require("domain/Service");

Я хочу, чтобы иметь возможность отменить «требовать» и в основном toLowercase() любой путь, который передается в.

Я добавил точки останова в requirejs но он, кажется, не вызван для каждого моего импорта. Теперь мне интересно, неверно ли мое предположение о том, что requirejs является основным загрузчиком модуля, и страх require в машинописном тексте может быть чем-то вроде машинописи?

В любом случае, могу ли я переопределить require в машинописном тексте, чтобы формализовать оболочку для моих дорожек?

ответ

0

Мне это удалось в конце.

Операторы require преобразуются в определение в JS.

Когда я понял это, это был простой случай перехвата аргументов и нижнего обхода путей, прежде чем они передаются методу определения.

Что-то вроде этого (с использованием lodash/подчеркиванием):

var _define = define; 
    define = function() 
    { 
     var paths = arguments[0]; 

     var newPaths = _.map(paths, 
      function(path) { 
       return path.toLowerCase(); 
      }); 

     arguments[0] = newPaths; 
     return _define.apply(this, arguments); 
    }