这些天在项目之余的时间学习了webpack打包项目的东西,非常荣幸的找到一些大神的文章来学习,死劲嚼了几天,终于略知一二。在以后的工作上还需继续学习,下面我将分享我这几天学到的一点东西,希望能让我一个还不算入门webpack的小白领大家入门。本文主要还是摘抄大神的文章加上自己手动的一些过程记录,不喜勿喷,谢谢!开车了!!!开车了!!!

  一、什么是Webpack

  webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成少量的 bundle - 通常只有一个,由浏览器加载。

  webpack的工作原理:把你的项目当做一个整体,通过一个给定的主文件(如:index.js),Webpack将从这个文件开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个(或多个)浏览器可识别的JavaScript文件。

  

  二、webpack的使用

  1、新建项目目录

  我们可以先把相关的,基本文件及目录新建好,然后进入到项目中:

  

  2项目初始化

  webpack安装完成后,我们紧接着输入命令来初始化项目,初始化命令:npm init; 在初始化的过程中,终端会问你一系列诸如项目名称,项目描述,作者等信息,不过不用担心,如果你不准备在npm中发布你的模块,这些问题的答案都不重要,回车默认即可,这时候项目中会多一个配置文件

  

  这时候,目录中会生成一个package.json文件,这是一个标准的npm说明文件,里面蕴含了丰富的信息,包括当前项目的依赖模块,自定义的脚本任务等等。

  接着我们开始安装相关的依赖:  npm install webpack webpack-dev-server vue-loader vue-html-loader css-loader vue-style-loader vue-hot-reload-api babel-loader babel-core babel-plugin-transform-runtime babel-preset-es2015 babel-runtime@5 --save-dev

  npm install vue --save。这时候在package.json文件中我们可以看到已安装相关的依赖包。

  

  安装完依赖,我们对相应的文件进行编辑:

  index.html文件                                                       main.js文件                                                                 App.vue文件

      

  在项目目录下新建 build 目录,用来存放我们的构建相关的代码文件等,然后在build目录下新建 webpack.config.js 这是我们的webpack配置文件,webpack需要通过读取你的配置,进行相应的操作。

  

  上例中,相信你已经看懂了我的配置,入口文件是main.js文件,配置了相应输出,然后使用 vue-loader 去加载 .vue 结尾的文件,接下来我们就可以构建项目了,我们可以在命令行中执行:

  webpack --display-modules --display-chunks --config build/webpack.config.js

  这是可能会抛出一个错误:这时我们需要再安装这个依赖,npm install vue-template-compiler --save-dev, 然后重新跑上面的命令,这是打包就成功了,并且在根目录中多了一个 dist/static目录(里面有一个我们打包输出的js文件)

  

  

  这时候运行:webpack --display-modules --display-chunks --config build/webpack.config.js,恭喜你,你的项目已经简单的配好了打包,可以正常运行了。

  

  3、webpack插件的使用

  首先安装 html-webpack-plugin 插件:npm install html-webpack-plugin --save-dev

  这时候我们的webpack.config.js文件要做修改,如下:

  

  执行命令:webpack --display-modules --display-chunks --config build/webpack.config.js,这时候我们输出的目录会多出一个index.html文件,并且在浏览器中可以正常运行该文件:

    

  4、中间件的使用

  一、webpack-dev-middleware

   安装需要的中间件依赖包:npm install webpack-dev-middleware webpack-hot-middleware --save-dev

  使用中间件的目的是为了提高开发效率,提供热加载。另外还需安装express,这是一个nodejs框架,安装命令:npm install express --save-dev

  装完依赖之后,我们需要在build目录下新建一个dev-server.js文件,并编辑相应内容:

  

  这时候我们可以运行服务,并且监听localhost: 8866,很开心,你会发现你的服务成功的启动了,是不是感觉要摆上几围庆祝庆祝一下!

  

  然而,你别高兴太早,当你在浏览器运行localhost:8866时,你会发现页面并没有出来,并且还报一个404的错误,恭喜你,你可以沮丧一会了!

  

  不要着急,咱们现在来解决这个问题,我们得在webpack.config.js文件里面做一点修改,如下:

  1、将 config.output.publicPath 修改为 ‘/‘;

  2、将 plugins 中 HtmlWebpackPlugin 中的 filename 修改为 ‘index.html’;

  3、重启服务

   启动服务成功!!!

  但是这样开发模式下的确是成功了,可是我们直接修改了 webpack.config.js 文件,这就意味着当我们执行 构建命令 的时候,配置变了,那么我们的构建也跟着变了,所以,一个好的方式是,不去修改webpack.config.js文件,我们在build目录下新建一个 webpack.dev.conf.js文件,意思是开发模式下要读取的配置文件,并写入一下内容:

  

  并且我们的dev-server.js文件要做相应的修改,将原来的:var config = require('./webpack.config') 改为 var config = require('./webpack.dev.config'),然后重启服务,同样是可以启动成功!

  二、webpack-hot-middleware

  webpack-hot-middleware 只配合 webpack-dev-middleware 使用,它能给你提供热加载。  

  这时,我们需要对相应的文件做修改

  webpack.dev.conf.js文件:

  

  webpack.config.js文件中入口配置中添加 ‘webpack-hot-middleware/client’,如下:

  

  dev-server文件:

  

  重启服务,然后修改你的index.html页面,此时热加载成功!

      

  最后,我们设置一下快捷键,在package.json文件上修改一下,这样我们就可以通过:npm run build来打包项目,npm run dev跑项目了

  

  到此结束!

  源码地址:https://github.com/Jacky-MYD/webpack.git

    

  

