1. webpack

1.1. webpack介绍

webpack是一个资源的打包工具,目前最新为webpack3,可以将 .js, .css , image等静态资源当做一个模块来进行打包,那么每一种模块都是有一个对应的 loader来实现
webpack版本官网:https://webpack.js.org/ 项目使用的是 webpack 3.4.0
node环境的安装
webpack是基于nodejs运行的,所以在安装webpack之前必须先安装nodejs环境,
安装步骤如下   如果用的是淘宝镜像的话,请用rnpm
  1、去 https://nodejs.org/en/ 中下载当前操作系统匹配的版本,windows下软件名称通常叫做 node.exe
  2、双击node.exe一路安装好,由于node.exe已经包含了npm工具,所以npm也能正常使用了
  3、由于直接使用npm install 安装第三方包是去国外网站上下载,有可能会被墙而安装失败,所以我们要将下载源切换到国内淘宝上因此需要利用 npm install nrm -g安装一个全局的nrm
  4、安装好nrm以后,在cmd命令面板中输入: nrm use taobao 将下载源切换到淘宝
       ,可以使用 nrm ls 查看当前使用的下载源
  5、也可安装淘宝提供的类似于npm的工具 cnpm来替代npm安装node包,安装包命令和npm一样,安装cnpm命令: npm install cnpm -g

安装webpack步骤:

 第一种安装方式:npm使用国外镜像下载,速度慢
在cmd命令行面板中 执行: npm install webpack@3.4.0 -g 将webpack
安装为全局就能够在cmd命令行面板中使用webpack指令了 第二种安装方式:cnpm 使用淘宝作镜像下载,速度快
在cmd命令行面板中 执行: cnpm install webpack@3.4.0 -g 将webpack
安装为全局就能够在cmd命令行面板中使用webpack指令了

1.1.1. webpack常用指令和webpack.config.js配置文件

  • webpack常用指令
    

        webpack 入口文件.js 输出文件.js
    webpack // 最基本的启动webpack的方法,默认查找名称为
webpack.config.js文件
    webpack --config webpack.config.js // 指定配置文件
    webpack -p // 对打包后的文件进行压缩
  • webpack.config.js配置文件的作用
        如果只在cmd命令面板中输入 webpack指令,后面不跟任何参数的话,则默认查找的是 webpack.config.js文件,在这个文件中可以配置入口文件,输出文件以及相关loader和插件等,以增强webpack的功能
  • 一个常用webpack版本的webpack.config.js文件结构:
  

// 导入html-webpack-plugin 包,用来根据模板自动生成index.html
var htmlwp = require('html-webpack-plugin'); module.exports={
entry:'./src/main.js', // 1.0 定义打包的入口文件路径
output:{
path:'./dist', //打包以后的文件存放目录
filename:'build.js' // 打包以后生成的文件名称
},
module:{
loaders:[ //webpack2及其以上也可以使用 rules:[]
{
// 打包 .css文件
test:/\.css$/,
loader:'style-loader!css-loader'
}
]
},
plugins:[
new htmlwp({
title: '首页', //生成的页面标题
filename: 'index.html', //webpack-dev-server在内存中生成的文件名称,自动将build注入到这个页面底部,才能实现自动刷新功能
template: 'index1.html' //根据index1.html这个模板来生成(这个文件请你自己生成)
})
]
}

例子:

 module.exports = {
entry:"./main.js",//设置入口文件(目标文件)
output:{
// __dirname :可以得到当前文件的绝对路径
path: __dirname +"/dist",//输出文件的路径(出口)
filename:"build.js"//设置打包好以后的文件名
},
module:{
loaders:[
{
//配置打包css文件
test: /\.css$/,// 匹配当前项目中所有以.css结尾的文件,将这些文件交给下面两个第三方包进行打包
loader:"style-loader!css-loader"// 实现css文件打包
},
{
// 配置打包sass文件
test: /\.scss$/,// 匹配当前项目中所有以.scss结尾的文件,将这些文件交给下面两个第三方包进行打包
loader:"style-loader!css-loader!sass-loader"// 实现sass文件打包
},
{
// 配置打包less文件
test: /\.less$/,// 匹配当前项目中所有以.less结尾的文件,将这些文件交给下面两个第三方包进行打包
loader:"style-loader!css-loader!less-loader" // 实现less文件打包
},
{
// 配置打包url()请求的资源
test: /\.(png|jpg|gif)$/,// 将来会将png,jpg,gif后缀的文件进行打包
loader:"url-loader?limit=40000" //依赖整url-loader
// limit用来设置文件的大小
// 2097152 ---> 2M 在图片大小为小于2M的时候直接将图片打包输出文件中
// 在图片大小为大于2M的时候直接将图片复制到当前的目录下
}
]
}
}

