一、创建基本的webpack4.x项目

1、运行 npm init -y 快速初始化项目

2、在项目根目录创建src的源代码目录和dist产品目录

3、在src目录下创建 index.html

4、使用cnpm 下安装 webpack, 运行cnpm i webpack webpack-cli -D

  • 如何安装 cnpm 全局运行npm i cnpm -g

5、注意webpack 4.x 提供了 约定大于配置的概念;目的是为了尽量减少配置文件的体积;

  • 默认约定了;
  • 打包的入口是src -> index.js
  • 打包的输出文件是dist ->main.js
  • 4.x中新增了mode 选项(为必选项),可选的值为:development 和 production;

二、在项目中使用react

1、运行 npm i react react-dom -S 安装包

  • react 专门用于创建组件,同时组件的生命周期都在这个包中
  • react-dom :专门进行DOM操作你的,最主要的应用场景,就是ReactDOM.render()

2、在index.html 页面中,创建容器

<!-- 容器,将来,使用 React 创建虚拟DOM元素,都会被渲染到这个指定的容器中 -->
<div id='app'></div>

3、导入包

import React from 'react'
impotr ReactDOM from 'react-dom'

4、创建虚拟DOM元素:

// 参数1、创建的元素类型,字符串,表示元素的名称
// 参数2:是一个对象或null ,表示当前这个DOM元素的属性
// 参数3:子节点(包括其他 虚拟DOM 获取文本节点)
// 参数n:其他子节点 // const myh1 = React.createElement('h1', null, '这是一个大H1')
const myh1 = React.createElement('h1', {id: 'myh1', title: 'this is h1'}, '这是一个大H1')

5、渲染

// 参数1:要渲染的那个虚拟的DOM元素
// 参数2:指定页面上DOM元素,当做的容器
ReactDOM.render(myh1, document.getElementById('app'))
// Target container is not a DOM element. 经过分析猜测:第二个参数接收的应该是个 DOM元素而不是选择器

三、JSX语法

什么是JSX语法,就是符合 xml 的js 语法 ;(语法格式相对来说,要比HTML严谨很多)

  • 如何启动 JSX语法呢安装babel
  1. 运行 cnpm i babel-core babel-loader babel-puglin-transform-runtime -D
  2. 运行 cnpm i babel-preset-env babel-preset-stage-0 -D
  3. 安装能够识别jsx语法的包  cnpm i babel-preset-react -D
  4. 添加 .babelrc 配置文件
    {
    "presets": ["env", "stage-0", "react"],
    "plugins": ["transform-runtime"]
    }
  5. 添加 babel-loader 的配置项:
    module: { // 所有第三方 模块的配置规则
    rules: [ // 第三方匹配规则
    { test: /\.js|jsx$/, use: 'babel-loader', exclude: /node_modules/ }, // 千万别忘记加 exclude排除项
    ]
    }

注意:在配置webpack.config.js自动打包的时候,出现Error: Cannot find module '@babel/core'错误

我理解的是:babel-loader 版本太高不支持的原因,我就把版本装回了 @7.1.5版本 执行

在 npm run build 就成功了

附上简单的webpack 配置

关于babel-loader@8.0.5出现错误原因已经找到,感谢@Sky__zt的回答.
(忘了去看官方文档了)

官方默认babel-loader | babel 对应的版本需要一致: 即babel-loader需要搭配最新版本babel

具体请参考:《npm_babel-loader》

总结:

两种解决方案:

  1. 回退低版本

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

  1. 更新到最高版本:

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

