这节主要讲解真正项目用用到的 webpack配置问题,项目实战篇

就像我们不会完全做一个项目,不用别人的轮子一样。
这个配置我们借用 vue-cli 搭建的配置来研究,因为它已经足够优秀。

有了前面的基础,这节快速切入主题。

文章目录

  1. 1. 用 vue-cli脚手架 初始化项目
  2. 2. 学习分析vue-cli的配置
    1. 2.1. 目录结构
    2. 2.2. config目录
    3. 2.3. build目录,webpack配置精华
      1. 2.3.1. webpack.base.conf.js
      2. 2.3.2. webpack.dev.conf.js
      3. 2.3.3. webpack.prod.conf.js
      4. 2.3.4. utils.js
      5. 2.3.5. dev-client.js
      6. 2.3.6. build.js
  3. 3. 一点闲话 es6 babel
  4. 4. 一点想法关于spa单页应用

用 vue-cli脚手架 初始化项目

Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用。该工具提供开箱即用的构建工具配置,带来现代化的前端开发流程。只需一分钟即可启动带热重载、保存时静态检查以及可用于生产环境的构建配置的项目:

install

#全局安装 vue-cli
$npm install -g vue-cli

#创建一个基于 “webpack” 模板的新项目
$ vue init webpack my-project

#安装依赖,走你
$ cd my-project
$ npm install
$ npm run dev

注意:vue init webpack my-project 这一步初始化过程中,可根据需求选择是否需要某些插件

ok,就是这么简单!

学习分析vue-cli的配置

  • 目录结构

  • config目录

    主要是index.js配置,build 和 dev各自的输入输出,以及开发环境服务的默认端口和代理配置项等
    其他三个文件顾名思义,都是方便配置切换环境用的变量。
    这种思路非常值得学习,抽离配置,合并(merge)使用。

  • build目录,webpack配置精华

    • webpack.base.conf.js

      此项配置之前已经讲解过,这里主要说明 resolve 配置项

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      resolve: {
      extensions: ['', '.js', '.vue'], //后缀名,用于模块查找
      fallback: [path.join(__dirname, '../node_modules')],
      alias: {
      jquery: path.resolve(__dirname, "./components/jquery/dist/jquery.js")
      }
      }
      // fallback: 这歌主要用于解决路径找不到问题,配置成绝对路径
       
      /**
      * [alias 这是个重点,别名,别笑这不是废话]
      * 简单说有一个人叫 莱昂纳多·迪卡普里奥(Leonardo DiCaprio)
      * 这名字真特么长,不符合我们习惯,所以给你另起了一个代号叫 小李子
      * 以后大家叫小李子,我们就会明白是叫 莱昂纳多·迪卡普里奥
      * 所以配置好上面那个之后,我们想召唤 jQuery的时候,
      * 不用写那么多,只需 require("jquery") 即可
      * 有没有瞬间觉得世界很美好呢
      */

    聪明的您可能还会发现一个问题,jquery这种东西,几乎每个页面都需要,每次都召唤require(“jquery”)有没有很烦恼。
    这里传授你 什么叫做 大召唤术 ,一次召唤,随身使用。说人话就是做成 全局变量。。。
    我们只需要在中加入一个插件即可:

    1
    2
    3
    4
    5
    6
    plugins: [
    new webpack.ProvidePlugin({
    $: "jquery",
    _: "underscore"
    })
    ]

    看见没,上面想召唤什么就 加进去就好了,阳光真好啊.

    一点闲话 es6 babel

    用babel转码,切记一点,必须有转码规则配置,可写入.babelrc文件

    1
    2
    3
    4
    5
    6
    # .babelrc
    {
    "presets": ["es2015", "stage-2"],
    "plugins": ["transform-runtime"],
    "comments": false
    }

    或者写入babel-loader加载器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    loaders: [
    {
    test: /\.js$/,
    loader: 'babel',
    query: {
    presets: ['es2015']
    },
    exclude: '/(node_modules|components)/',
    include: "/"
    }
    ]

如果发现 便已完毕仍不识别es6语法,不识别import,请更改上面 include 值为 根目录 试试。

一点想法关于spa单页应用

构建单页应用,用vue作者大神的这个配置就好了,根据需求自行调整,太优秀。

