前言: 为何使用webpack? 为何相对于gulp&grunt更有优势

WebPack(前往官网)可以看做是模块打包机:直接分析项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。Gulp/Grunt是一种能够优化前端的开发流程的工具。

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

而WebPack是一种模块化的方案,通过给定的主文件(如:index.js)使用不同的loaders处理项目的所有依赖文件,最后打包为一个浏览器可识别的JavaScript文件。

   其实两者并不具备太多可比性,grunt/gulp 在配置上比较简单,环境搭建更容易实现;而webpack的处理速度更快更直接,能打包更多不同类型的文件。

开始使用webpack

相关的技术:webpack@2,vue@1,vue-router@0.7,vuex@1

目录结构:

<ul>
<li>config全局变量
<li>dist编译后的项目代码</li>
<li>src项目代码
<ul> <li> apis api封装

<li>webpack.config Webpack各种环境的配置文件
<li>package.json
</ul>

step1   初始化项目 ---- Webpack 使用npm安装

1.创建项目文件夹,  npm init -y 创建 package.json

2.项目根目录下建立srcdist文件夹,分别用来存放项目源码webpack编译后的代码

step2   入口文件--- 简单跑一下

1.在根目录下直接建立一个index.html,作为页面的入口文件

2.在src下建立一个main.js,作为Vue的入口文件

3.安装模块: vue  npm install vue@1 --save ; webpack npm install webpack --save-dev(在本地安装)

本地安装的webpack 需要在package.json的 scripts 配置中添加运行脚本

运行npm run dev,再用浏览器打开index.html就能看到效果了:

Hello Vue.js!

全局安装webpack  npm install -g webpack 则无需指定脚本~

step3   编写webpack配置文件 !!

在上一步中专门指定了webpack运行脚本去运行指定的文件,但实际开发中,对于不同环境的大型项目/系统开发显然是不满足的。因此创建一个文件专门存放webpack配置~

1.在根目录下创建 webpack.config 文件夹来存放webpack的配置文件;

2.在上面的目录下首先创建一个base.js文件来存在一些公共环境下的配置文件(例如loaders的配置)

以上便实现了“webpack src/main.js dist/main.js”webpack指定 入口文件 -> 出口文件 的功能了。

此外还可以拓展一下,使得兼容更多的功能~  (webpack@2 resolving)

根目录下添加.babelrc用于配置 babel :

关于 Babel 是什么 : 通常与webpack搭配一起使用,webpack可以看作是是打包工具,babel则视为编译工具,可把最新标准编写的js代码(例如 es6,react..)编译成当下随处可用的版本。是一种“源码到源码”的编译(转换编译)!

而.babelrc就是让 Babel 做你要它做的事情的配置文件。

babel-preset-es2015          打包了es6的特性

使用了vue-loader和babel-loader需要安装包: 运行如下命令(可能有坑哦,若踩可见文末 bug修复篇==。)

npm install --save-dev vue-loader@8 babel-loader babel-core babel-plugin-transform-runtime babel-preset-es2015 css-loader vue-style-loader vue-hot-reload-api@1 vue-html-loader

3.在  webpack.json 中创建 dev.js

其中 webpack-merge 用于合并两个配置文件,需要安装 => npm install --save-dev webpack-merge

4.自行搭建一个小型服务器,以免手动调试 index.html 。定义使用 webpack dev server 。 (webpack@2 Proxy) 
因此需要继续配置dev.js如下: 还有其他一切配置,可查阅 webpack-dev-server-cli

5.添加热替换配置 HotModuleReplacementPlugin ,每次改动文件不会再整个页面都刷新。该配置是webpack内部插件,不需要安装。

6.使用 HtmlWebpackPlugin ,实现js入口文件自动注入。npm install --save-dev html-webpack-plugin,且需要在头部引入 => const HtmlWebpackPlugin = require('html-webpack-plugin') (还在dev.js中哦)

7.修改index.html(根目录i 啊),去掉入口文件的引入:<script src="dist/main.js"></script> 
8.修改package.json 的运行脚本:

再来跑一下,检测是否webpack配置都成功运作了。创建一个vue组件 src/components/Hello.vue

相应的main.js也做出修改:

运行npm run dev,浏览器打开 localhost:3800 查看结果 Hello Vue.js! 并且改动页面会自动刷新,不需要再一遍遍command+r刷新啦。

step4   配置路由

1.安装 vue-router: npm install --save vue-router@0.7 (当然了当下的vue + axois 会更搭哦)

2.src下创建views文件夹,用于存放页面组件;另外再创建router文件夹,用于存放所有路由相关的配置

