webpack

摘要:
注明:本文参考入门Webpack,看这篇就够了1.webpack与gulp、grunt有什么不一样?";returngreet;};//main.jsconstgreeter=require;document.querySelector.appendChild; 5)通过配置文件来使用webpack:在文件夹目录下,新建一个文件:webpack.config.js//webpack.config.jsmodule.exports={entry:__dirname+"/app/main.js",//已多次提及的唯一入口文件output:{path:__dirname+"/public",//打包后的文件存放的地方filename:"bundle.js"//打包后输出文件的文件名}}注:“__dirname”是node.js中的一个全局变量,它指向当前执行脚本所在的目录。6)在命令行窗口运行:webpack这就行啦,在public文件夹生成了一个bundle.js的文件。4)插件插件是用来拓展Webpack功能的,它们会在整个构建过程中生效,执行相关的任务。

写在前面的话:

之前使用过webpack构建vue的项目,并没有好好了解webpack的相关配置,导致踩过一些坑,下文将是一些webpack的基本配置,帮助了解这个工具,从而好好使用这个工具。


注明:本文参考入门Webpack,看这篇就够了

1. webpack 与 gulp、 grunt有什么不一样?

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

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

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

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

2.开始学习使用Webpack:

1)新建一个空文件夹:webpack test

2)进入该文件夹,按住 shift 键,并在空白处右键,选择在“此处打开命令窗口”

3)安装webpack,在命令行输入:

npm install -g webpack           //全局安装 webpack(安装太慢,可以使用cnpm进行安装)
npm init               //生成json文件(这里会提示你确认或输入项目名、版本之类,一般练习的时候 一路回车就行)
npm install --save-dev webpack //安装到你的项目目录

这时:package.json里面会多了以下代码:"devDependencies": {"webpack": "^3.10.0"},并且文件目录下多了一个文件夹node_modules。

4)在文件夹中新建两个文件夹,以及其中的一些文件:

-app文件夹:用来存放原始数据和我们将写的JavaScript模块;

-Greeter.js

-main.js:

-public文件夹:用来存放之后供浏览器读取的文件(包括使用webpack打包生成的js文件以及一个index.html文件);

-index.html:写入最基础的html代码

相关文件内容如下:

//index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Webpack Sample Project</title>
  </head>
  <body>
    <div id='root'>
    </div>
    <script src="http://t.zoukankan.com/bundle.js"></script>
  </body>
</html>
//Greeter.js
module.exports = function() {
    var greet = document.createElement('div');
    greet.textContent = "Hi there and greetings!";
    returngreet;
};
//main.js
const greeter = require('./Greeter.js');
document.querySelector("#root").appendChild(greeter()); 

5)通过配置文件来使用 webpack:

在文件夹目录下,新建一个 文件:webpack.config.js

//webpack.config.js
module.exports ={
    entry:  __dirname + "/app/main.js",     //已多次提及的唯一入口文件
output: {
        path: __dirname + "/public",        //打包后的文件存放的地方
        filename: "bundle.js"               //打包后输出文件的文件名
}
}

注:“__dirname”是node.js中的一个全局变量,它指向当前执行脚本所在的目录。

6)在命令行窗口运行: webpack

webpack第1张

这就行啦,在 public文件夹生成了一个 bundle.js的文件。

7)使用 npm 引导任务执行,即,配置相关文件,达到运行 npm start 就能打包文件的目的。

package.json 文件中做如下配置:

webpack第2张

在命令行运行: npm start

webpack第3张

这样也能得到我们想要的结果。

3.webpack 强大的配置项:

1)生成source maps(使调试更容易)

通过配置,webpack就可以在打包时为我们生成source maps,提供了一种对应编译文件和源文件的方法,使得编译后的代码可读性更高,也更容易调试。

webpack的配置文件中配置source maps,需要配置devtool(有四种不同的配置选项,各具优缺点)

1.source-map

2.cheap-module-source-map

3.eval-source-map(小到中型的项目)

4.cheap-module-eval-source-map(大型项目)

上述选项由上到下打包速度越来越快,但较快的打包速度的后果就是对打包后的文件的的执行有一定影响。