1.1.2. webpack中loader介绍

loader介绍

webpack本身不支持css,less,sass,js,image等相关资源的打包工作的,它仅仅提供了一个基础的框架,在这个框架上借助于相关的loader才可以实现css,less,sass,js,image等相关资源的打包工作

1.1.3. webpack相关配置

在使用loader之前需要在当前项目目录下打开cmd命令面板,输入: npm init 初始化一个 package.json文件来存放相关的 loader包

1.1.3.1. 打包css资源演示

webpack中使用css-loader和style-loader这两个loader来处理css资源的打包工作,所以使用前必须在项目中先安装这两个包:
 npm i css-loader style-loader --save-dev
在webpack.config.js中配置这两个loader 
在项目中建立一个site.css文件,并且在main.js中导入 
在cmd中执行webpack命令 

1.1.3.2. 打包sass资源演示

webpack中使用sass-loader,css-loader,style-loader来处理.scss文件的打包工作,而sass-loader需要依赖于node-sass所以使用前必须在项目中先安装这些包,
并且node-sass的某些文件下载是需要去google上的,为了防止被墙而导致安装失败,所以建议使用cnpm来安装:
 cnpm install node-sass sass-loader css-loader style-loader --save-dev
在webpack.config.js中配置这两个loader 
在项目中建立一个site1.scss文件,并且在main.js中导入 
在cmd中执行webpack命令
在项目根目录下打开cmd命令面板,输入:webpack 回车即可打包完成
此时检查build.js文件的内容,sass语法是变成了css语法表示打包成功

1.1.3.3. 打包less资源演示

需要安装的node包有:
css-loader: 编译css
style-loader:编译css
less-loader: 编译less
less: less-loader的依赖包
 
在项目根目录下打开cmd命令面板,输入:
npm install less less-loader style-loader css-loader --save-dev 回车即可完成安装
  • 在webpack.config.js中配置这两个loader
  • 在项目中建立一个site1.scss文件,并且在main.js中导入
  • 在cmd中执行webpack命令
在项目根目录下打开cmd命令面板,输入:webpack 回车即可打包完成
此时检查build.js文件的内容,less语法是变成了css语法表示打包成功

1.1.3.4. 打包url()请求的资源

需要安装的node包有:
url-loader:打包通过url()方式的请求资源
file-loader: url-loader的依赖loader
 
在项目根目录下打开cmd命令面板,输入:
npm install url-loader file-loader --save-dev 回车即可完成安装
  • 在webpack.config.js中配置这两个loader
  • 在site.css文件导入一个图片
  • 在cmd中执行webpack命令
在项目根目录下打开cmd命令面板,输入:webpack 回车即可打包完成
检查是否成功分两种情况:
1、如果打包的图片大小大于配置文件中 url-loader?limit= 中的limit值的话,则会在目录下看到一张单独的一个图片
2、如果打包的图片大小小于等于配置文件中 url-loader?limit= 中的limit值的话,则会将图片以base64格式存储在build.js中
 
请按照上述两种情况去验证是否打包成功

1.1.3.5. ECMAScript6语法转ECMAScript5语法

webpack2+已经能够不需要依赖于babel-loader 即可完成ES6语法的转换,但是如果使用的是webpack1则还需要安装相关包:
babel-core
babel-loader
babel-preset-es2015
babel-plugin-transform-runtime:这个包主要是使用webpack1.0打包.vue组件页面中的es6语法需要,webpack2+中不需要
 