3.添加路由页面 src/views/Home.vue:

4.添加 src/router/routes.js 文件,用于配置项目路由:

5.添加路由入口文件 src/router/index.js

6.再次修改main.js

7.最后别忘了index.html:

可以再次执行 npm run dev: 浏览器直接访问 localhost:3800查看效果。

step5    配置Vuex

(vuex) 
专门为vue.js开发而配套的 状态管理模式 .通常用于存放和管理不同组件中的共用状态,例如不同路由页面之间的公共数据.

其他 几个概念:  
state:状态,即数据 ;  
store:数据的集合,一个vuex引用,仅有一个store,包含n个state 
mutation:state不能直接赋值,通过mutation定义最基本的操作 
action:在action中调用一个或多个mutation 
getter:state不能直接取值,使用getter返回需要的state 
module:store和state之间的一层,便于大型项目管理,store包含多个module,module包含state、mutation和action

1.安装 : npm install --save vuex@1 添加 src/store 文件夹,存放vuex相关文件,添加 src/store/modules 用于vuex分模块管理 ;  
2.添加 src/store/types.js,vuex的所有mutation type(操作类型)建议放在一起,有效避免重名情况:

3.vuex模块,添加 counter 模块目录 store/modules/counter添加 store/modules/counter/actions.js

添加 store/modules/counter/index.js

4.vuex入口文件:  store/index.js:

5.修改main.js,将store引入并添加到App中:

6.改造一下 src/components/Hello.vue,把action用上:

step6   配置eslint ---规范js编码

eslint定义的是编码风格,巧妙利用提供的rules,可以自定义配置 ,增减规则 ; 同时,在使用中检测不通过,不一定不能运行,只是违反了规则==。监督自我。

网上也已经有很多现有的配置了,建议(standard) 
1.配置.eslintrc文件

用了啥就安装啥:npm install --save-dev eslint babel-esli nt eslint-config-standard eslint-plugin-standard eslint-plugin-html eslint-plugin-promis

step7 webpack生产环境配置 ---对于编译出来的文件进行压缩,提取公共模块等操作

1.添加webpack.config/pro.js文件,相比dev.js把生产环境用不到的删掉,比如webpack-dev-server、webpack-hot-replacement.

(常用插件) :

extract-text-webpack-plugin 提取css到单独的文件  
compression-webpack-plugin 压缩gzip  
webpack.optimize.UglifyJsPlugin 压缩js文件,内置插件  
.....

2.在package.json中添加运行脚本:"build": "webpack --config webpack.config/pro.js";

3.运行npm run build,可以在dist文件夹中看到打包好的文件~~

webpack+vue的环境搭建到此算是初见雏形了,具体时实际运用还需要更多的实践

常见错误总结

安装一些npm包失败: 出现背景:执行npm install --save dev ....时

查问题shasum check failed


人话:npm镜像源错误。

解决:1.通过config命令

2.命令行指定

以上两种都可以快速解决安装问题,但治标不治本,下次安装时仍会出现。因此推荐?,直接在配置中指定写死,一劳永逸~

3.编辑  ~/.npmrc 加入如下配置:

npm版本太低报错:


解决:  
1、首先安装n模块 npm install -g n

2、升级node.js到最新稳定版 n stable 
若确定在最新版本中还是在报错的话,则需要检查是否时webpack.config中配置有错误,webpack@1.xx->webpack@2.xx 各中的(升级特性) 还是很重要的

出现segmentation fault 11报错: 出现背景:在一次需要最新版本的node时,舍弃了$n stable稳定版(因为系统还是提示需要升级最新版)执行 sudo n latest 后升级过慢,中间不够稳定,直接强行被退出。之后再运行,关于npm 和node 的所有命令均在报segmentation fault 11这个错误。

以为os被玩坏了,系统错乱,吓死宝宝了==。

原因:执行n命令,显示当前没有选中任何版本。 解决:用n命令重新设置要使用的版本 sudo n 版本号

版本太低的报错


解决:执行npm install --save-dev eslint-plugin-import@^2.0.0 
npm install --save-dev eslint-plugin-node@4.2.2

