专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

webpack系列4之webpackserver的inlin

  1。本章概述
  在本章节,我们将简要的对webpackdevserver的基本使用做一个演示。通过这个章节,你可以学会如何在自己的项目中使用webpackdevserver。2。webpackdevserver使用
  第一步:安装webpackdevservernpminstallwebpackdevserverg
  第二步:在项目根目录下配置webpack。config。jsvarpathrequire(path);module。exports{entry:{app:〔。srcmain。js〕},output:{path:path。resolve(dirname,public),publicPath:,filename:bundle。js}};
  其中里面的各项配置,通过前面的章节你应该能够理解,此处不再赘述,如果不懂,可以仔细阅读前面的章节。
  第三步:配置package。json中的scripts部分scripts:{build:webpack,start:webpackdevserverinlinehotport3000contentbasepublic,test:echoError:notestspecifiedexit1},
  其中对于script部分不太了解的可以查看我写的package。json中的scripts部分深入讲解。通过配置scripts你可以使用如下命令:npmstart或者npmrunstart
  来替换掉:webpackdevserverinlinehotport3000contentbasepublic
  当然,如果你不想做替换,依然可以在目录下运行你全局安装的webpackdevserver命令。此时需要的所有配置都已经完成了,启动你的npmrunstart就会启动一个Express服务器,端口号是3000,同时支持HMR,contentBase为我们指定的public。3。webpackdevserver的inline模式与iframe模式
  上面的打包实例中你看到我在cli中传入了inline,表示这是内联的打包方式,那么什么是内联的打包方式呢?3。1iframe模式
  我们首先看看Express服务器是如何处理iframe模式的:app。get(webpackdevserver,(req,res){res。setHeader(ContentType,texthtml);fs。createReadStream(path。join(dirname,。。,client,live。html))。pipe(res);});
  所以当我们在URL中加入webpackdevserver的路径以后,我们就会返回live。html,我们再看看live。html的内容:!DOCTYPEhtmlhtmlheadmetahttpequivXUACompatiblecontentIEedgemetacharsetutf8metanameviewportcontentwidthdevicewidth,heightdeviceheight,initialscale1。0,userscalableno,minimumscale1。0,maximumscale1。0headbodybodyhtml
  其直接返回了webpackdevserverlive。bundle。js。我们看看这个请求Express服务器返回的资源内容:app。get(webpackdevserverlive。bundle。js,(req,res){res。setHeader(ContentType,applicationjavascript);fs。createReadStream(path。join(dirname,。。,client,live。bundle。js))。pipe(res);});
  所以我们最终返回的还是clientlive。bundle。js,我们就来看看live。bundle。js的具体内容。首先它会在页面中创建一个iframe并注册了客户端代码:constonSocketMsg{hot(){hottrue;iframe。attr(src,contentPagewindow。location。hash);},invalid(){okness。text();status。text(Appupdated。Recompiling。。。);header。css({borderColor:96b5b4});errors。hide();if(!hot)iframe。hide();},hash(hash){currentHashhash;},stillok:functionstillOk(){okness。text();status。text(Appready。);header。css({borderColor:});errors。hide();if(!hot)iframe。show();},ok(){okness。text();errors。hide();reloadApp();},warnings(){okness。text(Warningswhilecompiling。);errors。hide();reloadApp();},errors(errors){status。text(Appupdatedwitherrors。Noreload!);okness。text(Errorswhilecompiling。);errors。text({stripAnsi(errors。join())});header。css({borderColor:ebcb8b});errors。show();iframe。hide();},close(){status。text();okness。text(Disconnected。);errors。text(Lostconnectiontowebpackdevserver。Pleaserestarttheservertoreestablishconnection。。。);header。css({borderColor:ebcb8b});errors。show();iframe。hide();}};socket(sockjsnode,onSocketMsg);
  这样,当webpack的资源发生变化以后可以通过websocket通知到我们这个主页面。我们看看主页面最重要的一个方法,即reloadApp方法,方法内容如下:functionreloadApp(){如果开启了HMR功能if(hot){status。text(Apphotupdate。);try{iframe〔0〕。contentWindow。postMessage(webpackHotUpdate{currentHash},);}catch(e){console。warn(e);eslintdisableline}iframe。show();}else{status。text(Appupdated。Reloadingapp。。。);header。css({borderColor:96b5b4});try{letold{iframe〔0〕。contentWindow。location};if(old。indexOf(about)0)oldnull;iframe。attr(src,old(contentPagewindow。location。hash));if(old){强制刷新iframe〔0〕。contentWindow。location。reload();}}catch(e){iframe。attr(src,contentPagewindow。location。hash);}}}});
  这个主页面接受到事件以后,通过postMessage将当前打包的hash值发送到我们的内部的iframe。如果开启了HMR,那么iframe会检查资源更新,如果没有开启HMR,那么强制iframe进行刷新。上面讲了很多原理的知识,我们下面给出一个日常实例:
  我们的页面被嵌套在一个iframe中,当资源改变的时候会重新加载。只需要在路径中加入webpackdevserver就可以了,不需要其他的任何处理:http:localhost:8080webpackdevserverindex。html
  从而在页面中就会产生如下的一个iframe标签并注入cssjsDOM:
  这个主页面会请求live。bundle。js,其中里面会新建一个Iframe,你的应用就被注入到了这个iframe当中。同时live。bundle。js中含有socket。io的client代码,这样它就能和webpackdevserver建立的httpserver进行websocket通讯了,并根据返回的信息完成相应的动作。
  总之,因为我们的http:localhost:8080webpackdevserverindex。html访问的时候加载了live。bundle。js,其具有websocket的client代码,所以当websocketdevserver服务端代码发生变化的时候会通知到这个页面,这个页面只是需要重新刷新iframe中的页面就可以了。该模式有如下作用:Noconfigurationchangeneeded。(不需要修改配置文件)Niceinformationbarontopofyourapp。(在app上面有informationbar)URLchangesintheapparenotreflectedinthebrowser’sURLbar。(在app里面的URL改变不会反应到浏览器的地址栏中)3。2inlinemode
  webpackdevserver的客户端入口被添加到文件中,用于自动刷新页面。其中在cli中输入的是:webpackdevserverinlinecontentbase。build
  此时在页面中输出的内容中看不到插入任何的js代码:
  但是在控制台中可以清楚的知道页面的重新编译等信息:
  该模式有如下作用:Configoptionorcommandlineflagneeded。(webpack配置或者命令行配置)Statusinformationintheconsoleand(briefly)inthebrowser’sconsolelog。(状态信息在浏览器的console。log中)URLchangesintheapparereflectedinthebrowser’sURLbar(URL的改变会反应到浏览器的地址栏中)。
  每一个模式都是支持HotModuleReplacement的,在HMR模式下,每一个文件都会被通知内容已经改变而不是重新加载整个页面。因此,在HMR执行的时候可以加载更新的模块,从而把他们注册到运行的应用里面。不管是inline模式还是iframe模式,我们都是通过socketjs来连接客户端代码和webpackdevserver的服务端代码,其原理都是一样的。3。本章小结
  该本章节中,我们讲解了如何在你的项目中使用webpackdevserver来启动一个Express服务器,同时也分析了webpackdevserver本身具有的inline模式和iframe模式。并深入了讲解了iframe模式的原理,希望你能对webapckdevserver有一个更加深入的了解。文中提到的示例代码你可以点击这里下载。

