gpt4 book ai didi

javascript - 有没有一种方法可以多次要求一个文件作为不同的模块

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:42 25 4
gpt4 key购买 nike

我需要在 .js 和 .less 文件之间共享常量。我的解决方案包含两个步骤:

  1. 创建一个扩展名为 .const 的单独文件,其中包含所有共享常量。它具有 javascript 模块语法,并将正常执行。
  2. 创建一个加载程序,该加载程序将根据需要此源的文件的扩展名更改源代码。因此,例如,如果需要 .less 文件,则代码将转换为 less 表达式

但我找不到根据所需模块从一个源文件创建两个模块的方法。

我的条件加载器源代码,它的作用是:

module.exports = function(content, sourceMap) {
var _ = require('lodash');
var loaderUtils = require('loader-utils');
var reasonResource = this._module.reasons[0].module.resource;
var reasonResourceExtension = _.last(reasonResource.split('.'));

switch (reasonResourceExtension)
{
case 'js':
case 'const':
var query = loaderUtils.parseQuery(this.query);
if(query.cacheable && this.cacheable)
this.cacheable();

return content;
break;
case 'less':
var consts = this.exec(content, this.resource);

return JSON.stringify(consts);
break;
default:
throw new Error('Not supported import .const modules from ' + reasonResourceExtension.green);
}
};

最佳答案

您可能可以使用 require loader 语法在 less 文件中指定一个 json-to-less 加载器(不太确定是否存在,但应该不难编写):

@import "!json-to-less-loader!constants.json";

然后只需创建一个 less 文件 (constants.less) 来进行导入并公开常量。从那里,您可以正常导入 constants.less

我能够找到一个执行相反操作的加载程序( less-to-json-loader )。因此,您可以使用它并将常量存储在 .less 文件中,并创建一个 constants.js 文件,该文件导入并公开 constants.less 中的常量:

常量较少

@test: 20rem;
@test2: @test/2;

常量.js

module.exports = require("!less-to-json-loader!./constants.less");

关于javascript - 有没有一种方法可以多次要求一个文件作为不同的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41378877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com