手动用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 相关文章推荐
javascript 继承实现方法
Aug 26 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
Feb 27 Javascript
js setTimeout opener的用法示例详解
Oct 23 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
Nov 21 Javascript
js事件监听机制(事件捕获)总结
Aug 08 Javascript
js倒计时小实例(多次定时)
Dec 08 Javascript
详解angularJS自定义指令间的相互交互
Jul 05 Javascript
JS运动特效之同时运动实现方法分析
Jan 24 Javascript
利用js实现前后台传送Json的示例代码
Mar 29 Javascript
vue 中滚动条始终定位在底部的方法
Sep 03 Javascript
Vue-CLI与Vuex使用方法实例分析
Jan 06 Javascript
vue中使用vue-pdf的方法详解
Sep 05 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
dedecms系统常用术语汇总
2007/04/03 PHP
php xml常用函数的集合(比较详细)
2013/06/06 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
MSN消息提示类
2006/09/05 Javascript
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
js中数组常用方法总结(推荐)
2019/04/09 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python开发的HTTP库requests详解
2017/08/29 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
python异步存储数据详解
2019/03/19 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
电子信息专业学生自荐信
2013/11/09 职场文书
尽职尽责村干部自我鉴定
2014/01/23 职场文书
顶撞老师检讨书
2014/02/07 职场文书
母校寄语大全
2014/04/10 职场文书
服务行业口号
2014/06/11 职场文书
初中班主任工作总结2015
2015/05/13 职场文书