pingf / ToyReact

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ToyReact

npx webpack

--> dist/main.js

mode: 'development',
optimization: {
  minimize: false
}
npx webpack

--> dist/main.js

npm install --save-dev babel-loader @babel/core @babel/preset-env

    module: {
        rules: [
            {
                test: '\.js$',
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env']
                    }
                }
            }
        ]
    },

main.html

<script src='main.js'></script>

main.js

for(let i of [1,2,3]){
    console.log(i)
}

let a = <div />

npm install --save-dev @babel/plugin-transform-react-jsx

    module: {
        rules: [
            {
                test: '\.js$',
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env'],
                        plugins: ['@babel/plugin-transform-react-jsx']
                    }
                }
            }
        ]
    },
main.js:6 Uncaught ReferenceError: React is not defined
    at eval (main.js:6)
    at Object../main.js (main.js:96)
    at __webpack_require__ (main.js:20)
    at main.js:84
    at main.js:87
    module: {
        rules: [
            {
                test: '\.js$',
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env'],
                        plugins: [['@babel/plugin-transform-react-jsx', {pragma: 'createElement'}]]
                    }
                }
            }
        ]
    },
function createElement(tagName, attributes, ...children){
  return document.createElement(tagName);
}

let a = <div id="a" class="c">
    <div></div>
    <div></div>
    <div></div>
</div>
function createElement(tagName, attributes, ...children){
  let e = document.createElement(tagName);
  for (let p in attributes){
      e.setAttribute(p, attributes[p]);
  }
  for (let child of children){
      if (typeof child === 'string') {
          child = document.createTextNode(child);
      }
      e.appendChild(child);
  }
  return e;
}

window.a = <div id="a" class="c">
    <div></div>
    <div></div>
    <div></div>
</div>

document.body.appendChild(a)

main.html

<body></body>
<script src='main.js'></script>
document.body.appendChild(<MyComponent id="a" class="c">
    <div>1</div>
    <div>2</div>
    <div>3</div>
</MyComponent>)

About


Languages

Language:JavaScript 100.0%