如何手动改写JavaScript模块执行器为长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2765个文字,预计阅读时间需要12分钟。
如果您需要将上述代码片段进行简化,并确保不超过100个字,同时避免使用数字,以下是简化后的版本:
javascript若要在前端动态引入模块并执行函数,可使用以下代码:module.exports={ name: 'ConardLi', action: function() { console.log(this); } };
如果给你下面这样一个代码片段(动态获取的代码字符串),让你在前端动态引入这个模块并执行里面的函数,你会如何处理呢?
module.exports = { name : 'ConardLi', action : function(){ console.log(this.name); } };
node 环境的执行
如果在 node 环境,我们可能会很快的想到使用 Module 模块, Module 模块中有一个私有函数 _compile,可以动态的加载一个模块:
export function getRuleFromString(code) { const myModule = new Module('my-module'); myModule._compile(code,'my-module'); return myModule.exports; }
实现就是这么简单,后面我们会回顾一下 _compile 函数的原理,但是需求可不是这么简单,我们如果要在前端环境动态引入这段代码呢?
嗯,你没听错,最近正好碰到了这样的需求,需要在前端和 Node 端抹平动态引入模块的逻辑,好,下面我们来模仿 Module 模块实现一个前端环境的 JavaScript 模块执行器。
本文共计2765个文字,预计阅读时间需要12分钟。
如果您需要将上述代码片段进行简化,并确保不超过100个字,同时避免使用数字,以下是简化后的版本:
javascript若要在前端动态引入模块并执行函数,可使用以下代码:module.exports={ name: 'ConardLi', action: function() { console.log(this); } };
如果给你下面这样一个代码片段(动态获取的代码字符串),让你在前端动态引入这个模块并执行里面的函数,你会如何处理呢?
module.exports = { name : 'ConardLi', action : function(){ console.log(this.name); } };
node 环境的执行
如果在 node 环境,我们可能会很快的想到使用 Module 模块, Module 模块中有一个私有函数 _compile,可以动态的加载一个模块:
export function getRuleFromString(code) { const myModule = new Module('my-module'); myModule._compile(code,'my-module'); return myModule.exports; }
实现就是这么简单,后面我们会回顾一下 _compile 函数的原理,但是需求可不是这么简单,我们如果要在前端环境动态引入这段代码呢?
嗯,你没听错,最近正好碰到了这样的需求,需要在前端和 Node 端抹平动态引入模块的逻辑,好,下面我们来模仿 Module 模块实现一个前端环境的 JavaScript 模块执行器。

