凯瑟琳的小脸上满是兴奋和紧张,毕竟这种事可不是闹着玩的。叶扬则是颇为无聊的摆弄着自己手上的一柄匕首,他本来不想带这柄匕首的,但是凯瑟琳却要求他必须带着,说是从教堂里求来的,有着神圣力量的加持。

走进webpack(1)--环境拆分及模块化


  初级的文章和demo已经基本完成了,代码也已经上传到了我的github上,如果你对webpack的使用并不是十分了解,那么建议你回头看下走近系列,里面包括了当前项目中使用频繁的插件,loader的讲解。以及基本的webpack配置,相关依赖等。如果你已经有了一定的webpack使用经验。那么你直接看这篇文章也是完全没问题的。

  这一系列会着重讲解webpack的进阶使用方法,前面文章讲解过的一些部分,就不会再去重复的解释。

  那么,还是先交代一下环境以及目录结构,这些你可以直接从github上获取到:

  下面是当前的环境配置版本:

  在实际的工作当中,我们会区分不同的环境来执行不同的webpack配置代码,以实现不同环境的要求,当前的主要环境其实就两个,一个开发环境,一个生产环境。开发环境更倾向于便捷的调试,开发的方便,比如热加载等。而生产环境希望代码的体积更小,http请求更少,页面的加载速度更快。甚至有些时候两个环境的要求是互斥的。所以才需要根据不同的环境来配置不同的代码。

  废话不多说,咱们直接进入正题吧。

 

  在前面的文章中,为了使静态资源找到正确的路径,我们设置了一个变量webpath,那么如果要区分环境,变量的值肯定是不同的,那么我们如何根据命令来使webpath获得不同的值呢,其实很简单:

  修改一下package.json中的build命令和dev命令,加上一个参数,然后我们在webpack.config.js中可以通过process.env来获取到这个参数。这样就可以区分不同的环境了。

"scripts": {
  "test": "echo "Error: no test specified" && exit 1",
  "build": "set type=build&webpack --mode production",
  "dev": "set type=dev&webpack-dev-server --mode development",
  "version": "webpack -v"
}

  那么修改完package.json中的命令后,我们还需要修改一下webpack.config.js中webpath那段代码:

/*根据参数的不同来区分不同的环境*/
if(process.env.type == "build"){
    var webpath={
/*这个地址目前是随便写的,只是为了区别于开发环境,真实上线的话要改成你上线的地址*/
        publicPath:"http://www.zaking.com/"
    }
}else{
    var webpath={
        publicPath:"http://192.168.199.124:9090/"
    }
}

  这样就可以了,运行不同的命令来试试效果如何吧。这里简单说明一下,process.env是什么,process是node的一个全局环境变量,process.env.type也就是你设置在scripts命令中的type值。更详细的内容不在这里多说,有强迫症的小伙伴可以去看看这里:https://nodejs.org/dist/latest-v8.x/docs/api/process.html#process_process_env。

  那么环境拆分说完了,如何模块化配置webpack呢?其实也很简单,听起来比较高逼格罢了。简单说就是把通用变量放在一个单独的js文件中,然后通过export暴露接口,require引入接口而已!比如你在使用vue中一定写过很多这种东西,再简单也要说一下滴。

  我们新建一个与webpack.config.js同级的文件夹,名字就叫做entry.js(入口)。然后我们在entry.js中写入入口配置的代码:

const entry ={};  
//声明路径属性
entry.path={
    main:"./src/main.js"  
}
//导出该变量
module.exports = entry;

  然后在webpack.config.js中引入该模块,并且修改下入口处的配置代码:

/*在这里引入entry文件的路径*/
const entry =  require("./entry.js");
  /*入口文件*/
