手动用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 相关文章推荐
基于jquery的横向滚动条(滑动条)
Feb 24 Javascript
jQuery中调用WebService方法小结
Mar 28 Javascript
js判断上传文件的类型和大小示例代码
Oct 18 Javascript
js学习阶段总结(必看篇)
Jun 16 Javascript
javascript iframe跨域详解
Oct 26 Javascript
Vue.js路由组件vue-router使用方法详解
Dec 02 Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 Javascript
layui点击按钮添加可编辑的一行方法
Aug 15 Javascript
对angularJs中ng-style动态改变样式的实例讲解
Sep 30 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
Mar 19 Javascript
layui radio点击事件实现input显示和隐藏的例子
Sep 02 Javascript
js实现鼠标点击飘爱心效果
Aug 19 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 Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
PHP与MySQL开发的8个技巧小结
2010/12/17 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
Js 本页面传值实现代码
2009/05/17 Javascript
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
Python守护进程实现过程详解
2020/02/10 Python
python和go语言的区别是什么
2020/07/20 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
给男朋友的道歉信
2014/01/12 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
社区志愿者活动方案
2014/08/18 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
雨花台导游词
2015/02/06 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python