一、创建基本的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. python学习(五)--打印错误信息

    from urllib import request #打印错误信息 except Exceptionlist = [ "http://www.baidu11.com/", &qu ...

  2. Spring MVC+Fastjson之时间类型序列化

    时间类型序列化: 注意红色代码,必须引入fastjson的JSONField类,而非其它. import com.alibaba.fastjson.annotation.JSONField; @Ent ...

  3. TR move up && TR move down

    code display :: <!DOCTYPE HTML><html>    <head>            <link href="boo ...

  4. js实现螺旋纹理特效

    效果如下       实现代码如下: <!doctype html> <html> <head> <meta charset="UTF-8" ...

  5. Avro-RPC client in Flume

    Avro used in Flume Define the interface of RpcClient public interface RpcClient { public int getBatc ...

  6. greenplum维护

    1.用户管理 psql -d sea CREATE DATABASE BI; CREATE USER ubi WITH PASSWORD 'pwdbi' NOSUPERUSER; GRANT ALL ...

  7. cropperjs的高度过大(container height too much)

    cropperjs的高度过大(container height too much) 标签(空格分隔): JavaScript 业务需要web头像裁切,用canvas写了个demo卡成一匹马,于是就去寻 ...

  8. 基于k8s的ES集群定期删除索引

    apiVersion: batch/v1beta1 kind: CronJob metadata: name: elasticsearch namespace: elasticsearch label ...

  9. Mrach 9 2017 Week 10 Thursday

    There is a kind of beauty in imperfection. 有一种美叫做不完美. Every thing, every one, in the world, is not p ...

  10. 第一次团队合作,对Scrum的初步了解

    学习和运用scrum 作为长大的大三老腊肉,我们已经在长大生活了两年多,对于什么是长大人最想完善的校园需求.最想拥有的校园服务媒介也有了更加深切的体会. 于是,GoodJob小团队blingbling ...