手动用webpack搭建第一个ReactApp的示例


Posted in Javascript onApril 11, 2018

学习 React 可以用以下方法直接创建一个 ReactApp ,本文主要介绍如何手动来搭这个环境。

npm install -g create-react-app
create-react-app my-app
cd my-app
npm start

使用淘宝 NPM 镜像

使用 React 和 Webpack 需要安装很多依赖包,不走代理的话速度会非常慢,也很容易出错,所以这里推荐使用淘宝的 npm 镜像来安装,速度非常理想。

使用淘宝镜像安装 npm 包只需要两步即可:

安装 cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

使用 cnpm 来安装包

只需要将 npm 替换成 cnpm 即可获得高速下载。

cnpm install [name]

下文中给出的所有安装依赖包的命令都使用 cnpm 安装的。你也可以用 npm。

开始第一个 React

初始化一个 json 配置文件

npm init

执行上面这条命令后输入一些信息即可创建 json 文件,这个文件也可以手动建。entry point 要填 index.js,其他的随意。

手动用webpack搭建第一个ReactApp的示例

安装 React

cnpm install react react-dom --save

安装编译工具 babel

cnpm install babel-core babel-loader babel-preset-react babel-preset-es2015 --save-dev

安装打包工具 wepback

全局的和当前文件夹的最好都装上,这样可以花式打包。

cnpm install webpack webpack-cli --save-dev
cnpm install webpack-dev-server --save-dev
cnpm install webpack webpack-cli -g
cnpm install webpack-dev-server -g

配置 webpack

为了方便,以下所有文件都建在同一个文件夹下面。

新建 webpack.config.js 并添加以下内容

const path =require('path'); 
module.exports = { 
 entry: path.resolve(__dirname, 'index.js'), 
 output: { 
 path: path.resolve(__dirname, ''), 
 filename: "bundle.js" 
 }, 
 mode: 'development',
 module: { 
 rules: [ 
  { 
  test: /\.js$/, 
  exclude: /node_modules/, 
  loader: "babel-loader", 
  options: { 
   presets: ["es2015","react"] 
  } 
  } 
 ] 
 } 
};

在 webpack4 中 mode 属性如果不指定会有警告。

创建测试文件

新建 index.js 文件

import React from 'react'; 
import ReactDOM from 'react-dom'; 
 ReactDOM.render( 
 <h1>我的第一个react例子</h1>, 
 document.getElementById('root') 
 );

新建 index.html 文件

<!DOCTYPE html> 
 <html> 
 <head> 
 <meta charset="UTF-8" /> 
 <title>example</title> 
 </head> 
 <body> 
 <div id="root"></div> 
 <script src="bundle.js"></script> 
 </body> 
 </html>

启动

最后执行 webpack 即可将 index.js 打包生成浏览器可执行的 bundle.js 文件。此时,index.html 文件已经可在浏览器中执行了。

附上我的 package.json 文件,直接执行 cnpm install 就能安装所有依赖。

{
 "name": "myapp",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
 "start": "webpack",
 "start:dev": "webpack-dev-server"
 },
 "author": "",
 "license": "ISC",
 "devDependencies": {
 "babel-core": "^6.26.0",
 "babel-loader": "^7.1.4",
 "babel-preset-es2015": "^6.24.1",
 "babel-preset-react": "^6.24.1",
 "webpack": "^4.2.0",
 "webpack-cli": "^2.0.12",
 "webpack-dev-server": "^3.1.1"
 },
 "dependencies": {
 "react": "^16.2.0",
 "react-dom": "^16.2.0"
 }
}

热启动

如果 index.js 发生了改变,则需要再编译打包一次,才能更新 bundle.js 文件,这样效率非常低。webpack 提供了一条命令可以实时进行编译打包。

webpack --watch

执行这条命令后,index.js 文件就能被动态编译打包了,非常方便。

不过上面的热启动还是很麻烦,还要手动刷新浏览器,这里还有很牛逼的。

直接执行 webpack-dev-server 即可自动刷新浏览器

 手动用webpack搭建第一个ReactApp的示例

如果要换端口的话,在启动命令后面加上--port 端口号即可,例如:webpack-dev-server --port 8001

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 替换
Feb 19 Javascript
Javascript Jquery 遍历Json的实现代码
Mar 31 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
Oct 30 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
Feb 15 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
javascript实现tab切换特效
Nov 12 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
Dec 25 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
Jun 24 Javascript
使用jquery datatable和bootsrap创建表格实例代码
Mar 17 Javascript
underscore之Collections_动力节点Java学院整理
Jul 10 Javascript
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
初探Vue3.0 中的一大亮点Proxy的使用
Dec 06 Javascript
浅谈vue-cli 3.0.x 初体验
Apr 11 #Javascript
vue 组件高级用法实例详解
Apr 11 #Javascript
vue单个组件实现无限层级多选菜单功能
Apr 10 #Javascript
React如何避免重渲染
Apr 10 #Javascript
vue select组件的使用与禁用实现代码
Apr 10 #Javascript
vue 自定义 select内置组件
Apr 10 #Javascript
JavaScript如何对图片进行黑白化
Apr 10 #Javascript
You might like
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
薪资那么高的Web前端必看书单
2017/10/13 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
Python编程实现的简单神经网络算法示例
2018/01/26 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
python3实现基于用户的协同过滤
2018/05/31 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Python List cmp()知识点总结
2019/02/18 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
python3下pygame如何实现显示中文
2020/01/11 Python
Python中实现输入一个整数的案例
2020/05/03 Python
python读取图像矩阵文件并转换为向量实例
2020/06/18 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
酒店服务与管理毕业生求职信
2013/11/02 职场文书
咖啡书吧创业计划书
2014/01/13 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
学校评语大全
2014/05/06 职场文书
小学先进集体事迹材料
2014/05/31 职场文书
任长霞观后感
2015/06/16 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
《落花生》教学反思
2016/02/16 职场文书