<!-- 其实网上关于webpack的教程已经很多了,但是本人在学习过程中发现很多教程有错误,或者写的很不全面,结果做的过程出现各种各样的问题,对新手不但不友好还会让人浪费很多不必要的时间。所以决定自己做个简易教程,这个教程也没有写太深入,面向的是纯新手,但按这个教程大家能快速搭建自己的webpack,方便大家为后面的学习做准备 -->

github地址   https://github.com/Skura23/simple-webpack-test/tree/master

项目结构

--your project
|--prod
|--components
|--first.js
|--index.js
|--build
|--index.html
|--bundle.js

用npm安装依赖

npm init ,填写信息默认即可

npm install react --save-dev   安装react

npm install react-dom --save-dev (或者 npm i react-dom)  安装react-dom

npm install webpack --save-dev  安装webpack

npm install babel-loader --save-dev  安装babelReact 

npm install jsx-loader --save-dev  安装jsx-loader将JSX语法转为js语句

创建webpack.config.js

var path=require('path');

module.exports={
entry:path.resolve(__dirname,'./prod/index.js'),
output:{
path:path.resolve(__dirname,'./build'),
filename:'bundle.js',
},
module: {
loaders: [{
test: /\.js$/,
loader: 'babel!jsx',
exclude: /node_modules/ ,
presets: ['es2015', 'react']
}]
}
}

entry:指入口文件的配置项

output:配置打包结果,path定义了输出的文件夹,filename则定义了打包结果文件的名称

module:定义了对模块的处理逻辑,这里可以用loaders定义了一系列的加载器,以及一些正则。当需要加载的文件匹配test的正则时,就会调用后面的loader对文件进行处理,这正是webpack强大的原因。

接着配置index.js

var React = require('react');
var ReactDOM = require('react-dom');
var AppComponent = require('./components/first.js');
ReactDOM.render(<AppComponent />, document.getElementById('content'));

再配置first.js(这个是自定义组件)

var React = require('react');
var ReactDOM = require('react-dom');
var FirstComp = React.createClass({
render: function () {
return (
<div className="firstComp">
Hello World!
</div>
);
}
}); module.exports = FirstComp;

修改index.html以引入bundle.js,

bundle.js的生成位置在前面已经配置过了,所以我们只要在index.html里引入就可以了

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>React Test</title>
</head>
<body>
<div id="content"></div>
<script src="bundle.js"></script>
</body>
</html>

配置package.json

打开package.json,并找到scripts代码块

修改scripts为

"scripts": { "build": "webpack" }

并且执行:

npm run build

现在打开index.html,可以看见Hello world,说明我们使用webpack打包成功。

其实教程至此就完了,但后面你会发现每次更新文件后都要使用npm run build重新打包,费时费力,

接下来我们使用webpack-dev-server将项目运行在虚拟服务器上,我们可以在package.json文件内定义scripts,同时修改webpack的配置文件来达到文件修改能被监听,并自动刷新浏览器的效果!

配置webpack-dev-server

修改package.json为

"scripts": {
"build": "webpack",
"dev": "webpack-dev-server --hot --inline --devtool eval --progress --colors --content-base build"
},

webpack-dev-server: 在 localhost:8080 建立一个 Web 服务器

--devtool eval:为你的代码创建源地址。

--progress: 显示合并代码进度

--colors: 在命令行中显示颜色

--content-base build:指向设置的输出目录

并且在index.html里加入:

<script src="http://localhost:8080/webpack-dev-server.js"></script>

修改webpack.config.js :

var path = require('path');

module.exports = {
entry: ['webpack/hot/dev-server', path.resolve(__dirname, './prod/index.js')],
output: {
path: path.resolve(__dirname, './build'),
filename: 'bundle.js',
}
};

npm run dev

,打开http://localhost:8080,修改文件后保存,浏览器可自动刷新内容

 

github地址  https://github.com/Skura23/simple-webpack-test/tree/master