在项目根目录下打开cmd命令面板,输入:
npm install babel-core babel-loader babel-preset-es2015 babel-plugin-transform-runtime --save-dev 回车即可完成安装
  • 在webpack.config.js中配置loader
  • 在main.js中使用es6语法导入site.css
 import '../statics/css/site.css'
  • 在cmd中执行webpack命令
在项目根目录下打开cmd命令面板,输入:webpack 回车即可打包完成
检查build.js文件中,如果出现了类似于 require('../statics/css/site.css');
但是看不到import '../statics/css/site.css' 表示转换成功

1.1.3.6. 利用webpack-dev-server实现热刷新配置

我们在修改了代码以后需要不断的重新执行webpack命令重新打包然后回到浏览器刷新页面去查看,这种开发效率很低下,
所以这里使用webpack-dev-server当代码更新的时候自动重新打包和刷新浏览器。
 
需要安装的node包有:
webpack@3.4.0 : webpack-dev-server依赖于webpack
webpack-dev-server@2.6.1 : webpack开发服务器
html-webpack-plugin@2.28.0 :结合webpack在内存中自动生成index.html的入口文件
 
 
在项目根目录下打开cmd命令面板,输入:
npm install webpack@3.4.0 webpack-dev-server@2.6.1 html-webpack-plugin@2.28.0 --save-dev 回车即可完成安装
 
需要注意的是:package.json中的name属性不能是webpack,否则在执行 npm i webpack --save-dev的时候会报错:
Refusing to install webpack as a dependency of itself
  • 在package.json文件中配置webpack-dev-server命令
 "scripts": {
  "dev":"webpack-dev-server --inline --hot --open --port 5008"
}
参数说明:
--inline :自动刷新
--hot :热加载
--port 指定监听端口为 5008
-- open : 自动在默认浏览器中打开
-- host: 可以指定服务器的ip,不指定默认为127.0.0.1(localhost)
  • 配置html-webpack-plugin组件
webpack-dev-server要实现浏览器自动刷新,必须要利用html-webpack-plugin在内存中生成index.html页面才能实现
html-webpack-plugin 配置步骤:
1、在webpack.config.js中加入如下代码:
 // 导入html-webpack-plugin 包,获取到插件对象
var htmlwp = require('html-webpack-plugin');
 plugins:[
new htmlwp({
title: '首页', //生成的页面标题,需要在模板index1.html中的title中使用:<%= htmlWebpackPlugin.options.title %>
filename: 'index.html', //webpack-dev-server在内存中生成的文件名称,自动将build注入到这个页面底部,才能实现自动刷新功能
template: 'index1.html' //根据index1.html这个模板来生成(这个文件请程序员自己生成)
})
]
 
  • index1.html 模板页面代码
  

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><%= htmlWebpackPlugin.options.title %></title>
<meta name="viewport"
content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
</head>
<body>
<div id="app">
</div>
</body>
</html>
  • 运行
在cmd中执行npm run dev 命令开启 webpack-dev-server服务器来运行vue项目
这时候可以随便修改一个css样式,就会自动刷新看到效果

1.1.3.7. 利用webpack解析和打包 .vue组件页面

Vue项目中的每个页面其实都是一个.vue的文件,这种文件,Vue称之为组件页面,必须借助于 webpack的vue-loader才能使用
所以必须安装相关包:
vue : vuejs核心包
vue-loader : .vue文件编译loader
vue-template-compiler : .vue模板编译,被vue-loader所依赖
babel-plugin-transform-runtime : es6实时转换成es5语法
 
1、在项目根目录下打开cmd命令面板,输入:
npm install vue-loader@11.3.4 vue-template-compiler@2.2.6 babel-plugin-transform-runtime@6.23.0 --save-dev 回车即可完成安装
npm install vue@2.2.6 --save 回车即可完成安装
 
注意:babel-plugin-transform-runtime 这个包主要是为了兼容webpack1.x中使用,webpack2+中可以不用
为了兼容webpack1.x,2.x,3.x 拷贝上面的安装命令全部安装即可
 
2、在项目根目录下新建 .babelrc文件,内容填写如下:
 {
  presets: ['es2015'],
  plugins: ['transform-runtime'] //这句代码就是为了解决webpack1.x中打包.vue文件不报错,在webpack2+中正常
}
 