entry:entry.path

  这样就实现了所谓的模块化,当然这里只是举一个简单的例子,复杂的配置项目可能会有逻辑复杂的模块化配置。比如vue-cli那样的,现在你再去看看vue-cli的代码,应该也可以看懂一些了,只是它的功能更为复杂,模块的关联更强。那么这篇文章就暂时写到这里。下一篇会带大家一起看看如何打包第三方类库等更贴近生活的实用技能。本篇文章的代码也已经同步更新到github上了,以后随着文章的更新会实时同步代码,方便大家学习。

当前文章:http://hnhdqp.com/kan/ckgl6wqt2r.html

发布时间:2019-03-22 00:39:32

【情感问答】未来丈母娘反对我们交往 罗李华谈:属鼠的人2016年运程 孩子的好习惯不是靠培养出来的! 全球9大正在消逝的旅游胜地 发现儿童心理健康问题的11个信号 那么,葡萄酒 从厦门BRT爆炸案谈反社会性人格障碍的防制 三成网民“不快乐” 网瘾难逃离 人民币贬值对我们意味着什么? “好男人”的爱情实录

十二星座的灵魂年龄是多少? 别为小事而抓狂 哪些动物能精准预测天气? 孩子的好习惯不是靠培养出来的! 【恋爱课堂】亲密关系:依恋理论 性格影响婚姻 亲爱的,没有什么比努力赚钱更让你理直气壮 终于找到适合自己的学习方法 修持戒定慧来开悟明智和去除烦恼 一下剩出七个 经典原创禅诗:【禅.十字回文诗】 罗李华谈:属猪的人2016年运程 一只狗的绝望体验 怎样谈出理想薪酬? 有一天,你会变得很棒 2011再谈择校:续说海淀区民族小学 亲爱的,没有什么比努力赚钱更让你理直气壮 经典原创禅诗:【禅.十字回文诗】 看《芈月传》,你需要先知道的历史知识

编辑:宗秉徒宗

相关新闻

陌陌附近活动可邀约 用户变身人气明星

2019-03-22 00:05:57

宁波么普芭电子有限公司

虚拟运营商170手机号将上线 月末流量或不清零

2019-03-22 00:20:16

荆州徒兄肆科技有限公司

英特尔开发可穿戴设备 旨在治疗帕金森症

2019-03-22 00:46:28

五家渠祭桥工艺品有限责任公司

宝鸡一民营医院集资诈骗1.2亿

2019-03-22 00:39:23

鸡西辟孜没机械设备有限公司

热门推荐

  • 《宝石之国》动画第5话预告视频 法斯获得全新神装
  • 中兴Blade A3明日发布:号称“国民长续航双摄大内存”
  • 黑枣和红枣有什么区别?女人要注意了!
  • 无限期延后 亚马逊竞技新游《Breakaway》宣布跳票
  • 长征5号遥二火箭垂直转运 7月2日至5日择机发射
  • 茂县救援现场又发现一具遗体 村民:可能是亲人
  • 俄米格29坠海缘故原由扑朔迷离 机群损失四分之一
  • 四川省红十字会首批救灾物资抵达茂县 含家庭包棉衣等
  • “神医”刘洪斌无中医医师资格:3年9个身份卖药
  • 驻渝武警抵达茂县 15台挖掘机举行门路疏通
  • 河北新闻网版权所有 本站点信息未经允许不得复制或镜像 法律顾问:欧美同学会是干什么的? 天津心理工作站战友印象之赵海华
  • 你相信这超凡脱俗的爱情吗? copyright ? 2000 - 2016
  • 新闻热线:0311-67563366 广告热线:0311-67562966 新闻投诉:0311-67562994
  • 冀ICP备 09047539号-1 | 互联网新闻信息服务许可证编号:1312006002
  • 广播电视节目制作经营许可证(冀)字第101号|信息网络传播视听节目许可证0311618号
  • 怎么确定家中的风水财位? 低龄儿童培养的是领导力还是全能感? 从四大名著浅说团队 富二代你凭什么抢走我们的妹子