2015-05-28 129 views
6

我刚刚了解WebPack模块,并且正在考虑将我的Django应用程序的整个JS基础结构移动到模块中。看起来,这样做的直接方法是为每个Django模板(或视图)创建一个webpack模块,并在每个页面上都有一个<script>标签。如何将Django模板变量传递给WebPack模块

但是,我试图找到一种方法将Django模板变量的内容传递给这些webpack模块。以前我本来这些变量内联:

<script> 
//Sample code.. 
var arr = []; 
{% for s in vars %} 
arr.push(s); 
{% endfor %} 
</script> 

现在,我只有:

<script src="temp.js"></script> 

我发现了一个潜在的解决方案是定义的WebPack模块是出口单根函数库浏览器中的全局名称空间。然后使用嵌入式script标记将Django变量放入JS变量中,并将其作为参数传递给导出的函数。

这不知何故感觉像一个笨拙的做事方式。关于如何更好地处理这个问题的任何想法?

谢谢!

+0

我有完全相同的问题。我正在为使用React的其他系统编写一个插件(我真的很喜欢这样做比较简单,相比之下Ember喜欢控制整个演出),它使用django模板。插件扩展点依赖于几个模板值。我将我的webpack包构建为一个库,并导出一个函数作为参数,缺少模板值。我完全同意它感觉非常笨拙,但我认为我们正在合并两种根本不同的方法,所以它有点被期待! – dpwrussell

回答

2

下面是我已经做到了,基于问题的意见dpwrussel的提示和this question

在我的模块,我进口,我这样做:

var React = require('react') 
var ReactDOM = require('react-dom') 

window.render_my_thing = function(properties) { 
    ReactDOM.render(...) 
} 

然后在我的Django模板,我添加以下内容:

<script>                   
    render_my_thing({ 
     property1: "{{ property1 }}", 
     property2: "{{ property2 }}", 
    })                 
</script> 
相关问题