Webpack + vue 搭建的更多相关文章

  1. 二、Electron + Webpack + Vue 搭建开发环境及打包安装

    目录 Webpack + Vue 搭建开发环境及打包安装 ------- 打包渲染进程 Electron + Webpack  搭建开发环境及打包安装 ------- 打包主进程 Electron + ...

  2. 一、Electron + Webpack + Vue 搭建开发环境及打包安装

    目录 Webpack + Vue 搭建开发环境及打包安装 ------- 打包渲染进程 Electron + Webpack  搭建开发环境及打包安装 ------- 打包主进程 Electron + ...

  3. [Vue] karme/jasmine/webpack/vue搭建测试环境

    karma 和 jasmine karma 是 google 开源的一个基于 Node.js 的 JavaScript 前端测试运行框架,前身叫 Testacular. jasmine 是一个 jav ...

  4. webpack+vue搭建vue项目

    阅读地址: https://www.jianshu.com/p/23beadfa4aa5 源码地址:https://github.com/Ezoio/IMI-SOURCE-CODE

  5. 深入浅出的webpack构建工具--webpack4+vue搭建环境 (十三)

    深入浅出的webpack构建工具--webpack4+vue搭建环境 (十三) 从上面一系列的webpack配置的学习,我们现在来使用webpack来搭建vue的开发环境.首先我们来设想下我们的项目的 ...

  6. webpack+vue多入口环境搭建

    项目地址:https://pan.baidu.com/s/1c1Dflp2 使用前提:安装nodejs环境,webpack的配置官网的例子跟着跑一遍,会vue开发 研究webpack+vue研究了一个 ...

  7. 基于 Webpack 4 搭建 Vue 开发环境

    自从工作之后,就已经很久没有写过博客了.时间被分割得比较碎,积累了一段时间的学习成果,才写下了这篇博客. 之前有写过 Webpack4 的文章,但是都比较偏入门,唯一的一篇实战篇 -- 基于Webpa ...

  8. 高性能流媒体服务器EasyDSS前端重构(一)-从零开始搭建 webpack + vue + AdminLTE 多页面脚手架

    本文围绕着实现EasyDSS高性能流媒体服务器的前端框架来展开的,具体EasyDSS的相关信息可在:www.easydss.com 找到! EasyDSS 高性能流媒体服务器前端架构概述 EasyDS ...

  9. 手动搭建webpack + vue项目之初体验

    在使用vue做开发时,大部分人只会使用官方提供的脚手架搭建项目,脚手架虽然很好用,但想要成为一名优秀的前端开发者,webpack这一道坎是绕不开的,所以我们要学会脱离脚手架,利用webpack手动搭建 ...

随机推荐

  1. 二、JavaScript基础(2)

    BOM基础加强 1.浏览器对象BOM DOM Window DOM Navigator DOM Screen DOM History DOM Location 2.浏览器对象的使用 History H ...

  2. php 判断手机号 和 手机号中间四位以**** 代替

    代码: //自定义函数手机号隐藏中间四位 function get_phone($str){ $str=$str; $resstr=substr_replace($str,'****',3,4); r ...

  3. ERP项目实施记录09

    今天报价软件测试版本出来了,可看上去不怎么像是一款报价的软件,整个界面上都没有"报价"相关的字眼: 软件标题就不说了,反正影响不大,就当没看见,可左边这一大片菜单里也找不到和报价有 ...

  4. freertos 建立任务超过几个后系统不能能运行

    /* *** NOTE *********************************************************** If you find your application ...

  5. Linux下Solr单机版、集群版安装与配置

    一.安装 1.需要的安装包有apache-tomcat-7.0.47.tar.gz.solr-4.10.3.tgz.tgz(jdk自行安装) 这里默认大家已经安装好jdk与tomcat,所以在这里不做 ...

  6. 增加wamp64 PHP支持版本

    1.停止WAMP服务器.2.下载要安装的PHP版本.下载Window版本的ZIP包啦:http://php.net/downloads.php.解压到 Wamp的安装目录C:\wamp64\bin\p ...

  7. docker单机网络类型

    docker单机网络类型概述 Docker 安装时会自动在 host 上创建三种网络  分别为 bridge    host   none .   可用 docker network ls 命令查看 ...

  8. jenkins使用笔记

    jenkins动态在构建的时候给脚本传递参数 1.任务  >General > 参数化构建过程 >选项参数 2.把变量传递给shell脚本 3.构建的时候给参数赋值 4.shell脚 ...

  9. Python基础(十) __init__与__new__区别

    __init__与__new__区别: __init__在python,其实是,在实例化之后执行的,用来初始化一些属性,相当于构造函数,但是又不一样 细心一些,通过参数会有所发现,其实__init__ ...

  10. tp 内置压缩文件zip

    一.解压缩zip文件 $zip = new ZipArchive;//新建一个ZipArchive的对象 /* 通过ZipArchive的对象处理zip文件 $zip->open这个方法的参数表 ...