手动创建简单webpack项目及React使用的更多相关文章

  1. Maven手动创建多模块项目

    Maven手动创建多模块项目 我要创建的项目名称是:unicorn,项目包含两个模块,分别是unicorn-core和unicorn-web.包的路径是com.goldpalm.tour. 项目创建流 ...

  2. Intellij创建简单Springboot项目

    Intellij创建简单Springboot项目 第一步:选择创建新项目——file-new-project 第二步:选择项目类型——Spring Initializr-next 第三步:输入项目信息 ...

  3. 创建简单web项目

    Intellij Idea直接安装(可根据需要选择自己设置的安装目录),jdk使用1.6/1.7/1.8都可以,主要是配置好系统环境变量,tomcat7上tomcat的官网下载压缩包解压即可. 一.创 ...

  4. 使用Intellij Idea创建简单Maven项目(转)

    我是学Java Web的,基本靠自学,在网上收集了各种视频资料,逐一的看,代码逐一的敲.学习了这么久之前一直未成想过要把自己的学习路程记录下来,在网上也看到过很多人把自己的学习历程以及遇到的问题写在了 ...

  5. IDEA创建简单SpringBoot项目

    环境:jdk 1.打开IDEA -->New --> Project -->Spring Initalizer-->next 2.此处,只做创建示例,所以next后Group等 ...

  6. truffle init 从零开始创建简单DApp项目

    下面的部分软件需要FQ.这里默认你已经会***,不懂的可以自己搜索解决. 软件安装 chrome浏览器 下载地址 metamask插件 在谷歌应用商店中搜索metamask ganche(图形版) 下 ...

  7. IDEA创建简单SSM项目使用传统Jar包

    #IDEA SSM项目使用传统Jar包 创建项目 下一步,命名 下一步,创建完成 下一步,创建资源文件夹resources 页面概览 左侧目录树 演示如下 一些简单的说明 其中包之间的层次调用 ent ...

  8. NPM安装vue-cli,并创建vue+webpack项目模板

    1.安装npm npm 是node.js 的包管理工具, 安装流程地址:https://docs.npmjs.com/cli/install  估计会非常慢,我们可以使用淘宝NPM镜像下载安装:htt ...

  9. Gradle——创建简单的项目

    项目 & 任务 Gradle 的一切都是基于项目和任务的. 构建由一个或多个项目组成.项目的概念很抽象,它取决于你要用Gradle 做什么 .项目可以是 一个 Jar 库或者一个 web 程序 ...

随机推荐

  1. 05.File类的学习

    File  是文件的意思 File类是一个静态类,所以File类是一个工具类 File类是专门操作文件的类 File的常用方法 namespace _16.File类的学习 { class Progr ...

  2. 数组和矩阵(1)——Find the Duplicate Number

    Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro ...

  3. Topcoder SRM 698 Div1 250 RepeatString(dp)

    题意 [题目链接]这怎么发链接啊..... Sol 枚举一个断点,然后类似于LIS一样dp一波 这个边界条件有点迷啊..fst了两遍... #include<bits/stdc++.h> ...

  4. 首页的css

    html,body{ margin:; padding:; background-color: lavenderblush; } a{ color:darkgray; } li{ list-style ...

  5. 用js md5加密

    /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as d ...

  6. onload与ready差异

    window.onload: 等所有资源加载完document.ready: DOM树构建完资源还没加载完 应该使用ready保证用户体验.否则当网站有很多图片资源时要很长时间才能加载完这段时间内Js ...

  7. 《ArcGIS Runtime SDK for Android开发笔记》——数据制作篇:发布具有同步能力的FeatureService服务

    1.前言 从ArcGIS 10.2.1开始推出离在线一体化技术之后,数据的离在线一体化编辑一直是大家所关注的一个热点.数据存储在企业级地理数据库中,通过ArcGIS桌面软件加载后配图处理,并发布到Ar ...

  8. Div+Css布局教程(-)CSS必备知识

    目录: 1.Div+Css布局教程(-)CSS必备知识 注:本教程要求对html和css有基础了解. 一.CSS布局属性 Width:设置对象的宽度(width:45px). Height:设置对象的 ...

  9. Hadoop ->> Hadoop是什么?

    Hadoop是什么? 1)Hadoop是一个分布式计算平台,程序员可以在不需要知道底层结构的情况下实现集群并行运算: 2)Hadoop不只是一个软件或者系统,它代表的是一个生态圈,一个做大数据分析计算 ...

  10. 使用slmgr查看、删除windows 授权(key)

    查看 slmgr.vbs /dlv 删除授权 使用管理员权限进入cmd All program -> accessories -> Command Prompt (右键 已管理员方式运行) ...