没有 webpack 或 browserify 的 React +(Router)

Posted

技术标签:

【中文标题】没有 webpack 或 browserify 的 React +(Router)【英文标题】:React +(Router) without webpack or browserify 【发布时间】:2015-08-06 07:26:14 【问题描述】:

是否可以在不使用 browserify 或 webpack 的情况下将 react 与 ReactRouter 一起使用。 我正在关注http://rackt.github.io/react-router 的文档,他们需要 react 和 react-router (require('react-router');)。如果我使用 browerifly,我生成的包大约是 1MB 文件大小,这听起来很多。

那么是否有可能让 reactrouter 使用包含来自 CDN(如https://cdnjs.cloudflare.com/ajax/libs/react-router/0.13.3/ReactRouter.js)的编译 JS,而不是我自己捆绑所有需求?如果我尝试让它与 CDN 一起工作,我会收到一个错误,即 Route 未定义。但是貌似是导出到cdn文件里的。

我想编译我的 JSX/ES6 react 组件,包括 ReactRouter 和来自 cdn 的 react JS 文件,并且只将我的组件捆绑到一个新的 js 文件中。

这是可能的还是 browserify 和 webpack 是设置项目的正确方法? (我查看了几个 github 存储库)。我有些疑惑,因为http://rackt.github.io/react-router/上没有安装指南

喜欢这个伪html

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

【问题讨论】:

【参考方案1】:

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

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

这会产生更小的捆绑包,您可以按照我的问题中的要求使用来自 CDN 的响应。这也减少了 gulp 的构建时间。

【讨论】:

【参考方案2】:

当您使用 CDN 中的预构建版本时,库将导出到 window.ReactRouter。所以,Route 是在 window.ReactRouter.Route 上定义的。

由于 React Router 也依赖于 React,因此使用 CDN/浏览器构建还需要 Reactwindow.React 上可用。

也就是说,您链接到的 CDN 版本本身是使用 webpack 生成的,因此我不希望您获得任何文件大小改进。您可能会在您的 browserify 包中查看缩小/死代码消除,看看它是否会减小文件大小。

【讨论】:

以上是关于没有 webpack 或 browserify 的 React +(Router)的主要内容,如果未能解决你的问题,请参考以下文章

我应该使用 Browserify 还是 Webpack 来延迟加载 Angular 1.x 中的依赖项 [关闭]

Browserify有替代品吗? [关闭]

什么是 CommonJS、AMD、WebPack、Browserify 等?

任务运行程序(Gulp、Grunt 等)和捆绑程序(Webpack、Browserify)。为啥要一起使用?

Gulp / Grunt和browserify / webpack之间的关系

requireJS,browserify 和 webpack