代码之家  ›  专栏  ›  技术社区  ›  stloc

添加到网站:如何导入外部节点模块?

  •  0
  • stloc  · 技术社区  · 7 年前

    https://reactjs.org/docs/add-react-to-a-website.html 我已经在我的静态网站中集成了一个基本组件

    <body>
      <div id="like_button_container"></div>
    
      <!-- Load React. -->
      <!-- Note: when deploying, replace "development.js" with "production.min.js". -->
      <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
      <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
      <script src="https://unpkg.com/react-content-loader@3.4.1/dist/react-content-loader.min.js" crossorigin></script>
    
      <!-- Load our React component. -->
      <script src="like_button.js"></script>    
    </body>    
    </html>
    

    像_button.js:

    'use strict';
    
    class LikeButton extends React.Component {
      constructor(props) {
        super(props);
        this.state = { liked: false };
      }
    
      render() {
        if (this.state.liked) {
          return 'You liked this.';
        }
    
        return (
          <div>
            <button onClick={() => this.setState({ liked: true }) }>
              Like
            </button>
            <Facebook /> ???????????
          </div>
        );
      }
    }
    
    let domContainer = document.querySelector('#like_button_container');
    ReactDOM.render(<LikeButton />, domContainer);
    

    如何在此组件中使用外部模块,如 https://www.npmjs.com/package/react-content-loader

    我试图添加脚本 https://unpkg.com/react-content-loader@3.4.1/dist/react-content-loader.min.js 在我的组件中使用导入语句导入html页面,但我有一个错误“未捕获引用错误:未定义Facebook”

    1 回复  |  直到 7 年前
        1
  •  3
  •   Peter Ambruzs    7 年前

    我从来没有试过这个密码 Add React to a Website

    第二个问题是您不能在这里使用导入。您必须找到包的名称空间。我注销了窗口对象,检查了它,它是ContentLoader。

    剩下的很简单,我用babel创建了一个独立的index.html: https://codesandbox.io/s/w27pjmq355

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
    
        <title>Hello React!</title>
    
        <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
        <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
        <script
          src="https://unpkg.com/react-content-loader@3.4.1/dist/react-content-loader.min.js"
          crossorigin
        ></script>
        <script src="https://unpkg.com/babel-standalone@6.26.0/babel.js"></script>
      </head>
    
      <body>
        <div id="root"></div>
    
        <script type="text/babel">
          console.log('window', window);
          class App extends React.Component {
            render() {
              return (
                <div>
                  <h1>Hello world!</h1>
                  <ContentLoader.Facebook />
                </div>
              );
            }
          }
    
          ReactDOM.render(<App />, document.getElementById('root'));
        </script>
      </body>
    </html>
    

    我认为您可以尝试这种方式,但不建议在生产中使用巴别塔。我强烈建议安装node并使用createreact应用程序。这样,您就可以在短时间内使用整个工具链。

    或事件在CodeSandbox.io上创建新的React沙盒