3、在webpack.config.js中的loaders中增加
 {
// 打包.vue文件
test:/\.vue$/, //表示当前要打包的文件的后缀正则表达式
loader:'vue-loader' //
}
  • .vue组件页面的写法结构
1、<template><div class="tmpl"></div>由于是vue2.0 所以这个里面一定要放一个根元素,可以放vue的指令 v-</template>
 
2、<script> export default{data:{}} -> new Vue({data:{}}) 就是导出一个 Vue的实例 </script>
 
3、<style></style> 中的样式是全局的
<style scoped></style> 中的样式是当前组件的
  • 将.vue中的内容解析编译并且展示在浏览器中
1、npm install vue --save
2、在main.js中编写解析.vue的代码
// 1.0 导入vue这个包
import Vue from 'vue';
// 2.0 导入 App.vue文件
import App from './App.vue';
// 3.0 将App中的内容编译解析出来替换index.html中的<div id="app"></div>
new Vue({
el:'#app',
// render:function(create){create(App);} es5语法
render:create=>create(App) //es6语法
});
 

1.2. 项目中使用的ECMAScript6语法总结

1、对象的写法
es5中对象: {add:add,substrict:substrict}
es6中对象: {add,substrict} 注意这种写法的属性名称和值变量是同一个名称才可以简写,否则要想es5那样的写法,例如: {addFun:add}
 
2、在对象中的方法的写法
es5中对象: {add:function(){},substrict:function(){}}
es6中对象: {add(){},substrict(){}}
 
3、对象的导出写法
es5两种形式:
1、module.exports = fucntion (){};
2、exprots.add = fucntion (){};
 
es6中写法:
1、export default{
add(){}
}
2、export fucntion add(){} 相当于 将add方法当做一个属性挂在到exports对象
 
 
4、对象的导入
es5: var add = require('./calc.js');
es6:
如果导出的是:export default{ add(){}}
那么可以通过 import obj from './calc.js'
 
如果导出的是:
export fucntion add(){}
export fucntion substrict(){}
export const PI=3.14
 
那么可以通过按需加载 import {add,substrict,PI} from './calc.js'
 
5、es6中的箭头函数的写法
箭头的演变过程:
//需求:利用函数实现倒序排列
[2,1,3].sort(function(x,y){return y - x;});
 
//用箭头函数实现 =>读 goes to
[2,1,3].sort((x,y)=>{return y - x;});
[2,1,3].sort((x,y)=> {x++;y++; y - x;});
[2,1,3].forEach(x=> {console.log(x)});

1.3. 将项目源码利用git.oschina.net托管

1.4. Vue 官方命令行工具快速搭建大型单页应用

咱们前面从0到1带领大家一步步搭建了属于自己的WebPack+Vue项目,但其实Vue官方提供了一个快速搭建大型单页应用的工具Vue-cli
该工具提供开箱即用的构建工具配置,带来现代化的前端开发流程。只需几分钟即可创建并启动一个带热重载、保存时静态检查以及可用于生产环境的构建配置的项目
    • Vue-cli使用步骤
      1、在cmd命令面板中执行:npm install --global vue-cli 全局安装 vue-cli

      2、利用:vue init webpack projectName(自定义项目名称) 创建一个基于webpack模板的新项目

      3、进入到项目名称文件夹中执行 npm install 安装项目所需依赖

      4、运行 npm run dev 运行项目

