zoukankan      html  css  js  c++  java
  • webpack + react + es6, 并附上自己碰到的一些问题

    最近一直在学react,react的基础部分已经学得差不多了,然而自己并没有做详细的记录,有兴趣的同志可以参考阮一峰老师的教程,个人觉得挺不错的,链接如下:https://github.com/ruanyf/react-babel-webpack-boilerplate,

    学完了基础就想倒腾倒腾,webpack整合react加es6。

    1.webpack + react + es6

    1.1 新建项目

    项目目录如下

    具体的内容就不解释了,大家应该都看得懂

    1.2 配置webpack

    配置文件如下

    var path = require('path');
    var webpack = require('webpack');
    
    module.exports = {
        context: __dirname + "/",
        entry: ["./src/js/test.js"],
        output: {
            path: path.join(__dirname, './src/build'),
            filename: "main.js"
        },
        module: {
            loaders: [{
                test: /\.js$/,
                loader: 'babel',
                query: {
                    presets: ['es2015', 'react']
                }
            }, {
                test: /\.scss$/,
                loader: 'style!css!sass',
            }]
        },
        // plugins: [
        //     new webpack.optimize.UglifyJsPlugin({
        //         compress: {
        //             warnings: false
        //         }
        //     })
        // ]
    };
    

      

    module中功能包括jsx转js,es6装es5,scss转css,

    这里使用到了 webpack 的一个内置插件 UglifyJsPlugin,通过他可以对生成的文件进行压缩,这里我注释掉了

    1.3 上代码

    接下来把重要的代码给大家

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <div id="app"></div>
        <script src="./build/main.js"></script>
    </body>
    </html>

    foot.js

    import React from 'react';
    
    export default class Foot extends React.Component {
        constructor(props) {
            super(props);
        }
        render() {
            return <h1>Hello World</h1>;
        }
    }
    

    test.js

    import React from 'react';
    import ReactDOM from 'react-dom';
    import Foot from './foot.js';
    
    require('./../css/base.scss');
    
    ReactDOM.render(
      <Foot />,
      document.getElementById("app")
    );

    这是最简单的webpack加react,test.js为入口文件

    2.常见问题

    问题1  Uncaught TypeError: Super expression must either be null or a function, not undefined

    如果碰到这个问题不要去百度了,先狠狠的打自己一顿起,因为你是单词写错了,出现这个问题百分之99.99是因为单词写错了,反正我是把Component写成了Compontent

     问题2  Warning: React.createElement: type should not be null, undefined, boolean, or number. It should be a string (for DOM elements) or a ReactClass (for composite components).

               Uncaught Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined.

        

    出现这个问题,我也搞了很久,最后把  import { Foot } from './foot.js'  改成了 import Foot from './foot.js' 就解决了,使用export default时,对应的import语句不需要使用大括号,不使用export default时,对应的import语句需要使用大括号。

    最后: 我只是一个萌萌的前端,有问题一起思考,大家共同进步

  • 相关阅读:
    hdu 1042 N!(大数)
    1027代码审计平台 3 Java maven
    1027代码审计平台 2-sonarscanner项目变更
    1027代码审计平台 1-sonar scanner
    app遍历——appCrawler的使用
    markdown语法
    app crawler1
    WebDriverAgent原理
    yaml语言教程
    Air test 基于屏幕比例实现滑动的方法
  • 原文地址:https://www.cnblogs.com/mianbaodaxia/p/6170726.html
Copyright © 2011-2022 走看看