我正在使用Appcelerator开发应用程序。 Appcelerator使用几乎类似于node.js这样的require.js。
现在我想实现一个记录当前用户的功能,并且不会留下任何痕迹。 最简单的方法是重新启动应用程序,但Appcelerator,尤其是Apple不支持此功能。
所以我必须打开登录窗口并清除向旧用户留下痕迹的所有数据。
最简单的方法是取消引用需求链中的一个主节点,使所有数据解除引用并收集垃圾。 我知道在节点中有一种方法(如here所述):
/**
* Removes a module from the cache
*/
function purgeCache(moduleName) {
// Traverse the cache looking for the files
// loaded by the specified module name
searchCache(moduleName, function (mod) {
delete require.cache[mod.id];
});
// Remove cached paths to the module.
// Thanks to @bentael for pointing this out.
Object.keys(module.constructor._pathCache).forEach(function(cacheKey) {
if (cacheKey.indexOf(moduleName)>0) {
delete module.constructor._pathCache[cacheKey];
}
});
};
/**
* Traverses the cache to search for all the cached
* files of the specified module name
*/
function searchCache(moduleName, callback) {
// Resolve the module identified by the specified name
var mod = require.resolve(moduleName);
// Check if the module has been resolved and found within
// the cache
if (mod && ((mod = require.cache[mod]) !== undefined)) {
// Recursively go over the results
(function traverse(mod) {
// Go over each of the module's children and
// traverse them
mod.children.forEach(function (child) {
traverse(child);
});
// Call the specified callback providing the
// found cached module
callback(mod);
}(mod));
}
};
所以我尝试用console.log(require, "-" ,require.cache);
读取appcelerator中的require-cache,输出如下:<KrollCallback: 0x79f6fe50> - <null>
现在我的问题是:
因为可以为Appcelerator创建本机模块:
非常感谢