在webpack.config.js中做如下变更(devtool: 'eval-source-map',):

webpack第4张

2)构建本地服务器(浏览器实时监控代码的改变,自动刷新)

  Webpack提供一个可选的本地开发服务器(基于node.js构建),在webpack中进行配置之前需要单独安装它作为项目依赖

npm install --save-dev webpack-dev-server

安装好了之后,在webpack.config.js中做如下变更:

devServer: {
    contentBase: "./public",//本地服务器所加载的页面所在的目录
    historyApiFallback: true,//不跳转
    inline: true//实时刷新
  }

webpack第5张

在 package.json 文件中做如下变更("server": "webpack-dev-server --open"):

webpack第6张

验收成果:

在命令行窗口输入: npm run server

浏览器自动打开,并监听 8080 端口。那么如何改变监听端口呢(例如想改成 7777)?

只要在webpack.config.js中加一行设置(port: 7777),如下:

webpack第7张

3)loaders

通过使用不同的loaderwebpack有能力调用外部的脚本或工具,实现对不同格式的文件的处理,比如说分析转换scss为css,或者把下一代的JS文件(ES6,ES7)转换为现代浏览器兼容的JS文件,对React的开发而言,合适的Loaders可以把React的中用到的JSX文件转换为JS文件。

4)插件(plugins)
插件(Plugins)是用来拓展Webpack功能的,它们会在整个构建过程中生效,执行相关的任务。

Loaders和Plugins常常被弄混,但是他们其实是完全不同的东西,可以这么来说,loaders是在打包构建过程中用来处理源文件的(JSX,Scss,Less..),一次处理一个,插件并不直接操作单个文件,它直接对整个构建过程其作用。

通过在关键字 plugins 里面进行相关设置。

  

免责声明:文章转载自《webpack》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于workerman的实时推送(摒弃ajax轮询)RedisTemplate-Redis的序列化方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Webpack安装配置及打包详细过程

引言 前端经过漫长的发展,涌现出了很多实践方法来处理复杂的工作流程,让开发变得更加简便,其中,模块化可以使复杂的程序细化成为各个小的文件,而webpack并不强制你使用某种模块化方案,而是通过兼容所有模块化方案让你无痛接入项目,本文详细介绍webpack安装配置及打包的详细过程。 Webpack简单介绍 本质上,webpack是一个现代 JavaScrip...

Vue搭建脚手架2

Vue2.0搭建Vue脚手架(vue-cli) 在网上找了很多的搭建脚手架教程,但都不求甚解。终于找到2个比较好的教程,读者可对比阅读1和2,在这里分享给大家,希望对初学者有所帮助。ps:高手请绕道。 1.使用npm全局安装vue-cli(前提是你已经安装了nodejs,否则你连npm都用不了),在cmd中输入一下命令 npm install --glo...

vite首次启动加载慢

背景 随着vue3的到来,vite开始被各大vue3组件库使用,公司开始一个新项目,准备尝试用vite试一波。 问题发现 当把公司新项目移植到vite后,启动非常快,但发现页渲染时间慢了很多 可以看到页面的首屏加载时间是3.34s,页面的渲染完时间是3.37s,下载总大小是8.6MB,发送了119个请求 在看看webpack的渲染时间: 可以看到页面...

Vue全家桶系列【vue3更新中.....】

一. 简介  1. 说明   Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。 V...

四: 使用vue搭建网站前端页面

---恢复内容开始--- 在搭建路由项目的时候的基本步骤 一:创建项目   安装好vue 搭好环境 (步骤在上篇博客中)   进入项目目录      cd   目录路径/ 目录名   创建项目          vue init webpack  项目名   效果:   项目文件结构:及作用    -- build...

Node.js安装,配置npm源(指定仓库和指定源)

1.Node.js下载地址    官网:https://nodejs.org/en/ 2.下载下来,按照下一步自动安装即可(每一步截图如下)        如图,默认添加到环境变量;      finsh完成。 3.校验  win + R 输入cmd    node -v        如图,出现了版本号(根据下载时候的版本确定),说明安装成功。同时...