简单的问题是,是否可以编写一个Babel插件接收原始文件内容,并在将任何内容由Babel解析为AST之前将已编译的字符串返回给Babel?巴贝尔插件pre-AST编译?
背景
我创建需要编写一个HTML模板JS在服务器上,并在浏览器中的多态性作出反应的应用程序。
我用React Templates创建平行视图文件一起反应组件文件,比如这个:
components/layout/layout.component.js
components/layout/layout.template.html
,因为我经常需要给设计师访问组件模板这对我很有用。然后在我的compnent文件中:
import template from './layout.template.html';
class Layout extends React.Component {
// code
render(){
return template.call(this);
}
}
这适用于客户端,因为我使用webpack进行编译。有一个现有的Webpack加载器将采用HTML内容并使用React模板转换为Javascript。但是,使用webpack时,您可以直接访问文件内容,因此您可以搭载React模块(see loader)完成的编译。
问题是,如果我使用ReactDomServer.renderToString在服务器上进行渲染(而不是Webpack编译),上面的impport调用显然不会导入已编译的模板。
是否有可能与Babpack做类似于Webpack的事情,即在它被解析为AST之前编译一个文件?
另一种方法是编写一个任务,在服务器运行之前编译模板文件,然后导入编译后的文件。这个解决方案留下了很多难题。
非常有趣。我会给反应模板加载器一个镜头,并接受答案,如果我得到它的工作。 –
看起来像这个现在是有限的几个插件。我很好奇,看看我们是否能为一般情况下工作。这是我创建的问题:https://github.com/istarkov/babel-plugin-webpack-loaders/issues/62 –