NodeJS require('./path/to/image/image.jpg') as base64



有没有办法告诉require,如果文件名以.jpg结尾,那么它应该返回它的base64编码版本?

var image = require('./logo.jpg');
console.log(image); // data:image/jpg;base64,/9j/4AAQSkZJRgABAgA...

我担心"为什么">,但这里是的"如何">:

var Module = require('module');
var fs     = require('fs');
Module._extensions['.jpg'] = function(module, fn) {
  var base64 = fs.readFileSync(fn).toString('base64');
  module._compile('module.exports="data:image/jpg;base64,' + base64 + '"', fn);
};
var image = require('./logo.jpg');

这种机制存在一些严重的问题:首先,你以这种方式加载的每个图像的数据都会保存在内存中,直到你的应用程序停止(所以它对加载大量图像没有用处(,而且由于这种缓存机制(也适用于require()的定期使用(,您只能将一个映像加载到缓存中一次(除非手动开始清理模块缓存,否则在其文件更改后,第二次需要映像时,仍将生成第一个缓存版本(。

换句话说:你并不是真的想要这个。

您可以使用fs.createReadStream("/path/to/file")

最新更新