零基础学习webpack打包管理的更多相关文章

  1. 零基础学习hadoop到上手工作线路指导(编程篇)

    问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如 ...

  2. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  3. MongoDB实战开发 【零基础学习,附完整Asp.net示例】

    MongoDB实战开发 [零基础学习,附完整Asp.net示例] 阅读目录 开始 下载MongoDB,并启动它 在C#使用MongoDB 重构(简化)代码 使用MongoDB的客户端查看数据 使用Mo ...

  4. 【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

    [零基础学习FreeRTOS嵌入式系统]之一:FreeRTOS环境搭建 一:FreeRTOS系统下载 在官网上https://www.freertos.org/,找到下载入口. 或直接进入下载地址ht ...

  5. 零基础学习openstack【完整中级篇】及openstack资源汇总

    1.你是如何学习openstack的?2.你对openstack的组件了解多少?3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩心事 ...

  6. 零基础学习 Python 之前期准备

    写在之前 从今天开始,我将开始新的篇章 -- 零基础学习 Python,在这里我将从最基本的 Python 写起,然后再慢慢涉及到高阶以及具体应用方面.我是完全自学的 Python,所以很是明白自学对 ...

  7. salesforce零基础学习(九十六)Platform Event浅谈

    本篇参考:https://developer.salesforce.com/blogs/2018/07/which-streaming-event-do-i-use.html https://trai ...

  8. Salesforce 集成篇零基础学习(一)Connected App

    本篇参考: https://zhuanlan.zhihu.com/p/89020647 https://trailhead.salesforce.com/content/learn/modules/c ...

  9. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

随机推荐

  1. P2704 炮兵阵地

    题目描述 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图.在每一格平原地形上最 ...

  2. .net 分布式的未来:微服务

    一.背景&问题 之前框架是一个基于SOA思想设计的分布式框架.各应用通过服务方式提供使用,服务之间通信是RPC方式调用,具体实现基于.NET的WCF通信平台.框架存在如下2个问题: 1.高并发 ...

  3. 【深度学习系列】用PaddlePaddle和Tensorflow进行图像分类

    上个月发布了四篇文章,主要讲了深度学习中的"hello world"----mnist图像识别,以及卷积神经网络的原理详解,包括基本原理.自己手写CNN和paddlepaddle的 ...

  4. 一位有着工匠精神的博主写的关于IEnumerable接口的详细解析

    在此,推荐一位有着工匠精神的博主写的一篇关于IEnumerable接口的深入解析的文章:http://www.cnblogs.com/zhaopei/p/5769782.html#autoid-0-0 ...

  5. JavaScript DOM 编程艺术(1)---> JavaScript语法

    一.  JavaScript语法目录 语法 操作 条件语句 循环语句 函数 对象 二.  具体内容 2.1 语法 javaScript代码要通过HTML/XHTML文档才能执行.可以有两种方式完成这一 ...

  6. linux文件、目录

    user用户 group用户组 others其他人用户信息保存在/etc/passwd [root@iZ25het8xn8Z ~]# ls -altotal 56dr-xr-x---. 3 root ...

  7. PostgreSQL启动main函数都干了什么(一)

    DB Version:9.5.3 环境:CentOS7.x 调试工具:GDB source:src/backend/main/main.c 56 /* 57 * Any Postgres server ...

  8. Wes7 剪裁方法

    1. 加载x64的 DS共享库,加载一个compatibility.xml模板 2. 导入硬件信息文件File—Import—Import PMQ 用TAP.exe工具创建.PMQ文件(.PMQ文件保 ...

  9. 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul

    通过前面几篇文章的介绍,我们可以轻松搭建起来微服务体系中比较重要的几个基础构建服务.那么,在本篇博文中,我们重点讲解一下,如何将所有微服务的API同意对外暴露,这个就设计API网关的概念. 本系列教程 ...

  10. python glob fnmatch 用于文件查找操作

    參考: http://python.jobbole.com/81552/:Python模块学习:glob文件路径查找 http://blog.csdn.net/suiyunonghen/article ...