10行代码实现require功能
程序员文章站
2024-01-23 16:22:46
首先来介绍本文用到的fs模块知识
fs = require(‘fs’)这一句代码就是node的引入文件模块,可以进行文件操作 fs.readfilesync(modulena...
首先来介绍本文用到的fs模块知识
fs = require(‘fs’)这一句代码就是node的引入文件模块,可以进行文件操作 fs.readfilesync(modulename,”utf8”);//node的读文件方法,返回读取的内容,参数为文件路径,编码格式new function知识
new function可以产生一个普通的函数fn,那么fn与function之间有什么关系呢?
new funtion中最后一个参数,就是fn的函数执行体 new funtion中其余参数,为new funtion中最后一个参数的参数,也就是fn函数执行体的参数 new funtion所有的参数都为字符串//举一个简单的例子 function(a,b){ return a+b; } //就可以写成 let fn = new function('a','b','return a+b');
commonjs知识点
采用commonjs导入及到处的代码如下:commonjs是一种js模块化规范。
核心思想是通过‘require’方法来同步加载依赖的其他模块,通过‘module.exports’到处需要暴露的接口
导入
let str = require('./a.js'); console.js(str);//'欢迎光临'
导出a.js文件
module.exports = '欢迎光临';
那么,具备了以上知识之后,就可以写出以下代码阿里实现require功能了!!!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
/* 原生js实现require功能 - fs模块 文件操作 */ let fs = require('fs');//node的文件模块,可以进行文件操作 function requirecustom(modulename){ /* modulename 要读的文件的路径 */ let content = fs.readfilesync(modulename,"utf8");//node的读文件方法,返回读取的内容,参数为文件路径,编码格式 // console.log(content); /* new function(),最后一个参数是函数的执行体,前面其余都是最后这个执行体参数的参数,所有参数都是字符串格式 */ let fn = new function("exports",'module','require','__dirname','__filename',content + "\n return module.exports"); let module = { exports:{} } return fn(module.exports,module,requirecustom,__dirname,__filename); /* 上面的函数其实就是: function(exports,module,require,__dirname,__filename){ module.exports = "欢迎你"; return module.exports; } */ } let str = requirecustom('./a.js'); console.log(str);//‘欢迎你’
上一篇: 10行代码实现require功能
下一篇: 对于this的理解