webpack 教程 那些事儿04-webpack项目实战分析的更多相关文章

  1. webpack 教程 那些事儿06-gulp+webpack多页

    本篇主要讲述用gulp+webpack构建多页应用 折腾到现在,项目还必须要进行,.vue文件必须要加载,也就是webpack必须引入.时间不多了,抛弃上个方案之后,只能牺牲热加载性能,用gulp+w ...

  2. 【ASP.NET实战教程】ASP.NET实战教程大集合,各种项目实战集合

    [ASP.NET实战教程]ASP.NET实战教程大集合,各种项目实战集合,希望大家可以好好学习教程中,有的比较老了,但是一直很经典!!!!论坛中很多小伙伴说.net没有实战教程学习,所以小编连夜搜集整 ...

  3. webpack 教程 那些事儿03-webpack两大精华插件,热加载

    本节主要讲述 webpack的两大经典开发调试插件,热插拔内存缓存机制 文章目录 1. html-webpack-plugin插件的使用 2. webpack-dev-middleware 插件登场 ...

  4. webpack 教程 那些事儿01-webpack是什么

    文章目录 1. 为什么引入webpack? 2. webpack到底是什么? 3. webpack的工作流程理念 4. webpack的使用 4.1. install webpack 5. 分享源码d ...

  5. webpack 教程 那些事儿05-多页应用

    本篇主要关于如何用webpack构建多页应用 为什么要构建多页应用呢?因为我的项目本来就是多页应用啊至于为什么要用webpack?因为我要用vue啊,嫌gulp 每次打包慢 啊 文章目录 1. 利用v ...

  6. webpack 教程 那些事儿02-从零开始

    接着上篇我们有了最简单的安装了webpack的项目目录这节我们从零开始搭建一个简单的基于webpack的spa应用demo本节只说基础常用配置项,复杂后续讲解. 文章目录 1. 新建项目结构目录,如下 ...

  7. 【EF 5】结合项目实战分析EF三大工作模式之—Database First

    导读:所谓的EF的Databasefirst工作模式,是目前我们(不涉及社会领域)用的最广的一种模式,也是本次ITOO开发所采用的工作模式.本篇博客,就分析在项目中通过Database First模式 ...

  8. webpack+vue项目实战(四,前端与后端的数据交互和前端展示数据)

    地址:https://segmentfault.com/a/1190000010063757 1.前言 今天要做的,就是在上一篇文章的基础上,进行功能页面的开发.简单点说呢,就是与后端的数据交互和怎么 ...

  9. Vue2+VueRouter2+webpack 构建项目实战(三):配置路由,运行页面

    制作.vue模板文件 通过前面的两篇博文的学习,我们已经建立好了一个项目.问题是,我们还没有开始制作页面.下面,我们要来做页面了. 我们还是利用 http://cnodejs.org/api 这里公开 ...

随机推荐

  1. Linux学习一周初体验

    Linux一周初体验一.准备工欲善其事,必先利其器--虚拟机+Redhat7.0构成学习的环境.安装有条不紊.按部就班.......(涉及到的KVM.VNC.Root密码重置等内容,之后再详细了解)注 ...

  2. Form Submit表单提交

    <button type="button" ng-click="submit()"class="btn btn-block btn-danger ...

  3. $(document).ready、body.Onload()和 $(window).load的区别

    window.load(function(){...})和body.onload()都存在同样一个问题,那都是在页面所有元素(包括html标签以及引用到得所有图片,Flash等媒体)加载完毕后执行的, ...

  4. centos 网络配置

    centos 网络配置网络配置 -bash-4.1# setup    #如果没有setup命令,可以yum install setuptool -y  也可以安装setup 命令 http://ji ...

  5. delphi---控件使用

    1.TBitBtn控件 属性:Glyph,指定要显示的位图:    Layout ,设置位图在按钮的位置:Kind,要想用自设位图,这个属性要设置bkCustom; 2.TTreeView TTree ...

  6. python中配置文件写法

    import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) print(BASE_DIR) USE ...

  7. css3 中的transition和transform

    我以前始终都把他搞反,或者是混淆.现在可以稍微小结下. Transition:CSS3中处理动画的一个样式:只涉及动画起始和终止两个状态.如果涉及到一个动画的各个时间或者状态,那就必须要用到的另外一个 ...

  8. lazyload.js实现图片异步载入

    所谓图片异步加载,意思是不用一次把图片全部加载完,你可以叫它延迟加载,缓冲加载都行. 看看你有没有这种需求:某篇文章图片很多,如果在载入文章时就载入所有图片,无疑会延缓载入速度,让用户等更久,所以,我 ...

  9. 关于Hash集合以及Java中的内存泄漏

    <学习笔记>关于Hash集合以及Java中的内存泄漏 标签: 学习笔记内存泄露hash 2015-10-11 21:26 58人阅读 评论(0) 收藏 举报  分类: 学习笔记(5)  版 ...

  10. servlet中的相对路径和绝对路径 及/, ./, ../的区别

    ./ 当前目录../ 父级目录/ 根目录资源寻找都是依靠路径,资源存储方式是按照哈希表运算的,所以路径的计算其实就是哈希值的计算. servlet中,所有路径的配置都要用绝对路径. 什么是绝对路径,就 ...