webpack打包react项目的实现方法


Posted in Javascript onJune 21, 2018

1webpack简介

webpack是目前最流行的打包工具之一,是一个为前端模块打包构建而生的工具,它既吸取了大量已有的方案优点和教训,也解决了很多前端开发过程中已有的痛点,如代码的拆分与异步加载,对非js资源的支持,强大的loader设计使得它更像是一个构建平台,而不是打包工具。

2webpack,react开发环境

1)新建一个项目文件夹,进入此文件夹,创建package.json文件(npm init命令)

2)确认已安装webpack,web pack-dev-server模块

3)安装babel(babel不懂的请先看https://3water.com/article/142362.htm)babel的目的有两个(将es6转为es5,转换jsx语法),

4) 安装babel-preset-es2015和babel-preset-react

5)安装babel-loader和 babel-core

6)babel工作需要.babelrc文件

{
 "presets":["react","es2015"]
}

7)最重要的webpack.config.js文件的配置

var path = require('path');
var webpack = require('webpack');
var HtmlwebpackPlugin = require('html-webpack-plugin');
var ROOT_PATH = path.resolve(__dirname);
var BUILD_PATH = path.resolve(ROOT_PATH, 'build');
var APP_PATH = path.resolve(ROOT_PATH, 'app');

module.exports = {
 entry: {
 app: path.resolve(APP_PATH, 'app.js')
 },
 output: {
 path: BUILD_PATH,
 filename: '[name].bundle.js'
 },
 resolve:{
 extensions:['','.js','.jsx'],
 root:APP_PATH
 },
 module:{
 loaders:[
  {
  test: /\.js?$/,
  loaders: ['babel-loader'],
  include: APP_PATH
  }
 ]
 },
 plugins:[
 new HtmlwebpackPlugin({
  title: 'demo',
  filename:'index.html'
 }),
 ]
}

这个应该是最简单的配置了,不懂的可以网上搜,其中用到HtmlwebpackPlugin

这个插件是帮我们自动生成html页面,并自动引入打包后的.js文件,其中的参数意思是,title这个页面的title,filename生成的页面名字

8)最后的项目文件目录为

webpack打包react项目的实现方法

app是项目组件文件夹,test是测试文件

list.js代码

import React from 'react';
import uuid from 'uuid';
import ListItem from '../listItem/listItem';

class List extends React.Component {
 constructor(props) {
 super(props);
 this.state = {
  items: []
 }
 }
 handleclick() {
 const value = this.refs.addlist.value;
 const str = {
  id: uuid.v1(),
  text: value
 }
 let items = this.state.items;
 items = [...items, str];//合并数值
 this.setState({
  items
 })
 }
 //删除其中的
 deleteItem(id) {
 this.setState({
  items: this.state.items.filter(
  result => result.id !== id
  ),
 });
 }
 render() {
 const ListIt = this.state.items.map(item => {
  return (
  <ListItem key={item.id} name={item} onDelete={this.deleteItem.bind(this)} />
  );
 });
 return (
  <div className="list">
  <input type="text" placeholder="请输入" ref="addlist" />
  <button className="addbutton" onClick={this.handleclick.bind(this)}>添加值</button>
  <ul>
   {ListIt}
  </ul>
  </div>
 );
 }
}

export default List;

listitem.js

import React from 'react';

class ListItem extends React.Component {
 render() {
 const text = this.props.name;
 return (
  <li onClick={() => this.props.onDelete(text.id)}>
  <span>{text.text}</span>
  </li>
 )
 }
}

export default ListItem;

app.js文件

import React from 'react';
import ReactDOM from 'react-dom';
import List from './list/list';

const app = document.createElement('div');
document.body.appendChild(app);
ReactDOM.render(<List />, app);

9)最后的package.json文件

{
 "name": "csdndemo",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
 "dev": "webpack-dev-server --hot"
 },
 "author": "",
 "license": "ISC",
 "devDependencies": {
 "babel-core": "^6.24.0",
 "babel-loader": "^6.4.1",
 "babel-preset-es2015": "^6.24.0",
 "babel-preset-react": "^6.23.0",
 "html-webpack-plugin": "^2.28.0",
 "react": "^15.4.2",
 "react-dom": "^15.4.2",
 "webpack": "^1.14.0",
 "webpack-dev-server": "^1.14.1"
 }
}

运行项目nam run dev

10)后续会有基于这个demo的测试enzyme库的使用,代码检测aslant,flux的使用,redux的使用

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

Javascript 相关文章推荐
心扬JS分页函数代码
Sep 10 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
Apr 07 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
Apr 16 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
Jun 14 Javascript
Jquery结合HTML5实现文件上传
Jun 25 Javascript
Javascript的无new构建实例详解
May 15 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
Aug 28 Javascript
jQuery实现全选、反选和不选功能
Aug 16 jQuery
jQuery中内容过滤器简单用法示例
Mar 31 jQuery
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 Javascript
详解使用React制作一个模态框
Mar 14 Javascript
Vue 实现分页与输入框关键字筛选功能
Jan 02 Javascript
Vue Router的懒加载路径的解决方法
Jun 21 #Javascript
详解如何使用webpack打包JS
Jun 21 #Javascript
vue自定义一个v-model的实现代码
Jun 21 #Javascript
JS实现模糊查询带下拉匹配效果
Jun 21 #Javascript
浅析Vue 生命周期
Jun 21 #Javascript
vue数组对象排序的实现代码
Jun 20 #Javascript
vue项目实现github在线预览功能
Jun 20 #Javascript
You might like
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
img的onload的另类用法
2008/01/10 Javascript
Exjs 入门篇
2010/04/07 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
jquery结合CSS使用validate实现漂亮的验证
2015/01/29 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
详解Nodejs内存治理
2018/05/13 NodeJs
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
Python3 入门教程 简单但比较不错
2009/11/29 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
python标准库os库的函数介绍
2020/02/12 Python
Python logging模块handlers用法详解
2020/08/14 Python
Python colormap库的安装和使用详情
2020/10/06 Python
css3的transition属性详解
2014/12/15 HTML / CSS
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
环境科学毕业生自荐信
2013/11/21 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书