当前位置: 首页 > 面试题库 >

在CDN上使用React Router且不使用webpack或browserify

江礼骞
2023-03-14
问题内容

简历 :我需要在没有wepback或类似工具的情况下运行React Router。直接来自CDN链接,但我遇到了一些require.js错误。

我开始用React构建我的第一个应用程序,并且我在React Router上苦苦挣扎。

HTML:

<body>
    <div id="container"></div>


    <script src="https://unpkg.com/react@15/dist/react.js"></script>
    <script src="https://unpkg.com/react-dom@15/dist/react-dom.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.js"></script>

    <script src="https://npmcdn.com/react-router@2.4.0/umd/ReactRouter.js"></script>

    <script type="text/babel" src="assets/scripts/03_templates/app.js" charset="utf-8"></script>

</body>

JS:

var { Router, Route, IndexRoute, hashHistory, IndexLink, Link, browserHistory } = ReactRouter;

//some classes

ReactDOM.render((
    <Router history={hashHistory}>
        <Route path="/" component={Window}>
            <IndexRoute component={InitialPage}/>
            <Route path="register" component={Register} />
            <Route path="search" component={Search} />
        </Route>
    </Router>
), document.getElementById("container"));

一切运行正常,但我在控制台上得到了这个:

react.js:3639警告:您正在为上的getComponentprop
手动调用React.PropTypes验证函数IndexRoute。不推荐使用此功能,并且在下一个主要版本中无法使用。由于第三方PropTypes库,您可能会看到此警告。

因此,我想我的React Router是旧版本。我将链接更改为

<script src="https://cdnjs.cloudflare.com/ajax/libs/react-router/4.0.0-0/react-router.js"></script>

警告:React.createElement:type不能为null,undefined,boolean或number。它应该是一个字符串(对于DOM元素)或一个ReactClass(对于复合组件)。

我进行了搜索,似乎问题出在第1行。所以我更改了此代码:

var { Router, Route, IndexRoute, hashHistory, IndexLink, Link, browserHistory } = ReactRouter;

对此:

import { Router, Route, IndexRoute, hashHistory, IndexLink, Link, browserHistory } from 'react-router';

现在我有这个问题:

app.js:2未捕获的ReferenceError:require未定义

我搜索了require.js,尝试了一些方法,但没有任何方法解决我的问题。我想念什么?我需要在没有webpack或类似工具的情况下运行它。

谢谢


问题答案:

在您的javascript上使用它:

var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
var IndexRoute = ReactRouter.IndexRoute;
var Link = ReactRouter.Link;
var browserHistory = ReactRouter.browserHistory;

并删除import语句。

我目前正在使用此react-router软件包: https://unpkg.com/react- router@3.0.0/umd/ReactRouter.js

编辑:

这是CodePen上的示例:http
://codepen.io/lsmoura/pen/pNPOzp- 它不使用import语句。



 类似资料:
  • 介绍 CDN(内容分发网络),可以减少对FDS server的访问。CDN有很多节点部署在不同的地方,使用CDN时会自动选择较近的节点,能起到加速的效果。 什么时候应该使用CDN Prefetch(预取) 如果是通过CDN域名访问FDS资源的请求,根据CDN的缓存策略会把热点数据缓存在CDN节点上。 如果要访问的Object不在CDN上,大量同时通过CDN对一个Object的访问会同时回源到FDS

  • Note: This only works on Webpack 4, if you're still on Webpack 3 or below please use version 1.x CDN extension for the HTML Webpack Plugin Enhances html-webpack-plugin functionality by allowing you to

  • 问题内容: 我正在使用React Starter Kit进行客户端编程。它使用react和webpack。没有index.html或任何要编辑的html,所有js文件。我的问题是,是否要从云加载供应商js库,该怎么办? 在html文件中这样做很容易。 但是,在js文件中,它仅使用npm安装的软件包。如何导入没有html文件的上述lib?我尝试导入并要求,它们仅适用于本地文件。 更新10/21/15

  • 问题内容: 您实际上使用哪个CDN链接到您的jquery文件或任何javascript文件是否重要?一个可能比另一个更快吗?您决定在哪个CDN中使用哪些其他因素?我知道Microsoft,Yahoo和Google现在都具有CDN。 问题答案: 根据评论更新: 简短版:没什么关系,但可能取决于他们托管的内容。他们都拥有不同的东西:谷歌没有托管jQuery.Validate,微软没有托管jQuery-

  • 问题内容: 我开始研究ReactJS。看来Facebook刚刚发布了15.0.1版本。去年,我在使用JSXTransformer的0.12.x版本中研究了这个框架,现在看来它已不复存在。 现在看来,几乎每个教程都建议将最新的React与Webpack结合使用。有没有办法完全不使用webpack?我正在尝试使用React 15.xx的艰巨任务找到一个很好的有效示例 任何帮助,将不胜感激。 问题答案:

  • 在webpack中使用externals配置项用来避免react和react-dom被打包,然后将react和react-dom以script的方式从html中进行引入,那么dependency中还需要配置react和react-dom吗?无论需要或者不需要,请说明具体的原因以及这么做的好处。