Vue.js实战学习笔记------webpack

一.webpack

1. 使用webpack打包后的代码已经不只是你写的代码,其中夹杂了很多webpack自身的模块处理代码

2.各种格式的文件如.jpg,.less,通过特定的加载器(Loader)编译后,最后统一生成为.js,.css,.png等静态资源文件

3.在webpack世界里,一张图片,一个css甚至一个字体,都称为模块(module),彼此存在依赖关系,webpack就是来处理模块间的依赖关系的,并把它们进行打包。对于不同的模块,需要用不同的加载器(Loader)来处理,而加载器就是webpack最重要的功能。通过安装不同的加载器可以对各种后缀名的文件进行处理,比如CSS样式,就要用到style-loader和css-loader。

4.在webpack里,可以直接在一个.js文件中导入CSS

import 'src/styles/index.css',import是ES2015的语法,也可以写成require('src/styles/index.css');

在打包时,index.css会被打包进一个js文件里,通过动态创建<style>的形式来加载CSS样式,当然也可以进一步配置,在打包编译时把所有的CSS都提取出来,生成一个CSS的文件。

5.webpack的主要适用场景是单页面富应用(SPA)。SPA通常是由一个html文件和一堆按需加载的js组成,它的html结构可能非常简单。

6.就是一个js文件而已

归根到底,webpack就是一个.js配置文件,你的架构好或者差都体现在这个配置里,随着需求的不断出现,工程配置也是逐渐完善的。

二.webpack基础配置

(1)安装webpackwebpack-dev-server

(2)在package.jsonscripts里增加一个快速启动webpack-dev-server服务的脚本。

{
    "scripts":{ 
        "dev":"webpack-dev-server --open --config webpack.config.js"
    }
}

1)--config是指向webpack-dev-server读取的配置文件路径。

2)--open会在执行命令时自动在浏览器打开页面,默认地址是127.0.0.1:8080,不过IP和端口都是可以配置

{
    "scripts":{ 
        "dev":"webpack-dev-server --host 172.172.172.1 --port 8888 --open --config webpack.config.js"
    }
}

(3)入口(Entry)出口(Output)

1)入口的作用是告诉webpack从哪里开始寻找依赖,并编译

2)出口则用来配置编译后的文件存储位置和文件名

3)entry中的main就是我们配置的单入口,webpack会从main.js文件开始工作。

4)output中path选项用来存放打包后文件的输出目录,是必填项publicPath指定资源文件引用的目录,如果你的资源存放在CDN上,这里可以填CDN的网址。filename用于指定输出文件的名称。

(4)webpack-dev-server具有热更新功能,它通过建立一个WebSocket连接来实时响应代码的修改。

(5)加载CSS

1)安装style-loadercss-loader

npm install css-loader --save-dev
npm install style-loader --save-dev

2)在webpack.config.js文件里配置Loader,增加多.css文件的处理

3)在module对象rules属性中可以指定一系列的loaders,每一个loader都必须包含testuse两个选项。

4)这段配置的意思是说,当webpack编译过程中遇到require()import语句导入一个后缀名为.css的文件时,先将它通过css-loader转换,再通过style-loader转换,然后继续打包。

5)use选项的值可以是数组或字符串,如果是数组,它的编译顺序就是从后往前

(6)插件

1)webpack的插件功能强大而且可以定制

2)使用一个插件extract-text-webpack-plugin来把散落在各地的CSS提取出来,并生成一个main.css的文件,最终在index.html里通过<link>的形式加载它。(避免CSS通过JS动态创建style标签来写入)

npm install extract-text-webpack-plugin --save-dev

3)然后在配置文件中导入插件,并改写loader的配置:

三.单文件组件(.vue)与vue-loader

(1).vue单文件组件就是一个后缀名为.vue的文件,在webpack中使用vue-loader就可以对.vue格式的文件进行处理。

(2)一个.vue文件一般包含3部分,即<template>、<srcipt>和<style>

(3)使用.vue文件需要先安装vue-loader、vue-style-loader等加载器并做配置。(同时下载插件,支持ES6语法)

(4)安装完成后,修改配置文件webpack.config.js来支持.vue文件及ES6的解析

1)vue-loader在编译.vue文件时,会对<template>、<srcipt>和<style>分别处理,所以在vue-loader选项里多了一项options来进一步对不同的语言进行配置。比如在对CSS进行处理时,会先通过css-loader解析,然后把处理结果再交给vue-style-loade处理。

2)当你的技术栈多样化时,可以给<template>、<srcipt>和<style>都指定不同多的语言,比如<template lang="jade">和<style lang="less">,然后配置loaders就可以了。

3)在目录下新建一个名为.babelrc的文件,并写入babel的配置,webpack会依赖此配置文件来使用babel编译ES6代码

(4)每个.vue文件就代表一个组件,组件之间可以互相依赖。

(5).vue组件是没有名称的,在父组件使用时可以对它自定义。

import App from './app.vue'

四.用于生产环境

(1)安装url-loader和file-loader来支持图片、字体等文件

npm install url-loader --save-dev
npm install file-loader --save-dev

1)当遇到.gif、.png、.ttf等格式文件时,url-loader会把它们一起编译到dist目录下,“?limit=1024”是指如果这个文件小于1kb,就以base64的形式加载,不会生成一个文件。

(2)打包

1)下载两个依赖

npm install webpack-merge --save-dev
npm install html-webpack-plugin --save-dev

2)为了方便开发和生产环境的切换,新建一个用于生产环境的配置文件webpack.prod.config.js

1.上面安装的webpack-merge模块就是用于合并两个webpack的配置文件,所以prod的的配置是在webpack.config.js基础上扩展的。

2.静态资源再大部分场景下都有缓存(304),更新上线后一般都希望用户能及时地看到内容,所以给打包后的CSS和JS文件的名称都加了20位的hash值,这样文件名就唯一了(main.db3ds89fdsfs.js),只要不对html文件设置缓存,上线后立即就可以加载最新的静态资源。

3.html-webpack-plugin是用来生成html文件的,它通过template选项来读取指定的模版index.ejs,然后输出到filename指定的目录,也就是demo/index_prod.html。模版index.ejs动态设置了静态资源的路径和文件名。代码如下:

4.ejs是一个JS模版库,用来从JSON数据中生成HTML字符串,常用于node.js.

3)编译打包,直接执行webpack命令就可以。在package.json中,加入一个build的快捷脚本来打包

4)最后再终端运行npm run build,等待一会就会完成打包,成功后在demo下会生成一个dist的目录,里面就是打包完的所有静态资源。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值