Webpack简易入门教程的更多相关文章

  1. Web压力测试工具 LoadRunner12.x简易入门教程--(一)回放与录制

        LoadRunner12.x简易入门教程--(一)回放与录制 今天在这里分享一下LoadRunner12.x版本的入门使用方法,希望对刚接触LoadRunner的童鞋有所帮助. LoadRun ...

  2. Webpack新手入门教程(学习笔记)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 30.0px Helvetica; color: #000000 } ...

  3. Pytest自动化测试-简易入门教程(02)

    Pytest框架简介 Pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:1.简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,3.还可以用来做sel ...

  4. webpack轻松入门教程

    webpack之傻瓜式教程及前端自动化入门 接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpa ...

  5. Lua简易入门教程

    环境:lua for windows (lfW)主页:http://luaforwindows.luaforge.net/https://code.google.com/p/luaforwindows ...

  6. 给萌新的Flexbox简易入门教程

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://www.sitepoint.com/flexbox-css-flexible-bo ...

  7. webpack的入门教程

    webpack是模块打包工具/前端资源加载.它是根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. webpack可以将css.less.js转换为一个静态文件,减少了页 ...

  8. Pytest自动化测试-简易入门教程(01)

    我们今天主讲的内容,就是测试框架Pytest,讲到这个测试框架对于没有做过Web自动化的伙伴来说,会觉得这个东西是陌生的,那么到底什么是框架呢?什么又是自动化呢?自动化为什么又要用框架呢? 难道我学自 ...

  9. mac os x使用Git简易入门教程

    具体如下: 1, 首先要了解什么是Git. 简而言之,Git是一个分布式的代码版本管理工具.类似的常用工具还有SVN,CVS. 概念了解参见:http://baike.baidu.com/subvie ...

随机推荐

  1. [JLOI2013]地形生成[组合计数]

    题意 \(n\) 元素各有一个高度 \(h\) 和关键数字 \(b\) .求有多少个下标序列和高度序列,满足对任意 \(i\),\(j< i\) 且 \(h_j < h_i\)的 \(j\ ...

  2. String.valueOf(object).trim())

    获得对象的字段的值,然后转成string类型,并且去掉前后空白~~ToString()是转化为字符串的方法 Trim()是去两边空格的方法把StringBuffer转换成String类型时 没有用.t ...

  3. python数据分析的工具环境

    python做数据分析的优势: 拥有大量的库为数据分析和处理提供了完整的工具链 随着库还在不断的增加的同时, 算法的实现也更加的创新.Numpy, matplotlib, scipy,scikit-l ...

  4. 树莓派3b添加python时间同步脚本

    树莓派没有电池,因此断电后系统时间会停止,直到你开机后又继续计时,所以会造成系统时间和实际时间有很大的误差. 因为项目需要用到本地时间,精度要求不高不想折腾(如果需要高精度,需要安装ntp),所以考虑 ...

  5. Jmeter介绍1

    要测试的响应字段: 响应文本:即响应的数据,比如json等文本 响应代码:http的响应代码,比如200,302,404这些 响应信息:http响应代码对应的响应信息,列如OK,Found Respo ...

  6. allure2 report+ jenkins 使用

    物色了一个挺漂亮的报告生成插件 ——allure. 下面介绍一下这个报告的使用. 1. 添加依赖 <dependencies> <!-- https://mvnrepository. ...

  7. JUC——线程池

    线程池本质的概念就是一堆线程一起完成一件事情. Executor package java.util.concurrent; public interface Executor { void exec ...

  8. 32bit GM命令

    GM 命令[32位服务端GM命令] //announce message this basicly tells a announcement on the whole server.. you can ...

  9. 【总结】Java面试题

    部分转自 https://blog.csdn.net/junchi_/article/details/79754032 一.String特性.StringBuffer 和 StringBuilder ...

  10. 【视频编解码·学习笔记】13. 提取PPS信息程序

    PPS结构解析 与之前解析SPS方式类似 一.定义PPS类: 在3.NAL Unit目录下,新建PicParamSet.cpp和PicParamSet.h,在这两个文件中写入类的定义和函数实现. 类定 ...