国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - 編程技術(shù) - React.JS中JSX的原理與關(guān)鍵實現(xiàn)

React.JS中JSX的原理與關(guān)鍵實現(xiàn)

2020-11-30 23:02前端歷劫之路maomin9761 編程技術(shù)

本篇和大家一起學(xué)習(xí)React.js中JSX的原理與關(guān)鍵實現(xiàn)

React.JS中JSX的原理與關(guān)鍵實現(xiàn)

在開始開發(fā)之前,我們需要創(chuàng)建一個空項目文件夾。

安裝

初始化

npm init -y 

2.安裝webpack相關(guān)依賴

npm install webpack webpack-cli -D 

3.安裝babel-loader相關(guān)依賴

npm install babel-loader @babel/core @babel/preset-env -D 

4.安裝jsx支持依賴

npm install @babel/plugin-transform-react-jsx -D 

配置

1.在根目錄下創(chuàng)建main.js文件 此文件為入口文件。

2.在項目根目錄下創(chuàng)建webpack.config.js

module.exports={ 

  entry:{ 

    main:'./main.js' 

  }, 

  module:{ 

    rules:[ 

      { 

        test:/\.js$/, 

        use:{ 

          loader:'babel-loader'

          options:{ 

            presets:['@babel/preset-env'], 

            plugins:[['@babel/plugin-transform-react-jsx',{pragma:'createElement'}]] // 自定義設(shè)置pragma參數(shù),我也可以設(shè)置為我的名字:maomin 

          } 

        } 

      } 

    ] 

  }, 

  mode:'development'

  optimization:{ 

    minimize: false 

3.創(chuàng)建一個reactJsx.js文件 此文件為主要邏輯文件。

開發(fā)

reactJsx.js

// 封裝創(chuàng)建Dom節(jié)點 

class ElementWrapper { 

  constructor(type) { 

    this.root = document.createElement(type); 

  } 

  setAttibute(name, value) { 

    this.root.setAttibute(name, value); 

  } 

  appendChild(component) { 

    this.root.appendChild(component.root); 

  } 

 

// 封裝插入文本節(jié)點 

class TextWrapper { 

  constructor(content) { 

    this.root = document.createTextNode(content); 

  } 

// 組件 

export class Component { 

  constructor() { 

    this.props = Object.create(null); // 創(chuàng)建一個原型為null的空對象 

    this.children = []; 

    this._root = null

  } 

  setAttribute(name, value) { 

    this.props[name] = value; 

  } 

  appendChild(component) { 

    this.children.push(component); 

  } 

  get root() { // 取值 

    if (!this._root) { 

      this._root = this.render().root; 

    } 

    return this._root; 

  } 

// 創(chuàng)建節(jié)點,createElement對照 webapck.config.js 中pragma參數(shù)。 

export function createElement(type, attributes, ...children) { 

  let e; 

  if (typeof type === "string") { 

    e = new ElementWrapper(type); 

  } else { 

    e = new type(); 

  } 

  for (let p in attributes) { // 循環(huán)屬性 

    e.setAttribute(p, attributes[p]); 

  } 

  let insertChildren = (children) => { 

    for (let child of children) { 

      if (typeof child === "string") { 

        child = new TextWrapper(child); 

      } 

      if (typeof child === "object" && child instanceof Array) { 

        insertChildren(child); // 遞歸 

      } else { 

        e.appendChild(child); 

      } 

    } 

  }; 

  insertChildren(children); 

  return e; 

 

// 添加到Dom中 

export function render(component, parentElement) { 

  parentElement.appendChild(component.root); 

main.js

import {createElement,Component,render} from './reactJsx.js'class MyComponent extends Component { render(){ return

maomin

import {createElement,Component,render} from './reactJsx.js' 

 

class MyComponent extends Component { 

  render(){ 

    return <div> 

      <h1>maomin</h1> 

      {this.children} 

    </div> 

  } 

 

render(<MyComponent id="name" class="age"

  <div>xqm</div> 

  <div>my girlfriend</div> 

</MyComponent>,document.body) 

執(zhí)行

npx webpack 

在dist文件夾下創(chuàng)建html文件,然后引入main.js,打開html文件就可以看到效果了。

React.JS中JSX的原理與關(guān)鍵實現(xiàn)

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 爱爱综合网 | 精品日韩一区二区 | 国产精品一区久久久 | 日韩在线网址 | 久久综合久久综合久久综合 | 最近中文字幕 | 一区二区成人网 | 中文字幕av第一页 | 综合另类 | 国产精品美乳一区二区免费 | 香蕉大人久久国产成人av | 亚洲一区观看 | 精品一区二区电影 | 刺激网 | 国产二区三区 | 91精品国产乱码久 | 国产精品免费观看 | 亚洲日本国产 | 精品www| 在线免费观看av电影 | 一区二区三区高清 | 综合色播 | 一级黄色毛片 | 91色在线观看 | 欧美日韩视频在线 | 免费av大全 | 久久大陆| 欧美污污 | 中文字幕在线一区二区三区 | 日韩欧美在线综合网 | 欧美日韩在线播放 | 影音先锋网址 | 国产精品久久久久久久久久大牛 | 国内精品一区二区 | 国产中文字幕在线播放 | 中文字幕人成乱码在线观看 | 久久久久综合 | 日本网站在线免费观看 | 日韩免费 | 日韩免费一区 | 久久av综合 |