zoukankan      html  css  js  c++  java
  • 在React项目中启用JSX语法(不用脚手架来搭建React开发环境)

    什么是JSX语法:就是符合XML规范的js语法。(语法格式相对于html严谨很多)

    如何启用JSX语法?

    安装babel插件:

    运行:

    cnpm i babel-core babel-loader babel-plugin-transform-runtime -D
    cnpm i babel-preset-env babel-preset-stage-0 -D
    

    安装能够识别转换JSX语法的包:

    运行:

    cnpm i babel-preset-react -D

    项目的根目录下添加.babelrc配置文件:

    {
        "presets": ["env", "stage-0", "react"],
        "plugins": ["transform-runtime"]
    }

    webpack.config.js文件中添加babel-loader的配置项:

    module: {
        rules: [
            {
                test: /.js|jsx$/,
                use: "babel-loader",
                exclude: /node_modules/
            }
        ]
    }

    主要文件:

    package.json:(babel-loader必须为7.x版本)

    {
      "name": "wp4-1",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1",
        "dev": "webpack-dev-server --open chrome --port 3000 --hot --host 127.0.0.1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "babel-core": "^6.26.3",
        "babel-loader": "^7.1.5",
        "babel-plugin-transform-runtime": "^6.23.0",
        "babel-preset-env": "^1.7.0",
        "babel-preset-react": "^6.24.1",
        "babel-preset-stage-0": "^6.24.1",
        "html-webpack-plugin": "^3.2.0",
        "webpack": "^4.41.5",
        "webpack-cli": "^3.3.10",
        "webpack-dev-server": "^3.10.1"
      },
      "dependencies": {
        "react": "^16.12.0",
        "react-dom": "^16.12.0"
      }
    }
    

    webpack.config.js:

    const path = require("path")
    const htmlWebpackPlugin = require("html-webpack-plugin") // 导入 在内存中自动生成html文件 的插件
    
    // 创建一个插件的实例对象
    const htmlPlugin = new htmlWebpackPlugin({
        template: path.join(__dirname, "./src/index.html"), // 源文件
        filename: "index.html" // 生成的 内存中首页的 名称
    })
    
    // 向外暴露一个打包的实例对象,因为webpack是基于Node构建的,所以webpack支持所有Node API和语法
    // webpack 默认只能打包处理.js后缀名类型的文件,想.vue .png无法主动处理,所以要配置第三方的loader
    module.exports = {
        mode: 'development', // development 或 production
        plugins: [
            htmlPlugin
        ],
        module: { // 所有第三方模块的配置规则
            rules: [ // 第三方匹配规则
                {
                    test: /.js|jsx$/,
                    use: "babel-loader",
                    exclude: /node_modules/ // exclude千万别忘记
                }
            ]
        }
    }

    .babelrc

    {
        "presets": ["env", "stage-0", "react"],
        "plugins": ["transform-runtime"]
    }

    index.js:

    // 导入包
    import React from 'react'
    import ReactDOM from 'react-dom'
    
    // HTML是最优秀的标记语言;
    // 注意:在JS文件中,默认不能写类似于HTML的标记语言,否则打包会失败
    // 可以使用babel来转换这些JS中的标记
    // 这种在JS中混合写入类似于HTML的语法叫做JSX语法,符合XML规范的JS
    // JSX语法的本质还是在运行的时候,被babel转换成React.createElement形式来执行的
    
    const myDiv = <div id="my-div" title="my div">这是一个div元素</div>
    
    ReactDOM.render(myDiv, document.getElementById("app"))

    index.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <h1>首页</h1>
        <div id="app"></div>
    </body>
    </html>
  • 相关阅读:
    GNU make manual 翻译(九十九)
    GNU make manual 翻译( 九十五)
    Shell的 for 循环小例子
    makefile中对目录遍历的小例子
    GNU make manual 翻译(九十三)
    GNU make manual 翻译( 一百)
    GNU make manual 翻译( 九十七)
    GNU make manual 翻译( 九十八)
    mapserver4.8.3 的readme.win32的中文翻译文件
    遥控器编程
  • 原文地址:https://www.cnblogs.com/samve/p/12388565.html
Copyright © 2011-2022 走看看