零基础学习webpack打包管理
这些天在项目之余的时间学习了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打包管理的更多相关文章
- 零基础学习hadoop到上手工作线路指导(编程篇)
问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如 ...
- 如何从零基础学习VR
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...
- MongoDB实战开发 【零基础学习,附完整Asp.net示例】
MongoDB实战开发 [零基础学习,附完整Asp.net示例] 阅读目录 开始 下载MongoDB,并启动它 在C#使用MongoDB 重构(简化)代码 使用MongoDB的客户端查看数据 使用Mo ...
- 【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建
[零基础学习FreeRTOS嵌入式系统]之一:FreeRTOS环境搭建 一:FreeRTOS系统下载 在官网上https://www.freertos.org/,找到下载入口. 或直接进入下载地址ht ...
- 零基础学习openstack【完整中级篇】及openstack资源汇总
1.你是如何学习openstack的?2.你对openstack的组件了解多少?3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩心事 ...
- 零基础学习 Python 之前期准备
写在之前 从今天开始,我将开始新的篇章 -- 零基础学习 Python,在这里我将从最基本的 Python 写起,然后再慢慢涉及到高阶以及具体应用方面.我是完全自学的 Python,所以很是明白自学对 ...
- salesforce零基础学习(九十六)Platform Event浅谈
本篇参考:https://developer.salesforce.com/blogs/2018/07/which-streaming-event-do-i-use.html https://trai ...
- Salesforce 集成篇零基础学习(一)Connected App
本篇参考: https://zhuanlan.zhihu.com/p/89020647 https://trailhead.salesforce.com/content/learn/modules/c ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
随机推荐
- pyqt的基本组件
转载 熟悉常用的窗口组件: 1 按钮类 QPushButton 普通按钮 QToolButton 工具按钮:通常在工具栏使用 QRadioButton 单选框 QCheckBox 复选框 QComma ...
- HTML5将给企业带来什么?
HTML5是近几年来互联网行业的热门词汇,火热的厉害,未来的网络属于HTML5. 乔布斯生前也在公开信<Flash之我见>中预言:像HTML5这样在移动时代中创立的新标准,将会在移动设备上 ...
- windows配置caffe + python和matlab接口
参考: http://blog.csdn.net/baidu_26408419/article/details/53711640 http://www.cnblogs.com/love6tao/p/5 ...
- cmd markdown 使用教程
cmd markdown 使用教程 tags: 自制教程 李卓伦 目录: [TOC] 一.简介与安装 我们理解您需要更便捷更高效的工具记录思想,整理笔记.知识,并将其中承载的价值传播给他人,Cmd M ...
- git使用(上)-----基本的方法
git应该是一项必须要掌握的工具.先简述它和SVN的区别 SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活 ...
- SSD: Single Shot MultiBoxDetector英文论文翻译
SSD英文论文翻译 SSD: Single Shot MultiBoxDetector 2017.12.08 摘要:我们提出了一种使用单个深层神经网络检测图像中对象的方法.我们的方法,名为SSD ...
- 实践作业1:测试管理工具实践 Day1
1.熟悉课程平台2.选取小组作业工具并分工3.申请博客4.提交<高级软件测试技术SPOC2017年秋学生博客地址汇总>问卷5.着手熟悉Testlink
- Nginx如何配置虚拟主机?
注意,该环境是依赖于http://www.php20.com/forum.php?m ... &extra=page%3D1 基础上进行配置.默认不具备这些文件 .下面是增加一个mytest点 ...
- 局域网下的html注入及DNS劫持
之前研究Dsploit的部分功能实现原理,现在了解的差不多了,简要记录下Dsploit的断网攻击,html注入,图片替换,cookie劫持的原理.本篇blog需要有一定的网络知识基础在看. 假设现有三 ...
- 剑指Offer——当当+搜狐+好未来笔试题+知识点总结
剑指Offer--当当+搜狐+好未来笔试题+知识点总结 情景回想 时间:2016.9.21 15:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:当当笔试.搜狐笔试.好未来笔试 3 ...