ruy*_*rno 4 commonjs reactjs react-jsx electron
我正在一个具有本机CommonJS支持require模块的环境上开始一个新项目- 它是一个原子shell项目,不可能使用预编译步骤,如Browserify或webpack AFAIK.
我可以在我的声明的app.jsx入口点文件上使用JSX index.html,因为JSXTransformer之前声明过:
<script src="scripts/vendor/JSXTransformer.js"></script>
<script type="text/jsx" src="scripts/app.jsx"></script>
Run Code Online (Sandbox Code Playgroud)
我希望能够将JSX语法用于在我的app.jsx模块中作为CommonJS模块导入的子模块:
// This raises an Error, the XML-like tags are not supported
var Grid = require('./scripts/grid.jsx');
Run Code Online (Sandbox Code Playgroud)
据我所知,我将被迫删除JSX语法,并为任何加载的模块使用vanilla语法require.在这种情况下,还有其他方法可以使用JSX吗?
[更新]
现在JSX转换器被弃用而不支持Babel,你可以使用Babel的require钩子在类似CommonJS的环境中支持JSX:
用法
Run Code Online (Sandbox Code Playgroud)require("babel/register");要求所有的后续文件由节点与扩展
.es6,.es,.jsx并且.js将巴贝尔转化.该填充工具也需要自动.注意:默认情况下,
node_modules将忽略所有要求.您可以通过以下方式传递ignore regex来覆盖它:Run Code Online (Sandbox Code Playgroud)require("babel/register")({ // This will override `node_modules` ignoring - you can alternatively pass // an array of strings to be explicitly matched or a regex / glob ignore: false });
[旧答案]
如果它是Node.js环境(就像atom-shell那样),你可以使用node-jsx:
require('node-jsx').install()
require("./myComponent.js");
Run Code Online (Sandbox Code Playgroud)
.jsx如果您愿意,也可以使用扩展程序:
require('node-jsx').install({extension: '.jsx'})
require("./myComponent.jsx");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1411 次 |
| 最近记录: |