webpack

作者: 何wife | 来源:发表于2017-06-27 23:31 被阅读0次

什么是Webpack

WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。

WebPack和Grunt以及Gulp相比有什么特性

其实Webpack和另外两个并没有太多的可比性,Gulp/Grunt是一种能够优化前端的开发流程的工具,而WebPack是一种模块化的解决方案,不过Webpack的优点使得Webpack可以替代Gulp/Grunt类的工具。

Grunt和Gulp的工作方式是:在一个配置文件中,指明对某些文件进行类似编译,组合,压缩等任务的具体步骤,这个工具之后可以自动替你完成这些任务。

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

如果实在要把二者进行比较,Webpack的处理速度更快更直接,能打包更多不同类型的文件。

开始使用Webpack

初步了解了Webpack工作方式后,我们一步步的开始学习使用Webpack。

安装

Webpack可以使用npm安装,新建一个空的练习文件夹(此处命名为webpack sample progect),在终端中转到该文件夹后执行下述指令就可以完成安装。

//全局安装npm install -g webpack//安装到你的项目目录npm install --save-devwebpack

正式使用Webpack前的准备

在上述练习文件夹中创建一个package.json文件,这是一个标准的npm说明文件,里面蕴含了丰富的信息,包括当前项目的依赖模块,自定义的脚本任务等等。在终端中使用npm init命令可以自动创建这个package.json文件

npminit

输入这个命令后,终端会问你一系列诸如项目名称,项目描述,作者等信息,不过不用担心,如果你不准备在npm中发布你的模块,这些问题的答案都不重要,回车默认即可。

package.json文件已经就绪,我们在本项目中安装Webpack作为依赖包

// 安装Webpacknpm install --save-devwebpack

回到之前的空文件夹,并在里面创建两个文件夹,app文件夹和public文件夹,app文件夹用来存放原始数据和我们将写的JavaScript模块,public文件夹用来存放准备给浏览器读取的数据(包括使用webpack生成的打包后的js文件以及一个index.html文件)。在这里还需要创建三个文件,index.html 文件放在public文件夹中,两个js文件(Greeter.js和main.js)放在app文件夹中,此时项目结构如下图所示

项目结构

index.html文件只有最基础的html代码,它唯一的目的就是加载打包后的js文件(bundle.js)

Webpack Sample Project

Greeter.js只包括一个用来返回包含问候信息的html元素的函数。

// Greeter.jsmodule.exports =function(){vargreet =document.createElement('div');  greet.textContent ="Hi there and greetings!";returngreet;};

main.js用来把Greeter模块返回的节点插入页面。

//main.jsvargreeter =require('./Greeter.js');document.getElementById('root').appendChild(greeter());

正式使用Webpack

webpack可以在终端中使用,其最基础的命令是

webpack {entryfile/入口文件} {destinationforbundledfile/存放bundle.js的地方}

只需要指定一个入口文件,webpack将自动识别项目所依赖的其它文件,不过需要注意的是如果你的webpack没有进行全局安装,那么当你在终端中使用此命令时,需要额外指定其在node_modules中的地址,继续上面的例子,在终端中属于如下命令

//webpack非全局安装的情况node_modules/.bin/webpack app/main.js public/bundle.js

结果如下

相关文章

网友评论

      本文标题:webpack

      本文链接:https://www.haomeiwen.com/subject/aahycxtx.html