是否可以不需要Javascript中的模块?

时间:2018-07-18 20:55:37

标签: javascript browserify require

我正在使用Browserify要求一个JS文件,例如require('./typescript/build/crossing-puzzle-setup'。但是,考虑到会有许多不同类型的难题,我想知道,如果我不再需要某个模块,是否可以“不需要”模块?

3 个答案:

答案 0 :(得分:2)

卸载模块几乎没有意义,因为代码仅占用很少的RAM,并且由于引擎无法预测require("some module")不会再次被调用,因此不可能卸载模块,因此它无法卸载该模块的存储数据。

答案 1 :(得分:0)

如果确实加载了太多代码,需要强制浏览器卸载它,则可以强制页面刷新,然后加载页面的先前状态。但是,用户在刷新期间会看到浏览器的“页面加载”指示。

function startReload() {
  // Save all the state you need into a string. An example object:
  const importantAppState = {currentPuzzle: 'level1', username: 'roy'};
  localStorage.setItem('stateBeforeReload', JSON.stringify(importantAppState));

  window.location.reload();
}

// Run this function whenever your page loads:
function onLoad() {
  const previousState = localStorage.setItem('stateBeforeReload');
  if (previousState !== null) {
    // you should re-initialize your app from the state here,
    // dynamically calling `require` on only the files you need

    localStorage.removeItem('stateBeforeReload');
  }
}

答案 2 :(得分:0)

对于那些寻求nodeJS解决方案的人:

require('../myLib');
delete require.cache[require.resolve('../myLib')];

不确定上面是否清除了链接到模块的100%内存。为此,一种安全的方法似乎是使用以下节点模块:node-disrequire