我在服务器渲染上使用React,因此需要在节点和客户端使用反应代码,在客户端我使用browserify. 现在假设我有一个组件: var item = React.createClass({ //code here}) 为了在节点中使用这个组件,我必
现在假设我有一个组件:
var item = React.createClass({ //code here })
为了在节点中使用这个组件,我必须首先要求React,所以组件将是
var React = require('React'); var item = React.createClass({ //code here })
但如果我通过browserify在客户端中使用此组件,则需要React librray,在这种情况下,我的构建js文件将太大.我知道我可以在browserify中忽略React
browserify -i React
但如果我忽略了React那么代码:
var React = require('React');
会导致错误“undefined is not a function”
任何想法如何避免这种情况?
您可以将供应商包放在单独的包中:browserify -r react -r underscore > vendor.js
然后声明这些依赖项将由外部包(或多个)提供:
browserify -x react -x underscore main.js > bundle.js
并在您的页面中包含:
<script src="vendor.js"></script> <script src="bundle.js"></script>
在构建主捆绑包时,您不需要重建供应商捆绑包(除非您已升级依赖项).通常你实际上并不需要这样做,如果你担心开发中的构建时间:watchify是一个很好的替代/补充.
什么东西是-r’d你也可以在普通的脚本标签中要求它.这意味着现在有一个require全局,它可能与页面上的其他脚本冲突.
<script> var React = require('react'); </script>