webpack--安装,使用的更多相关文章

  1. 【JavaScript】 Webpack安装及文件打包

    背景 最近开启一个新项目,需要对前端的各类资源文件进行打包,经过多方调研后,决定使用webpack工具.但是网上的教程多是将webpack直接作为服务器使用,而我只是想将其作为单纯的资源打包工具而已. ...

  2. webpack安装配置使用教程详解

    webpack安装配置使用教程详解 www.111cn.net 更新:2015-09-01 编辑:swteen 来源:转载 本文章来为各位详细的介绍一下关于webpack安装配置使用教程吧,这篇文章对 ...

  3. webpack安装配置

    webpack安装 1.安装之前你必须要安装node.js,如果你没安装可以在node.js网去下载node.js 2.全局安装webpack,打开cmd输入npm install webpack - ...

  4. 前端自动化构建工具webpack (一)之webpack安装 和 设置webpack.confi.js

    目的:  模块化开发,组件化开发,让代码符合开发规范,更高效 webpack作用:从pack,就知道这是包的意思,比较专业点叫做前端自动化打包构建工具,代码错误检查,预处理,文件合并(打包),代码压缩 ...

  5. webpackt入门1:webpack介绍&webpack安装&使用webpack打包

    本篇博客不是原创,简书的zhangwang写的,原文太长,我这里只是提取了一部分. 原文地址:入门webpack,看这篇就够了 一.Webpack解决了什么问题 问题1.JavaScript这个脚本化 ...

  6. webpack安装整理

    早上有点时间大概安装一下webpack,操作一下顺便把步骤记一下,乱乱的,还是记录一下吧! webpack安装步骤:1. 2. 3.一直回车,出现如下图: 4.创建src和dist文件 5.需要在np ...

  7. webpack前端构建工具学习总结(一)之webpack安装、创建项目

    npm是随nodeJs安装包一起安装的包管理工具,能解决NodeJS代码部署上的很多问题: 常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器 ...

  8. 1、webpack安装

    1.局部安装: npm i -D (npm install --save-dev的简写) 安装指定版本:npm i -D webpack @version 安装最新版:npm i -D webpack ...

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

    引言 前端经过漫长的发展,涌现出了很多实践方法来处理复杂的工作流程,让开发变得更加简便,其中,模块化可以使复杂的程序细化成为各个小的文件,而webpack并不强制你使用某种模块化方案,而是通过兼容所有 ...

  10. webpack 安装vue(两种代码模式compiler 和runtime)

    使用webpack安装vue,import之后,运营项目报错,如下: [Vue warn]: You are using the runtime-only build of Vue where the ...

随机推荐

  1. 1、Zookeeper的功能以及工作原理

    1.ZooKeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交 ...

  2. 2019-5-24-WPF-源代码-从零开始写一个-UI-框架

    title author date CreateTime categories WPF 源代码 从零开始写一个 UI 框架 lindexi 2019-05-24 15:54:36 +0800 2018 ...

  3. 【深度学习】CNN 中 1x1 卷积核的作用

    [深度学习]CNN 中 1x1 卷积核的作用 最近研究 GoogLeNet 和 VGG 神经网络结构的时候,都看见了它们在某些层有采取 1x1 作为卷积核,起初的时候,对这个做法很是迷惑,这是因为之前 ...

  4. Python中的urlparse、urllib抓取和解析网页(一)

    对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过Python 语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...

  5. 不同目录cookie共享的问题解决 cookie不同页面访问不到的问题

    一般设置cookie的方法是setcookie(key, value, expire),参数分别的意思是建.值.过期时间,这里是大众的默认设置方法,但是忽略了一个问题,setcookie还有path与 ...

  6. oracle创建新的连接(表空间?数据库?)

    一.创建用户名密码 create user username identified by password    --username 是用户名:password 是密码 二.给用户附权.撤权 gra ...

  7. MATLAB---dir函数

    dir函数是最常用的转换路径的函数,可以获得指定文件夹下的所有子文件夹和文件,并存放在一个文件结构的数组中,这个数组各结构体内容如下: name    -- 文件名 date    -- 修改日期 b ...

  8. Math concepts / 数学概念

    链接网址:Math concepts / 数学概念 – https://www.codelast.com/math-concepts-%e6%95%b0%e5%ad%a6%e6%a6%82%e5%bf ...

  9. Luogu P1278 单词游戏(dfs)

    P1278 单词游戏 题意 题目描述 \(Io\)和\(Ao\)在玩一个单词游戏. 他们轮流说出一个仅包含元音字母的单词,并且后一个单词的第一个字母必须与前一个单词的最后一个字母一致. 游戏可以从任何 ...

  10. Leetcode400Nth Digit第N个数字

    在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字. 注意: n 是正数且在32为整形范围内 ( n < 231). 示例 1: ...