手动用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,mootools,dojo)使用适合自己的编程别名命名
Sep 14 Javascript
原生javascript和jquery判断浏览器版本等信息
Jul 04 Javascript
谈谈Jquery中的children find 的区别有哪些
Oct 19 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
Aug 05 Javascript
用AngularJS来实现监察表单按钮的禁用效果
Nov 02 Javascript
javascript深拷贝和浅拷贝详解
Feb 14 Javascript
微信小程序 支付功能(前端)的实现
May 24 Javascript
基于js中style.width与offsetWidth的区别(详解)
Nov 12 Javascript
JS 使用 window对象的print方法实现分页打印功能
May 16 Javascript
微信小程序支付前端源码
Aug 29 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
Sep 27 Javascript
记一次用ts+vuecli4重构项目的实现
May 21 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
ASP知识讲座四
2006/10/09 PHP
E路文章系统PHP
2006/12/11 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
让您的菜单不离网站
2006/10/03 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
jQuery之折叠面板的深入解析
2013/06/19 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
django 多数据库配置教程
2018/05/30 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
python之array赋值技巧分享
2019/11/28 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
土木工程毕业生自荐信
2013/09/21 职场文书
品管员岗位职责
2013/11/10 职场文书
农业资源与环境专业自荐信范文
2013/12/30 职场文书
高中校园广播稿
2014/01/11 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
2015政治思想表现评语
2015/03/25 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
2015年统战工作总结
2015/05/19 职场文书
迎国庆主题班会
2015/08/17 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书