2016-03-27 77 views
0

简单的问题是,是否可以编写一个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之前编译一个文件?

另一种方法是编写一个任务,在服务器运行之前编译模板文件,然后导入编译后的文件。这个解决方案留下了很多难题。

回答

1

babel-plugin-webpack-loaders很可能是您在这种情况下最好的选择。

+0

非常有趣。我会给反应模板加载器一个镜头,并接受答案,如果我得到它的工作。 –

+0

看起来像这个现在是有限的几个插件。我很好奇,看看我们是否能为一般情况下工作。这是我创建的问题:https://github.com/istarkov/babel-plugin-webpack-loaders/issues/62 –