手动创建简单webpack项目及React使用
一、创建基本的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
- 运行 cnpm i babel-core babel-loader babel-puglin-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"]
} - 添加 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》
总结:
两种解决方案:
- 回退低版本
npm install -D babel-loader@7 babel-core babel-preset-env
- 更新到最高版本:
npm install -D babel-loader @babel/core @babel/preset-env webpack
手动创建简单webpack项目及React使用的更多相关文章
- Maven手动创建多模块项目
Maven手动创建多模块项目 我要创建的项目名称是:unicorn,项目包含两个模块,分别是unicorn-core和unicorn-web.包的路径是com.goldpalm.tour. 项目创建流 ...
- Intellij创建简单Springboot项目
Intellij创建简单Springboot项目 第一步:选择创建新项目——file-new-project 第二步:选择项目类型——Spring Initializr-next 第三步:输入项目信息 ...
- 创建简单web项目
Intellij Idea直接安装(可根据需要选择自己设置的安装目录),jdk使用1.6/1.7/1.8都可以,主要是配置好系统环境变量,tomcat7上tomcat的官网下载压缩包解压即可. 一.创 ...
- 使用Intellij Idea创建简单Maven项目(转)
我是学Java Web的,基本靠自学,在网上收集了各种视频资料,逐一的看,代码逐一的敲.学习了这么久之前一直未成想过要把自己的学习路程记录下来,在网上也看到过很多人把自己的学习历程以及遇到的问题写在了 ...
- IDEA创建简单SpringBoot项目
环境:jdk 1.打开IDEA -->New --> Project -->Spring Initalizer-->next 2.此处,只做创建示例,所以next后Group等 ...
- truffle init 从零开始创建简单DApp项目
下面的部分软件需要FQ.这里默认你已经会***,不懂的可以自己搜索解决. 软件安装 chrome浏览器 下载地址 metamask插件 在谷歌应用商店中搜索metamask ganche(图形版) 下 ...
- IDEA创建简单SSM项目使用传统Jar包
#IDEA SSM项目使用传统Jar包 创建项目 下一步,命名 下一步,创建完成 下一步,创建资源文件夹resources 页面概览 左侧目录树 演示如下 一些简单的说明 其中包之间的层次调用 ent ...
- NPM安装vue-cli,并创建vue+webpack项目模板
1.安装npm npm 是node.js 的包管理工具, 安装流程地址:https://docs.npmjs.com/cli/install 估计会非常慢,我们可以使用淘宝NPM镜像下载安装:htt ...
- Gradle——创建简单的项目
项目 & 任务 Gradle 的一切都是基于项目和任务的. 构建由一个或多个项目组成.项目的概念很抽象,它取决于你要用Gradle 做什么 .项目可以是 一个 Jar 库或者一个 web 程序 ...
随机推荐
- 选择排序——Java实现
一.排序思想 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是: 从待排序列中选出最小(或最大)的一个元素,记录其下标(数组)的位置: 将记录的下标值与待排序列的第一个 ...
- php自建静态博客步骤
进入博客目录新建index.php页面 <?php require “XXXX/index.html”;//引入html页面 是否能进入localhost/xxx/index.php 注意,ph ...
- SQLAlchemy的使用---数据库的创建与连接
# 1. 导入SQLAlchemy from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Col ...
- less自动编译 VScode 开发工具配置
1.首先在vscode商店下载EasyLess插件,安装 2.在VS Code项目中,有一个.vscode的文件夹,找里面的settings.json文件(或者在文件-首选项-设置-搜索setting ...
- js匿名函数使用&传参
function () { alert("error"); } //报错:匿名函数不能直接调用 使用 0x01 (function () { alert("Success ...
- LeAndroid招聘汇总
招聘Android通讯开发经理 工作地点:北京-朝阳区 工作经验:3-5年 薪资范围:¥ 面议 学历要求:本科以上 职责描述1.负责设计指导开发和优化Android网络通讯相关功能:2.负责设计指导开 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(15)、要素绘制Drawtools3.0工具DEMO
1.前言 移动GIS项目开发中点线面的要素绘制及编辑是最常用的操作,在ArcGIS Runtime SDK for iOS 自带AGSSketchLayer类可以帮助用户快速实现要素的绘制,图形编辑. ...
- ARM 虚拟机使用同一个公共 IP 访问公网的解决方案
ARM 虚拟机使用同一个公共 IP 访问公网的解决方案 2017-2-21 作者 Azure 目前有两种部署模型:资源管理器 ARM 和经典部署模型 ASM.ASM 的虚拟机默认公用云服务的 VIP ...
- WAKE-WIN10-SOFT-软件-Matlab配置及工具箱
1Matlab 1,1Matlab下载,安装,配置,,, 1,2 2工具箱 2,1LibSVM 必应:https://www.bing.com/search?q=libsvm&qs=n& ...
- mysqlimport导入简单测试
1 创建一个文本文档:[mysql@xxxycrdb]$ more /tmp/ldcmd1.txt 1,abc,abc@qq.com1,abc,abc@qq.com1,abc,abc@qq.co ...