2015-05-24 54 views
6

是否有可能在不使用browserify或webpack的情況下使用ReactRouter進行反應。 我正在按照http://rackt.github.io/react-router的文檔,他們需要反應和反應路由器(require('react-router');)。如果我使用browerifly,我生成的包大約有1MB的文件大小,這聽起來很多。沒有webpack或browserify的React +(路由器)

那麼是否有可能使得包含編譯後的JS從一個CDN如https://cdnjs.cloudflare.com/ajax/libs/react-router/0.13.3/ReactRouter.js工作,而不是自己捆綁所有要求?如果我嘗試使它與CDN一起工作,則會出現路由未定義的錯誤。但它看起來像是在cdn文件中輸出的。

我想編譯我的JSX/ES6反應組件,包括ReactRouter和從cdn反應JS文件,只將我的組件捆綁到一個新的js文件中。

這是可能或正在瀏覽和webpack的正確方式來設置項目? (我看了幾個github回購)。我有些疑惑,因爲有上http://rackt.github.io/react-router/

沒有安裝指南這樣的僞HTML:

<head> 
    CND :include react, react-router 
    my code combinded.js 
</head> 

回答

2

當你使用來自CDN的預建版本,該庫導出到window.ReactRouter。所以,Route定義在window.ReactRouter.Route上。

由於React路由器還依賴於React,因此使用CDN /瀏覽器版本還需要React可用於window.React

也就是說,你鏈接到的CDN版本本身是由webpack生成的,所以我不希望你會獲得任何文件大小的改進。您可能會在您的browserify包中查看縮小/死代碼消除以查看它是否會減小文件大小。

2

我想分享的一個額外信息是可以在webpack配置中使用外部(https://webpack.github.io/docs/library-and-externals.html)。 我用它如下:

externals: { 
    "react": "React", 
    "react/addons": "React", 
    "reflux" : "Reflux" 
} 

這導致較小的包,你可以使用從CDN作出反應,問我的問題。這也減少了吞吐時間。