我需要在Python和React代码之间共享一个配置文件 - 我可以使用JSON,它很容易导入每个,但我更愿意能够添加注释,打开和关闭部件等等。 / p>
这样做的好方法是什么?
答案 0 :(得分:0)
我一直在尝试HJSON (human-readable JSON),但是如果没有弹出create-react-app并修改webpack配置以使用raw-loader,那么将像HJSON这样的文本文件捆绑到React构建中将无效AFAIK ,或使用react-app-rewired做类似的事情。
我使用react-app-rewired -
结束了首先将这些库添加到React项目中 -
yarn add react-app-rewired
yarn add hjson
yarn add hjson-loader
然后将config-overrides.js
文件添加到React项目的顶层 - 这将动态修改webpack配置 -
const { getLoader } = require('react-app-rewired');
function rewireAddHjson(config, env, options = {}) {
const hjsonExtension = /\.hjson$/;
const excludeRule = getLoader(config.module.rules, rule => rule.exclude);
excludeRule.exclude.push(hjsonExtension);
const hjsonRule = {
test: hjsonExtension,
loader: 'hjson-loader',
};
config.module.rules.push(hjsonRule);
return config;
}
module.exports = function override(config, env) {
config = rewireAddHjson(config, env);
return config;
};
并在package.json
中将“react-scripts”替换为“react-app-rewired”:
"scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
+ "start": "react-app-rewired start",
+ "build": "react-app-rewired build",
+ "test": "react-app-rewired test --env=jsdom"
}
然后在Python中你可以说
import hjson
with open('app/client/src/assets/options.hjson') as f:
options = hjson.load(f)
并且在React中可以说
import options from '../assets/options.hjson'; // a json object