上世纪80年代的预制板楼还有改造(加装电梯)的必要吗?拆了重建比较合适一些,毕竟也小40年的房子了。结构方面肯定不太好了。户型设计各方面肯定也不怎么好。装修也比较老旧。又没有电梯。可以的话,最好原拆原建。维持现状吧维持现状。这么长的楼相声表演中常拿别的明星开涮,会提前征得这些明星的同意吗?这个问题很有价值。所谓拿明星开涮,事关相声艺术中的砸挂手法。砸挂是相声艺术里的一个重要手段,喜欢相声的朋友一定要会看门道,不喜欢相声的朋友也有必要了解一下,免得遇到时当棒槌。砸挂里你见过哪些匪夷所思的诈骗案?网恋结交女友,却与女友姑妈同住三年。不仅细心照顾姑妈,上交了800000元,三年后才发现,女友竟是姑妈。小陆是杭州人,在网上做二手物品交易的,三年前,他的网店迎来了一名年轻的女性客春节,你家还过油吗?我家几年没过油了。人少,也没人来家串亲戚,老公单位食堂每年都有卖,真空包装的,还好保存,买上几样,冻冰箱里就行了。自己弄挺麻烦的,还一弄就多,也吃不了,最主要可能是我懒。呲牙刚看到手机里多余的内存该怎么清除?首先说明一下,其它内存可能是手机系统自身占用的内存,是不可能完全清除的。手机开软件多了,手机难免会卡顿,这时很多人清理都会一下内存,无非是用手机自带的清理软件,或者360,手机管家新零售与电商区别在哪里?新零售概念,线上线下融合,利用信息技术,数字技术,重组设计新商业模式交易结构。是在互联网基础上,物联网行业运用大数据,人工智能等先进技术手段,对商品的生产,流通和销售程序,进行升级想买OPPOA系列给老人用,平时用着会卡吗?还有信号怎么样?近年来千元机的体验迎来了很大提升,特别是随着越来越多5G千元机的推出,用户可以用非常超值的价格就能入手。那么很多人想知道千元机5G网速怎么样?。近期我就体验到了OPPOA56这款新减肥可以让眼睛变大吗?我觉得这个问题直接放一张图出来比较有说服力一点这是我本人,减肥40斤呈现的效果。大家可以看到,眼睛确实有非常明显的变大。就我个人而言,我觉得主要有以下两个原因使得眼睛变大。一减肥让家有十万以上的存款,还可以享受低保户吗?因在民政部门工作,我来回答这个问题。先说结论家有十万元以上的存款,肯定不能继续享受低保户待遇。如果家庭没有如实申报收入状况和财产状况,故意隐藏实际情况,一旦被查出,肯定要取消低保资工资4万的人多么?柳传志一月退休金按亿算柳传志的上亿退休金估计震撼了不少人!这才是工资届的天花板头条人均年薪百万我不知道怎么回答,我是土建工程师,工龄36年,月薪一万五,月薪四万?应该去五百强企业里很多人老了,才发觉真正的遗憾没有为自己多攒点钱你怎么看?很多人老了,才发觉真正的遗憾沒有为自己多攒点钱。我不认同这种观点,我身边的亲朋好友也常常感叹自己老了,遗憾的事情确实较多,但最大的遗憾就是年青时拼命的去奋斗,玩了命的去挣钱,用自己
两千年前的德州名人董仲舒,改变了中国历史命运董仲舒,是德州家喻户晓的名人之一,他出生于西汉时期,历经西汉三朝,分别是汉文帝汉景帝汉武帝,他既经历了文景之治,有经历了具有雄才大略的汉武帝时期,这三代恰恰是西汉最鼎盛时期。在当时朱元璋逃难到寡妇家,临走前寡妇害怕有孕,朱元璋的做法令人敬佩我国几千年历史,从第一位秦始皇,到最后一位溥仪,前前后后经历了整整408位皇帝,这个数目其实是非常可观的。上任的皇帝,有的能稳坐位置好几十年,有的不过短短几年时光,更有甚者,只有两资事通鉴中国古代四大妖姬玫瑰四大妖姬,是指中国古代四位著名的宠妃夏之妹喜商之妲(da)己周之褒姒(si)晋之骊姬。她们美若天仙,国色天香,妖媚动人,倾城顺国,沉鱼落雁,闭月羞花。可谓是代红颜祸水,深得君王土木之变后,于谦为什么选择朱祁钰明正统十四年(1449)八月十六日夜里三更时分,一阵紧急的脚步声打破了皇宫内的宁静。司礼监提督太监金英带着从怀来传来的信件敲开孙太后的寝宫,孙太后展开信函读罢,顿时就瘫在了座位上。有钱人喜欢买二手房,刚需却爱买新房,是什么原因导致的?11月财经新势力近一年多的时间内,全国楼市呈现下行趋势,此时人们买涨不买跌的购房思想体现得淋漓尽致。这一点其实很好理解,因为房价的下跌跟上涨一样,都是一种会维持一段时间的趋势,因此雅安喇叭河一个骗你入瓮逗你好玩儿的人间仙境自古逢秋悲寂寥,我言秋日胜春朝。秋意正浓,正是赏红叶看彩林季节。高山深谷雪峰云海枯树老藤流金淌银海子如玉飞瀑流泉鹿鸣呦呦野猴飞窜在成都人的眼里,雅安天全的喇叭河景区的秋天是美的,美立冬吃饺子,韭菜白菜都靠边站,用它做馅太香了,不懂吃真可惜导语天冷包饺子,白菜萝卜都靠边站,这菜做菜馅才是香!不懂吃真可惜!大家好,我是傻姐美食,吃饺子是中国的一种传统风俗,尤其是过年过节,离不开吃饺子。饺子的菜馅种类有很多,像我们常吃的长白山大峡谷长白山大峡谷是长白山西坡的经典风光,位于长白山西景区,是十多年前发现的新景观,是壮观神奇的大峡谷,是一座立体的自然雕塑博物馆。这里千峰竞秀,层峦叠嶂,气象万千。长白山大峡谷长70多超大洗烘容量守门员,米家直驱洗烘一体机12kg到站体验一直以来,米家洗衣机产品线用丰富的产品定位,以及较高的性价比,非常好的满足了对颜值智能化要求较高的消费者的洗护体验,然而有一块产品馅缺口始终没有被填补,那就是10kg以上的超大容量1500元手机怎么选?双11这4款物美价廉,再用3年无压力,别买错了您在阅读前请点击上面的关注二字,后续会第一时间为您提供更多有价值的相关内容,感谢您的支持。随着千元机市场竞争越来越激烈,很多款高配置的手机,目前也已经降至千元的价格,可以说现在千元双11电视抢购攻略哪款才是MiniLED质价比之王?今年的双11已经正式开战,你有哪些想买的东西吗?除了日常生活用品外,其实双11最值得入手的还是一些大家电产品,比如电视空调电冰箱等等。以电视机为例,如果大家想要买到产品不落伍,那么
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网