手动用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 来操作字符串(一些字符串函数)
Feb 15 Javascript
兼容ie和firefox js关闭代码
Dec 11 Javascript
js中的cookie的读写操作示例详解
Apr 17 Javascript
js获取url中&quot;?&quot;后面的字串方法
May 15 Javascript
AngularJS+Bootstrap实现多文件上传与管理
Nov 08 Javascript
js常用的继承--组合式继承
Mar 06 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
Jul 12 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 Javascript
如何在微信小程序中存setStorage
Dec 13 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
Feb 19 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
Apr 13 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 获取目录下的图片并随机显示的代码
2009/12/28 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
js 学习笔记(三)
2009/12/29 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
python实现下载指定网址所有图片的方法
2015/08/08 Python
Python+Django搭建自己的blog网站
2018/03/13 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
Python实现像awk一样分割字符串
2020/09/15 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
在校生党员自我评价
2013/09/25 职场文书
奖学金个人总结
2015/03/04 职场文书
收入证明范本
2015/06/12 职场文书
赞美教师的句子
2019/09/02 职场文书