我创建了一个插件,您可以添加一个!定义要对一些文件的要求最终,它会根据OP的工作做出规范建议。它适用于requirejs的官方文本插件。
define(['text', 'module'], function (text, module) {
var exportRegExp = //g,
masterConfig = (module.config && module.config()) || {},
buildMap={};
text.export = function (content) {
var exports = null;
if (content) {
var matches = content.match(exportRegExp) || [],
match, _i, _len;
exports = matches.length ? {} : null;
for (_i = 0, _len = matches.length; _i < _len; _i++) {
match = matches[_i];
var exportName = match.match(/(/).slice(-1)[0];
exports[exportName] = match.replace(//, '');
}
}
return exports;
};
var baseParseName = text.parseName;
text.parseName = function(name) {
var index, parseExport = false;
index = name.indexOf('!export');
if (index !== -1) {
parseExport = true;
name.split('!export').join('');
}
var out = baseParseName(name);
out["strip"] = { "export": parseExport, "strip": out["strip"] };
return out;
};
text.finishLoad = function (name, strip, content, onLoad) {
var exports = strip.export ? text.export(content,name) : content;
if (exports == null) content = strip.strip ? text.strip(content) : content;
else content = exports;
if (masterConfig.isBuild) {
buildMap[name] = content;
}
onLoad(content);
};
text.write = function (pluginName, moduleName, write, config) {
if (buildMap.hasOwnProperty(moduleName)) {
var content = text.jsEscape(buildMap[moduleName]);
write.asModule(pluginName + "!" + moduleName,
"define(function() { return '" +
content +
"';});\n");
}
};
});
下面的工作
require([text!somefile!define],function(){})
这也适用,但如果该文件中存在的任何出口却忽视了!条命令。
require([text!somefile!strip!define],function(){})
,那么你可以调用
require(['someModuleNameInDefineComment'],function(){})
我还没有处理条带与年初确定的标题。