为什么本该简简单单的消费者维权事件 在三星 中国消费者的面前,就变得如此困难

天理何在?孩子被三星手机炸成这样,居然不赔偿,还抵赖!!-天思锐意
天理何在?孩子被三星手机炸成这样,居然不赔偿,还抵赖!!作者:天思锐意 / 公众号:i-thinkn发表时间 : 说起三星手机爆炸,似乎已经离我们很远了,然而事实上,三星手机炸伤人的事件直到今天也从未停止过,就在今年3月份,普定县一个普通家庭,三星Note4手机在充电时爆炸自燃,造成一个小女孩,脸部手部的严重烧伤。这个热心的网友和你我一样只是个普普通通的网民他的ID叫做“不老的老回”于是大家向三星报告要求三星给一个说法过了两天三星就给了这样一个“说法”三星说国行的Note7电池供应商不同电池是安全的可以放心用然而在同一时间三星却主动召回了美国的Note7承认了自己的错误并给美国消费者退了款????这是在干什么?自己打自己脸?摆明了欺负中国消费者?你确定你不是在逗我?但是事情还没有结束随着中国越来越多的三星手机爆炸老回联合了越来越多的消费者向三星维权可是,问题反馈到三星三星依然没打算承认错误反而又发表了一份声明声称“手机是外部加热所致”还通过韩国媒体说中国消费者用微波炉加热手机以骗取赔偿还要对这两位消费者提起刑事诉讼????非但不承认错误还说消费者诈骗?面对三星的态度老回打算用证据狠狠打三星的脸他把手机带到泰尔实验室进行了严格的检验检验报告显示手机爆炸不是外部加热导致的是电池自燃导致的结果,老回到达三星总部之后两位三星的售后经理会见了老回他们表示已经记下了问题会尽快向上面报告承诺48小时内给予答复两天后三星给老回打了个电话根本没有赔偿道歉的意思只是表示还需要研究讨论打来电话是因为承诺会在48小时内回复挂了电话,老回第二天又拿着报告去了三星中国总部见到了三星的法务部对方又热情的招待了他然而给他的答复还是:“已经记录上报48小时回复”就这么老回来来回回跑了好几趟前前后后打了50多个电话耗了一个多月的时间甚至被干晾在办公室一天一夜不予理睬还曾被三星的员工扣上“非法入侵”的帽子被强行拉离现场但自始至终,手机的问题都没有得到实质性的解决老回这才明白三星是打定了主意就把事情就这么拖下去三星打一开始就没把中国消费者当回事消费者也有自己的工作谁能天天跟他耗下去?谁有空天天去三星要求索赔?等你忙起来了手机爆炸的事情不就抛到脑后去了?这样无赖的手段一般的人碰上了顶多也就是抱怨几句也没那个精力真去告商家给不给退换能不能得到赔偿全看商家的良心可是老回不愿意妥协他觉得商家卖的东西出问题了退换赔偿道歉天经地义怎么到了三星这里到了中国消费者这里事情就变得这么麻烦了?“为什么中国的消费者维权那么难?这不公平”老回下定决心要和三星较这个真他要替所有中国人维这个权!于是,他联系到了包括央视在内的多家媒体把三星彻底曝光出来可是老回没想到的是三星的能量大到超乎他想象在他和消费者一起联系媒体的时候三星也在斥巨资搞公关他在珠江电视台录制的节目《老回大战炸弹星》播到一半时节目直接被掐掉一片黑屏说好报道刊发的媒体最后突然纷纷撤下了稿子甚至原本陪同他一起的央视也在最后因为“不可抗力”离老回而去和老回类似的消费者在三星强大的能量面前也只能无奈选择接受换机之后隐瞒消息的条约息事宁人四面楚歌按理说,到了这一步所有人都离开了不想放弃也只能放弃了吧?可是老回没有!面对着四面楚歌老回依然要奋战到底!日凌晨四点贵州安顺普定县冯先生的女儿在三星Note4充电时因为Note4突然爆炸脸部和手部严重烧伤:即使是治疗完毕后也在小姑娘的手上和脸上留下了永远的疤痕相关视频在此:出了事情以后冯先生一家不知道如何维权也只有几家小媒体报道此事但是老回在得知这个消息后第一时间赶到了普定县他想要帮冯先生维权他不想让冯先生也感受到和自己一样的孤独老回找到了当地工商部门工商表示根据证据来看手机的确是三星生产的正品但是面对事实三星又一次开始了推诿、抵赖、狡辩在老回给三星总部打电话之后三星的工作人员才派了两个人来到当地现场他们到达后的第一件事情不是去了解小女孩的伤情也不是收集事故残骸检测而是说“不许录像,拿出去。”他们自始至终都在不屑地咧着嘴冷笑他们自始至终脸上都写满了傲慢在老回的争取下三星将手机残骸拿回去检测后给老回出具了一份所谓《贵州Note4电池燃损事故说明》称发生燃爆的电池并非三星生产结果老回一眼就发现三星公司在鉴定报告中说手机电池是2016年生产的而爆炸的手机是Note4生产日期明明白白地写着是2014年又一次当场打了三星的脸被拆穿之后,三星依然没有道歉继续腆着脸和老回耗着谁知道,到了信访局以后老回和信访局的人才说了几句话对方就粗暴地打断了老回当地信访局局长唐玲还一声令下:“弟兄们!只要有人在这拿摄像机摄像的给老子抢了砸!”对方就一拥而上殴打老回一行人还抢夺打砸拍摄设备把老回打成了这个样子:老回去医院检查后发现自己的尿液中检测出了红细胞符合肾挫伤的症状闹到最后,老回非但没有从三星手里讨到任何说法还要自己掏钱治自己受的伤还要自己掏钱垫付同行女生的损失事情发生后老回在新浪微博上发布了一篇关于此事的博文却因此被频频施压甚至连热心的知乎网友帮助投诉该信访局的信也被无端删除图:知乎网友“张彪雕”的投诉记录老回又一次四面楚歌但面对全方位的封杀老回依然坚持了下来要帮冯先生一家讨一个说法终于,老回的坚持得到了一点点的回报中国青年报和共青团中央微博官方账号陆续报道了这一事件6月28日,中国青年报也将此事刊登出来事情闹大了之后当地的领导也找到了他们并表示冯先生的事情一定会帮忙到底一定会帮助请法律援助费了千辛万苦忍受了诸多戏弄、侮辱和委屈终于得到了这么一点虚无缥缈的进展老回开心地说:“这打挨得值”看见这短短的五个字不知为何,我心里却觉得非常酸涩为什么本该简简单单的消费者维权事件在三星的面前,就变得如此困难?为什么本该天经地义的道歉赔偿的流程在中国人这里,就要付出血的代价?为什么中国消费者要闹得头破血流才能得到自己应有的权利?为什么三星这样一个烂到骨子的韩国企业在中国的能量能大到这个地步?!虽然老回一直很谦虚他说自己从来都不是一个人他说全是有大家的关注和支持才支撑他一直走到现在但是在蛋蛋姐心里老回做到了绝大多数人没有做到的事情他知道,中国的消费者沉默得太久了他知道,傲慢的商家们不把中国人放在眼里太久了他更知道,如果今天他不较真不替大家站出来明天你、我还有我们的下一代就要成为沉默的受害者!所以,即使面对着重重阻力面对着百般折辱他也依然挺直了腰板坚定不移地走下去虽千万人吾往矣老回是一个真正的英雄延伸阅读三星是怎样逼迫员工自动离职?相信大家都看了很多关于三星note7爆炸的新闻,媒体的口诛笔伐和企业的苍白回应,都让大家对于三星这一力求成为做中国人喜爱企业的品牌信心丧失。本文无意去回顾整个事情的发展脉络,只想让大家看到这个企业内部的一些现实状况,至于这些状况有多大程度会作为爆炸门的背后驱动力因素,大家自行判断吧。援引央视和环球网在各自报道中所称三星在中国消费者质疑产品爆炸,进行相应申诉的时候,企业却称声称因为消费者的不当操作引起爆炸,进而要起诉消费者,两篇报道都发问,韩国人,你们还要起诉中国消费者吗?加上之前媒体报道的中国迟迟未召回产品,地区的差别化对待,让我们不禁会把目光从产品问题放到人品问题上,如果一个品牌,想获得地区消费者的尊重,除了过硬和领先的产品外,真的尊重当地民众的心态是必须的,没有尊重,谈何做中国人民喜爱的企业?说到韩国这一邻国和中国的关系,在网络流传的各种段子中可见端倪,现时国民之间的对立,网络上的相互攻击都是事实。今天咱们就说说口口声声尊重中国消费者的企业内部的一些真实状况。大家都知道,企业以人为本,优秀的人才可以扛起一个企业的大旗,酒囊饭袋也可以侵蚀一个企业到倒闭。人才本地化也一直是三星响亮的口号,当然也只是个口号而已。多年来韩国人的盘踞高位,多年来中方高层的实权旁落,这些我们都可以理解为一个韩国民企的自我保护意识强烈。但建立类似于东厂西厂的组织,利用企业内审的名义来把高丽民族对中国人的轻视和不尊重得以放大,一方面挣着中国人的钱,一方面从情感和道义上欺压中国人。今天我们就说说这点事儿。三星有个部门叫“诊断team”,按照本人对中文的粗浅理解,医生的诊断是救命,而三星的诊断是要命。原来数年一次,到近年的常备状态,他们的工作就是找到你工作中的疑似漏洞或者疏忽,从大到小都有,然后把你关“小黑屋”,极尽能事的用挑衅,侮辱,激怒的言辞和举措让你失态,让你自我放弃,从而达到让你走人的目的。每个三星人的脑袋上都悬着个利剑的虚拟标识,你可能看不见摸不着,但他们觉得有必要的时候就会落下。我不会去分析他们背后的驱动力和办公室政治,但我想说说具体他们都用哪些手段来凌辱中国员工的。一、语言暴力,精神虐待。在中国人权极大发展的今天,为什么中国人的人权要受到韩国人的管控?精神虐待,言语暴力。如曾听到有人抱怨,诊断的人在小黑屋里面对员工说“给脸不要脸”这种侮辱性语言。我也曾在楼道里看见女员工泣不成声的跟同事说“他们不就是想让我走嘛,干嘛这么侮辱我”。最近一段时间,三星的广告公司楼下总有救护车进场,有员工被从诊断的“小黑屋”里架出来,上120了。这是何等的施压才能导致的结果?只怪有时候国人息事宁人的观点太强,老觉着人在屋檐下,吃点小亏没啥。限制人身自由。不按照诊断满意的去写就不让出“小黑屋”,加班熬夜导致员工身体疾患以致住院。诊断也是工作范畴,为什么不让期间休假,难道家里死了人也不可以吗?企业基本的良知在哪里?按照中华人民共和国劳动法第三十八条第六项规定,用人单位不得以暴力、威胁或者非法限制人身自由的手段强迫劳动者劳动。对个人记录信息非法调取,比如通话记录等。还逼迫员工带他们回家查看私人物品、电脑等东西。要我说,干脆在人家安个摄像头得了,您还省得往返跑了。二、无视中国法律法规Note7被国人指责的双重标准再次实施在中方员工身上。他们的逻辑是:规则他来定,你只能服从。他能录音,你不能,他能摄像,你不能,他让写供词,连拍个照留存都不可以。真要是有啥问题,员工自我权益怎么捍卫?你们说诊断这是害怕啥呢?有个最奇葩的罪名叫“不配合诊断”。配合与否的标准大到员工的情绪宣泄,敢拍桌子你就滚蛋,都不用审了。小到休息时间给你计时,迟到了就一脸不高兴,还警告你,属于不配合诊断啊。居中的是他们在没有证据可以指控你的情况下,会用各种手段来挑衅你,达到他们不配合的标准。这样你自动离职,公司不就省事儿了,其中的事儿,你们懂的,呵呵。交谈过程中,他们会引导你按照他们认定的逻辑来回答,否则就在同样的问题上反复问,反复挑衅你,让你一遍一遍写下来,直到你崩溃。在他们的思维中,只有认定他们的逻辑和原地转圈烦死你两种方式,不认可员工对同一事物的不同见解。总之,熬死你,就等着你“不配合诊断”呢,你要挺不过来,呵呵,你们又懂的。三,取证手段卑劣,无所不用其极找离职员工访谈。离职员工或多或少对公司,对个人都有抱怨,他们可以不负责任的记录在案,堂而皇之的作为线索,这跟道听途说有什么区别?威胁合作伙伴和行业人士,不交出他们满意的答案就威胁停止合作。一个类似于东厂的机构,这放古代就得说后宫不得干政。各种威逼利诱,配合一起杜撰就给合作伙伴画大饼,人家坚守职业操守就威胁取消合作。很多合作方都被问得莫名其妙哭笑不得。艾玛~大企业噢,你瞅瞅……超出合理范围的强迫员工去记忆。比如三年前的某天跟谁吃饭,为了什么事。尼码,我3个月前跟谁见过面我都记不清,你是要上天啊~总之,配合诊断的工作没有时限,而且凌驾于本职工作之上,那么企业价值不需要创造了?公司花钱请我是来实现价值的,不是来陪这些没有道德底线的人磨牙的。说到这,八卦一下,如果说“道德经营”,“正道经营”是三星悬挂门楣上的企业准则,那么会长老李本人被本国媒体传常年在家嫖妓的丑闻,还因政治贿选金判刑该作何解?这算道德还是正道?这又何尝不是一个双重标准?自己这个样子,还好意思说别人?这也就好理解为何这些作为工具的“诊断Team”可以如此肆意妄为。当然,这是你的企业,你可以为所欲为,但是请不要站在道德的高地自high,而且这种自high是以损害你口口声声看重的中国人民的利益为前提的。或许,当三星看到这篇文章的时候,会通过各种方式删帖或者公关,甚至试图找到谁是撰写人。网络社会,言论自由,本文所述的事实,欢迎大家向在三星工作的朋友验证。有兴趣的朋友及时截屏。本文来源于天涯杂谈,楼主:恩来先生授,转载请联系原作者。原文链接:/post-free-.shtml?t=9#fabu_anchor以下是网友回复摘录:作者:颜小歪 时间: 11:49:53这是真的,俺是前三星人,前段时间被广州三星合规部的人死缠烂打的见面打探各种消息!据前同事说公司内部现在对员工监控更加严格,电脑的安全软件不停的截屏查看员工电脑,完全无隐私!作者:ty_ 时间: 12:14:19我叫柯艾文,是三星集团下属全资广告公司三星鹏泰国内事业部工作,公司在北京三里屯盈科中心A座四层,我是C4-1级别员工,内部也叫次长。我在今年4.11在小黑屋被审讯过,文章情况全部属实。目前我属于等待公司开除的状态中,希望更多人知道诊断team侮辱员工的真相。 shimeitang: 16:22:59评论 ty_:属实,我们领导此刻正在小黑屋,这周二开始的,公司手段太下作了。作者:摸肚大魔王 时间: 12:47:14楼主,我有诊断录音!该怎么做!他们在内审时,非要你承认莫须有的所谓的违规。不承认就继续逼问!作者:路人飘过之 时间: 14:34:59诊断Team就是一帮替高层清理人员的狗腿子,每次诊断都是有重点的,也会捎带一些无关紧要的人去小黑屋约谈,都是掩人耳目;接到约谈通知的人,先衡量一下自己是重点对象还是陪衬,如果是陪衬,按照他们说的写,也就收一个惩治书后,结束;如果是重点对象,就是管怎么样都要辞退,所以,原则就是:你们说你们的,我说我的,不写任何材料,不签任何书面文件,大不了赔钱走人。用语言艺术,气死诊断Team的人。作者:小疯子 时间: 19:19:41C4-1,小黑屋刚出来的。握手,没夸张 作者:3星病狂 时间: 09:36:15我也是一样,同样c4-1,内容绝对真实,毫不夸张,有过之而无不及。希望帖子不要沉。作者:czyu456 时间: 18:13:23我也是被他们关小黑屋审查过的中国员工,我给三星集团的回复如下:正义之剑正迎面而来!公司为何能取得我的签字:为了取得我的签字,工作人员使用欺骗的手段,让我先按照他的意思写一个交代签字,表明态度端正积极配合“三星集团”调查工作,好向领导交待,然后再在另外一张纸上再写说明与解释,但是,按照他的意思写好了问题的签字,他不让我再写第二张说明与解释了,我真没想到是如此的卑鄙阴暗与不择手段。好在我有全程的录音,不然百口莫辨。是他说一句我写一句的,完全是他的意思(有录音为证)。骗取到我的签字就可以既成事实了吗?就可以让我背黑锅了吗?就可以肆无忌惮了吗?真是太天真了!公司的动机是什么?为何谈话期间一直建议我自动离职?动机何在?为何设下陷阱骗取签字?拿到我的签字就能既成事实了吗?有口难辨颠倒黑白了吗?就可以非法解除了吗?如果想使用这种手段达到目的我可以明确答复:做梦!我将维权到底!为何关小黑屋审查的都是中国员工?公司大部分部门的领导都是韩国人,中国人做部门领导的比例很小,为何审查的都是中国员工?韩国员工就不会犯错误吗?就比中国员工值得信赖吗?这不是种族歧视是什么?在中国的市场上赚钱,连一个工作机会也不给中国人?这就是你们所说的做贡献于中国社会的企业?我将维权进行到底!1.我要让丑陋阴暗的行为曝光于阳光之下。2.我将通过微信公众平台,微博,媒体专访把我真实的遭遇和整个事件的过程公布于众(包括录音对话),让全行业全社会知道。不要把别人的善良和忍让当作软弱与妥协,不要把法律当作实现自己目的的工具。达摩克利斯之剑高悬于每个人的头顶,天道昭然,正义永存,正义的阳光正在行进的路上!不久的将来就会照亮每个阴暗的角落。作者:czyu456 时间: 19:44:48使用如此卑鄙的手段骗取员工的签字目的就是抓住员工的把柄进一步逼迫员工自动离职,达到裁员又不赔偿的目的。当员工没有按照他们的意图自动离职,他们就会使用最后一招,按违反公司规定的罪名和员工单方面解除合同,又不赔偿违约金。我已收到解除合同通知书。真实无耻之极。我有大量的证据和录音证明他们的非法裁员的事实。被审查的员工联合起来一起提起诉讼!我已经签约律师帮我诉讼。如有新闻媒体采访我可以实名接受采访,提供证据,欢迎微信公众号平台转发! 作者:3星病狂 时间: 21:20:34据最新消息,今天下午又有一同事因为“诊断”心脏发病而被送进医院。这种诊断已经成了事实上的私设公堂及严刑逼供了。请大家警醒吧,不要再去配合什么诊断了。这种诊断明显就是对个人的攻击、诋毁、诽谤。请让更多的人知道事实真相,三星搞的所谓正道经营就是一个笑话。三星如果还一直如此执迷不悟,那么离死也不远矣!作者:摸肚大魔王 时间: 21:25:28各位三星的CEO行贿被抓了,怎么说呢,内审早点发现就不至于发生这样的悲剧。现在好了,被抓了吧……鹏泰的内审部门工作严重失职拒绝三星,从我做起!!!!中国人转起来,让这家侮辱,欺骗,坑害国人的韩国公司彻底从中国消失!![版权声明] 图文来源网络,版权属于原作者。[侵权处理] 图文无从溯源,如涉版权问题,24小时内删除。请长按二维码进入商城 公众号:germanymall奢侈品代购请添加微信:reiyeideas其他经典文章,点击蓝色标题进入阅读:德国的教育静悄悄(值得深思)去德国必买的家庭药品清单----婴儿/幼童篇教育好自己的孩子,才是你最重要的事业!更多德国好产品,请点击‘阅读原文’进入商城相关文章猜你喜欢食之色舞北京乐吧户外蜂蜜故事华泰期货美康整形美容医院#统计代码&p&就算孩子被炸成这样,我也不敢找三星维权了。。。&/p&&p&三星公司坐拥军火库,坚持奉行“欺软怕硬,死皮赖脸”的企业精神,做中国知名度最高的品牌。&/p&&p&三星是一个牛逼的企业。三星手机不仅仅是通讯工具,还是暖手宝、烫手砖,一路改良成小型二踢脚,现在已经进化成小规模杀伤性武器。&/p&&br&&p&说起三星手机爆炸,似乎已经离我们很远了。然而事实上,三星手机炸伤人的事件直到今天也从未停止过。&/p&&p&就在今年3月份,普定县一个普通家庭,三星Note4手机在充电时爆炸自燃,造成一个小女孩脸部手部的严重烧伤。&/p&&img src=&/v2-151cb15e4cbb21aa4f7518_b.jpg& data-rawwidth=&600& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-151cb15e4cbb21aa4f7518_r.jpg&&&br&&p&三星像之前对待中国消费者一样,再一次在此事上百般抵赖,而当一位有正义感的网友 &a class=&member_mention& href=&///people/77cb748b2f61a311a765f4fc86a63b0a& data-hash=&77cb748b2f61a311a765f4fc86a63b0a& data-hovercard=&p$b$77cb748b2f61a311a765f4fc86a63b0a&&@不老的老回&/a& 站出来替受害者向三星维权时,不但没有得到应有的赔偿,甚至还因此事被殴打成重伤。
整个事情的经过,被他用直播的形式记录了下来:&/p&&img src=&/v2-0eafedc3b40f0_b.jpg& data-rawwidth=&600& data-rawheight=&1067& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-0eafedc3b40f0_r.jpg&&&br&&p&这个热心的网友,和你我一样,只是个普普通通的网民,他的ID叫做“ &a class=&member_mention& href=&///people/77cb748b2f61a311a765f4fc86a63b0a& data-hash=&77cb748b2f61a311a765f4fc86a63b0a& data-hovercard=&p$b$77cb748b2f61a311a765f4fc86a63b0a&&@不老的老回&/a& ”&/p&&img src=&/v2-d3a45eccf46c82a9d6a8b1_b.jpg& data-rawwidth=&393& data-rawheight=&378& class=&content_image& width=&393&&&br&&br&&p&事情要从老回自己的三星手机爆炸说起
去年,全球范围内三星Note7纷纷出现爆炸事故,就在此时,老回也买了一个Note7,回来使用不到13个小时,手机第一次充电就自燃爆炸了,还连带着烫坏了他的电脑。。。。。。&/p&&img src=&/v2-5c43b0e4e6bf1ed609ac2d06ebb35529_b.jpg& data-rawwidth=&600& data-rawheight=&397& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-5c43b0e4e6bf1ed609ac2d06ebb35529_r.jpg&&&br&&p&于是大家向三星报告,要求三星给一个说法,过了两天三星就给了这样一个“说法”,说国行的Note7电池供应商不同,电池是安全的可以放心用。&/p&&img src=&/v2-aa951a944a63fff91b6215f_b.jpg& data-rawwidth=&599& data-rawheight=&611& class=&origin_image zh-lightbox-thumb& width=&599& data-original=&/v2-aa951a944a63fff91b6215f_r.jpg&&&br&&p&然而在同一时间,三星却主动召回了美国的Note7,承认了自己的错误并给美国消费者退了款????
这是在干什么?自己打自己脸?摆明了欺负中国消费者?你确定你不是在逗我?
但是事情还没有结束,随着中国越来越多的三星手机爆炸,老回联合了越来越多的消费者向三星维权。可是,问题反馈到三星,三星依然没打算承认错误,反而又发表了一份声明声称“手机是外部加热所致”。&/p&&img src=&/v2-265bd21d149c67dfdf2de8_b.jpg& data-rawwidth=&550& data-rawheight=&637& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&/v2-265bd21d149c67dfdf2de8_r.jpg&&&p&还通过韩国媒体说,中国消费者用微波炉加热手机以骗取赔偿,还要对这两位消费者提起刑事诉讼&/p&&img src=&/v2-312decf94c1a5ec84a9dbf9e696b5eff_b.png& data-rawwidth=&640& data-rawheight=&458& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-312decf94c1a5ec84a9dbf9e696b5eff_r.png&&&p&????非但不承认错误,还说消费者诈骗?
面对三星的态度,老回打算用证据狠狠打三星的脸。他把手机带到泰尔实验室,进行了严格的检验,检验报告显示手机爆炸不是外部加热导致的,是电池自燃导致的&/p&&img src=&/v2-ebb7fbe928f28_b.jpg& data-rawwidth=&600& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-ebb7fbe928f28_r.jpg&&&br&&p&老回心想,这下有了报告,铁证如山,总没法儿抵赖了吧?既然是手机充电自燃,那你们就老老实实给中国消费者道歉!
于是,老回按照正常的流程,把证据上报给了中国质监总局,并拿着检验报告到了三星总部,要求三星给予赔偿。
结果,老回到达三星总部之后,两位三星的售后经理会见了老回,他们表示已经记下了问题,会尽快向上面报告,承诺48小时内给予答复。
两天后三星给老回打了个电话,根本没有赔偿道歉的意思,只是表示还需要研究讨论,打来电话是因为承诺会在48小时内回复。
挂了电话,老回第二天,又拿着报告去了三星中国总部。&/p&&img src=&/v2-1bc90be89e977fc32ad3f398865cde34_b.jpg& data-rawwidth=&600& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-1bc90be89e977fc32ad3f398865cde34_r.jpg&&&br&&p&见到了三星的法务部,对方又热情的招待了他,然而给他的答复还是:&/p&&p&“已经记录上报,48小时回复”
&/p&&p&就这么,老回来来回回跑了好几趟,前前后后打了50多个电话,耗了一个多月的时间,甚至被干晾在办公室一天一夜不予理睬,还曾被三星的员工扣上“非法入侵”的帽子,被强行拉离现场。&/p&&img src=&/v2-941b52cffd062d89ba3ff_b.jpg& data-rawwidth=&640& data-rawheight=&483& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-941b52cffd062d89ba3ff_r.jpg&&&br&&p&但自始至终,手机的问题都没有得到实质性的解决
老回这才明白,三星是打定了主意就把事情就这么拖下去,三星打一开始就没把中国消费者当回事
消费者也有自己的工作,谁能天天跟他耗下去?谁有空天天去三星要求索赔?等你忙起来了,手机爆炸的事情不就抛到脑后去了?
&/p&&img src=&/v2-b540a7f1a956526efd8d6c3c24c65a7f_b.jpg& data-rawwidth=&198& data-rawheight=&177& class=&content_image& width=&198&&&br&&p&这样无赖的手段,一般的人碰上了顶多也就是抱怨几句,也没那个精力真去告商家,给不给退换,能不能得到赔偿,全看商家的良心。&/p&&p&可是老回不愿意妥协,他觉得商家卖的东西出问题了,退换赔偿道歉天经地义,怎么到了三星这里、到了中国消费者这里,事情就变得这么麻烦了?&/p&&blockquote&“为什么中国的消费者维权那么难?这不公平”&/blockquote&&p&老回下定决心,要和三星较这个真,他要替所有中国人维这个权!&/p&&p&于是,他联系到了包括央视在内的多家媒体,把三星彻底曝光出来。可是老回没想到的是,三星的能量大到超乎他想象,在他和消费者一起联系媒体的时候,三星也在斥巨资搞公关。&/p&&p&他在珠江电视台录制的节目《老回大战炸弹星》,播到一半时节目直接被掐掉,一片黑屏。&/p&&p&说好报道刊发的媒体,最后突然纷纷撤下了稿子,甚至原本陪同他一起的央视,也在最后因为“不可抗力”离老回而去,和老回类似的消费者在三星强大的能量面前,也只能无奈选择,接受换机之后隐瞒消息的条约息事宁人。&/p&&img src=&/v2-e25d059fa88835cba79b1bc6ccb12e8e_b.jpg& data-rawwidth=&449& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&449& data-original=&/v2-e25d059fa88835cba79b1bc6ccb12e8e_r.jpg&&&br&&p&按理说,到了这一步所有人都离开了,不想放弃也只能放弃了吧?&/p&&p&可是老回没有!面对着四面楚歌,老回依然要奋战到底!&/p&&p&日凌晨四点,贵州安顺普定县冯先生的女儿在三星Note4充电时,因为Note4突然爆炸脸部和手部严重烧伤。&/p&&img src=&/v2-f61c24ffe34de664bbff9c2_b.jpg& data-rawwidth=&600& data-rawheight=&324& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-f61c24ffe34de664bbff9c2_r.jpg&&&br&&p&即使是治疗完毕后,也在小姑娘的手上和脸上留下了永远的疤痕。&/p&&img src=&/v2-21a33e91debc1425ed3a_b.jpg& data-rawwidth=&640& data-rawheight=&853& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-21a33e91debc1425ed3a_r.jpg&&&br&&p&出了事情以后,冯先生一家不知道如何维权,也只有几家小媒体报道此事。&/p&&p&但是老回在得知这个消息后第一时间赶到了普定县,他想要帮冯先生维权,他不想让冯先生也感受到和自己一样的孤独。&/p&&br&&p&老回找到了当地工商部门,工商表示根据证据来看,手机的确是三星生产的正品。&/p&&p&但是面对事实,三星又一次开始了推诿、抵赖、狡辩,在老回给三星总部打电话之后,三星的工作人员才派了两个人来到当地现场,他们到达后的第一件事情不是去了解小女孩的伤情,也不是收集事故残骸检测,而是说“不许录像,拿出去。”&/p&&p&他们自始至终,都在不屑地咧着嘴冷笑,他们自始至终脸上都写满了傲慢。&/p&&img src=&/v2-a6bc01d91db22a_b.jpg& data-rawwidth=&600& data-rawheight=&441& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-a6bc01d91db22a_r.jpg&&&br&&p&在老回的争取下,三星将手机残骸拿回去检测后,给老回出具了一份所谓《贵州Note4电池燃损事故说明》,称发生燃爆的电池并非三星生产。&/p&&p&结果老回一眼就发现,三星公司在鉴定报告中说手机电池是2016年生产的,而爆炸的手机是Note4,生产日期明明白白地写着是2014年,又一次当场打了三星的脸。&/p&&img src=&/v2-f757a79820eea47bd12b9_b.jpg& data-rawwidth=&450& data-rawheight=&270& class=&origin_image zh-lightbox-thumb& width=&450& data-original=&/v2-f757a79820eea47bd12b9_r.jpg&&&br&&p&被拆穿之后,三星依然没有道歉,继续腆着脸和老回耗着。&/p&&p&三星的种种举动,又让老回想起了给自己的手机维权的时候,老回只能寻求法律途径解决问题,次日,老回就开着直播来到了当地的信访局,想要了解一下信访局是否能给冯先生提供法律援助。&/p&&p&谁知道,到了信访局以后,老回和信访局的人才说了几句话,对方就粗暴地打断了老回,当地信访局局长唐玲还一声令下:&/p&&p&“弟兄们!只要有人在这拿摄像机摄像的,给老子抢了砸!”&/p&&img src=&/v2-21ede08cc2513b8edbecab0_b.jpg& data-rawwidth=&640& data-rawheight=&360& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-21ede08cc2513b8edbecab0_r.jpg&&&br&&p&对方就一拥而上殴打老回一行人还抢夺打砸拍摄设备。把老回打成了这个样子:&/p&&img src=&/v2-3d4f021d09a85e2da233_b.jpg& data-rawwidth=&640& data-rawheight=&853& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-3d4f021d09a85e2da233_r.jpg&&&br&&p&老回去医院检查后,发现自己的尿液中检测出了红细胞,符合肾挫伤的症状。&/p&&img src=&/v2-220bfca77aa7e6fe986ef84e_b.jpg& data-rawwidth=&640& data-rawheight=&851& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-220bfca77aa7e6fe986ef84e_r.jpg&&&br&&p&闹到最后,老回非但没有从三星手里讨到任何说法,还要自己掏钱治自己受的伤,还要自己掏钱垫付同行女生的损失。&/p&&p&事情发生后,老回在新浪微博上发布了一篇关于此事的博文,却因此被频频施压,甚至连热心的知乎网友帮助投诉该信访局的信,也被无端删除。
&/p&&img src=&/v2-b8af8c554fee_b.jpg& data-rawwidth=&600& data-rawheight=&315& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-b8af8c554fee_r.jpg&&&br&&img src=&/v2-2c2177cc03fccd6e5112ab_b.jpg& data-rawwidth=&600& data-rawheight=&311& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-2c2177cc03fccd6e5112ab_r.jpg&&&br&&img src=&/v2-f03cdb7f0e68d9e_b.jpg& data-rawwidth=&640& data-rawheight=&1138& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-f03cdb7f0e68d9e_r.jpg&&&p&图:知乎网友“张彪雕”的投诉记录
&/p&&p&老回又一次四面楚歌,但面对全方位的封杀,老回依然坚持了下来要帮冯先生一家讨一个说法。
终于,老回的坚持得到了一点点的回报,中国青年报和共青团中央微博官方账号,陆续报道了这一事件。&/p&&img src=&/v2-8ff5b08bd5177_b.jpg& data-rawwidth=&600& data-rawheight=&422& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-8ff5b08bd5177_r.jpg&&&br&&img src=&/v2-15bec138aaa69d09ff0f_b.jpg& data-rawwidth=&526& data-rawheight=&424& class=&origin_image zh-lightbox-thumb& width=&526& data-original=&/v2-15bec138aaa69d09ff0f_r.jpg&&&br&&p&6月28日,中国青年报也将此事刊登出来。&/p&&img src=&/v2-7cbbe3c224aeaf58fa8a_b.jpg& data-rawwidth=&417& data-rawheight=&586& class=&content_image& width=&417&&&br&&p&事情闹大了之后,当地的领导也找到了他们,并表示冯先生的事情一定会帮忙到底,一定会帮助请法律援助。&/p&&p&费了千辛万苦,忍受了诸多戏弄、侮辱和委屈,终于得到了这么一点虚无缥缈的进展,老回开心地说:&/p&&p&“这打挨得值”&/p&&img src=&/v2-fbbf84bf1d4e_b.png& data-rawwidth=&640& data-rawheight=&275& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-fbbf84bf1d4e_r.png&&&p&看见这短短的五个字,不知为何,我心里却觉得非常酸涩,为什么本该简简单单的消费者维权事件,在三星的面前,就变得如此困难?为什么本该天经地义的道歉赔偿的流程?在中国人这里,就要付出血的代价?为什么中国消费者要闹得头破血流,才能得到自己应有的权利?为什么三星这样一个烂到骨子的韩国企业,在中国的能量能大到这个地步?!&/p&&p&虽然老回一直很谦虚,他说自己从来都不是一个人,他说全是有大家的关注和支持才支撑他一直走到现在。&/p&&p&但是在我心里,老回做到了绝大多数人没有做到的事情,他知道,中国的消费者沉默得太久了;他知道,傲慢的商家们不把中国人放在眼里太久了;他更知道,如果今天他不较真、不替大家站出来
明天你、我还有我们的下一代,就要成为沉默的受害者!&/p&&p&所以,即使面对着重重阻力,面对着百般折辱,他也依然挺直了腰板坚定不移地走下去。
&/p&&p&虽千万人吾往矣。
&/p&&br&&p&
注:我们试着将老回去信访局的视频,上传到腾讯视频,但是审核没有通过,想要看视频的亲们可以输入下面的网址:&a href=&///?target=http%3A///l/zrvtUJp7vbK6TVu3.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/l/zrvtU&/span&&span class=&invisible&&Jp7vbK6TVu3.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&或在“一直播”搜索“不老的老回”观看直播视频回放,老回去三星维权的视频可以在B站搜索“老回大战炸弹星”。&/p&&br&&br&&br&&p&------------------&/p&&p&参考资料:&/p&&blockquote&网友“不老的老回”新浪微博文章《为什么中国消费者维权这么难》&br&网友“不老的老回”一直播直播录像&br&珠江电视台节目《老回大战炸弹星》&br&知乎网友张彪雕在问题“如何看待老回为三星 Note 4 炸伤女童维权时被贵州安顺普定信访局局长号召的十数名工作人员殴打?”下的回答&/blockquote&
就算孩子被炸成这样,我也不敢找三星维权了。。。三星公司坐拥军火库,坚持奉行“欺软怕硬,死皮赖脸”的企业精神,做中国知名度最高的品牌。三星是一个牛逼的企业。三星手机不仅仅是通讯工具,还是暖手宝、烫手砖,一路改良成小型二踢脚,现在已经进化成小…
&p&我来推荐两个工具,如下&/p&&br&&br&&p&&b&油猴脚本&/b&&/p&&img src=&/v2-c5ebab5dee82b0c_b.png& data-rawwidth=&1957& data-rawheight=&1233& class=&origin_image zh-lightbox-thumb& width=&1957& data-original=&/v2-c5ebab5dee82b0c_r.png&&&p&我来推荐一个叫:油猴脚本&/p&&p&它是一个浏览器插件,不仅仅只支持Chrome,什么Firefox,垃圾Safari,Opera 都支持的。&/p&&p&使用方法,大家要去谷歌搜索啦,就在这里不多说了。&/p&&br&&p&&b&Stylish&/b&&/p&&img src=&/v2-ec2daec40d096be33cd84_b.png& data-rawwidth=&1318& data-rawheight=&833& class=&origin_image zh-lightbox-thumb& width=&1318& data-original=&/v2-ec2daec40d096be33cd84_r.png&&&p&还有一个工具&b&Stylish&/b&,也是一个Chrome 插件,可以更换浏览器的字体和样式,很方便,比如设置夜间模式,使用思源黑体看知乎都忍不住多看几眼啦,大家去官网搜索很多主题吧。&/p&&br&&p&好吧,这篇文章,是我修改三次才被从小黑屋里放出来了。所以一些内容删除了,所以现在留下来的东西和刚开始的几乎不一样了。&/p&&p&所以想看完整的内容看下图吧。在我的公众号:高效率工具搜罗,回复:脚本 获取吧。&/p&&img src=&/v2-6df1a33b120aa2b89cc0b235ebf21f28_b.png& data-rawwidth=&720& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/v2-6df1a33b120aa2b89cc0b235ebf21f28_r.png&&&br&&br&&p&最后还是恳请大家能够点个赞,点个赞,点个赞,重要的事情说三遍(~ o ~)~zZ&/p&&p&就酱紫&/p&
我来推荐两个工具,如下 油猴脚本我来推荐一个叫:油猴脚本它是一个浏览器插件,不仅仅只支持Chrome,什么Firefox,垃圾Safari,Opera 都支持的。使用方法,大家要去谷歌搜索啦,就在这里不多说了。 Stylish还有一个工具Stylish,也是一个Chrome 插件,可以…
可以,完全可以。&br&技术选型是这样:&br&vue+vue-strap+babel(es6)+webpack+vue-router&br&&br&相关文档:&br&&a href=&///?target=http%3A//cn.vuejs.org/guide/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&起步 - vue.js&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//router.vuejs.org/zh-cn/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&介紹 | vue-router文档 npm package&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A///yuche/vue-strap& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&yuche/vue-strap · GitHub&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//webpack.github.io& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&webpack module bundler&i class=&icon-external&&&/i&&/a&&br&&br&我写了个种子文件,题主可以参考(把seed打成feed了请无视)&br&&a href=&///?target=https%3A///leinue/vue-feeds& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&leinue/vue-feeds · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&运行使用:&br&&div class=&highlight&&&pre&&code class=&language-powershell&&&span class=&n&&npm&/span& &span class=&n&&run&/span& &span class=&n&&dev&/span&
&/code&&/pre&&/div&或:&br&&div class=&highlight&&&pre&&code class=&language-text&&webpack
&/code&&/pre&&/div&或:&br&&div class=&highlight&&&pre&&code class=&language-powershell&&&span class=&n&&webpack&/span& &span class=&p&&-&/span&&span class=&n&&-watch&/span&
&/code&&/pre&&/div&&br&完整的package.json文件是这样:&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&{
&name&: &poimoe_poi&,
&version&: &0.0.1&,
&description&: &&,
&main&: &index.js&,
&scripts&: {
&dev&: &webpack-dev-server --inline --hot --quiet&,
&build&: &export NODE_ENV=production && webpack --progress --hide-modules&
&private&: true,
&author&: &&,
&license&: &ISC&,
&devDependencies&: {
&babel-core&: &^6.2.1&,
&babel-loader&: &^6.2.0&,
&babel-plugin-transform-runtime&: &^6.1.18&,
&babel-preset-es2015&: &^6.1.18&,
&babel-preset-stage-0&: &^6.3.13&,
&babel-runtime&: &^6.2.0&,
&bootstrap&: &^3.3.6&,
&css-loader&: &^0.23.0&,
&file-loader&: &^0.8.5&,
&jsx-loader&: &^0.13.2&,
&style-loader&: &^0.13.0&,
&url-loader&: &^0.5.7&,
&vue&: &^1.0.10&,
&vue-hot-reload-api&: &^1.2.2&,
&vue-html-loader&: &^1.0.0&,
&vue-loader&: &^7.1.7&,
&vue-router&: &^0.7.7&,
&vue-strap&: &^1.0.2&,
&webpack&: &^1.12.9&,
&webpack-dev-server&: &^1.14.0&
&/code&&/pre&&/div&&br&webpack.config.js文件:&br&&br&&div class=&highlight&&&pre&&code class=&language-js&&&span class=&nx&&module&/span&&span class=&p&&.&/span&&span class=&nx&&exports&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&
&span class=&nx&&entry&/span&&span class=&o&&:&/span& &span class=&s1&&'./src/index.js'&/span&&span class=&p&&,&/span&
&span class=&nx&&output&/span&&span class=&o&&:&/span& &span class=&p&&{&/span&
&span class=&nx&&path&/span&&span class=&o&&:&/span& &span class=&nx&&__dirname&/span&&span class=&p&&,&/span&
&span class=&nx&&filename&/span&&span class=&o&&:&/span& &span class=&s1&&'./dist/build.js'&/span&
&span class=&p&&},&/span&
&span class=&nx&&module&/span&&span class=&o&&:&/span& &span class=&p&&{&/span&
&span class=&nx&&loaders&/span&&span class=&o&&:&/span& &span class=&p&&[&/span&
&span class=&p&&{&/span& &span class=&nx&&test&/span&&span class=&o&&:&/span& &span class=&sr&&/\.vue$/&/span&&span class=&p&&,&/span& &span class=&nx&&loader&/span&&span class=&o&&:&/span& &span class=&s1&&'vue'&/span& &span class=&p&&},&/span&
&span class=&p&&{&/span& &span class=&nx&&test&/span&&span class=&o&&:&/span& &span class=&sr&&/\.css$/&/span&&span class=&p&&,&/span& &span class=&nx&&loader&/span&&span class=&o&&:&/span& &span class=&s2&&&style!css&&/span& &span class=&p&&},&/span&
&span class=&p&&{&/span& &span class=&nx&&test&/span&&span class=&o&&:&/span& &span class=&sr&&/\.(png|jpg)$/&/span&&span class=&p&&,&/span& &span class=&nx&&loader&/span&&span class=&o&&:&/span& &span class=&s1&&'url-loader?limit=8192'&/span& &span class=&p&&},&/span&
&span class=&p&&{&/span& &span class=&nx&&test&/span&&span class=&o&&:&/span& &span class=&sr&&/\.js$/&/span&&span class=&p&&,&/span& &span class=&nx&&loader&/span&&span class=&o&&:&/span& &span class=&s1&&'jsx-loader?harmony'&/span& &span class=&p&&},&/span&
&span class=&p&&{&/span& &span class=&nx&&test&/span&&span class=&o&&:&/span& &span class=&sr&&/\.woff(\?v=\d+\.\d+\.\d+)?$/&/span&&span class=&p&&,&/span& &span class=&nx&&loader&/span&&span class=&o&&:&/span& &span class=&s2&&&url?limit=10000&mimetype=application/font-woff&&/span& &span class=&p&&},&/span&
&span class=&p&&{&/span& &span class=&nx&&test&/span&&span class=&o&&:&/span& &span class=&sr&&/\.woff2(\?v=\d+\.\d+\.\d+)?$/&/span&&span class=&p&&,&/span& &span class=&nx&&loader&/span&&span class=&o&&:&/span& &span class=&s2&&&url?limit=10000&mimetype=application/font-woff2&&/span& &span class=&p&&},&/span&
&span class=&p&&{&/span& &span class=&nx&&test&/span&&span class=&o&&:&/span& &span class=&sr&&/\.ttf(\?v=\d+\.\d+\.\d+)?$/&/span&&span class=&p&&,&/span& &span class=&nx&&loader&/span&&span class=&o&&:&/span& &span class=&s2&&&url?limit=10000&mimetype=application/octet-stream&&/span& &span class=&p&&},&/span&
&span class=&p&&{&/span& &span class=&nx&&test&/span&&span class=&o&&:&/span& &span class=&sr&&/\.eot(\?v=\d+\.\d+\.\d+)?$/&/span&&span class=&p&&,&/span& &span class=&nx&&loader&/span&&span class=&o&&:&/span& &span class=&s2&&&file&&/span& &span class=&p&&},&/span&
&span class=&p&&{&/span& &span class=&nx&&test&/span&&span class=&o&&:&/span& &span class=&sr&&/\.svg(\?v=\d+\.\d+\.\d+)?$/&/span&&span class=&p&&,&/span& &span class=&nx&&loader&/span&&span class=&o&&:&/span& &span class=&s2&&&url?limit=10000&mimetype=image/svg+xml&&/span& &span class=&p&&}&/span&
&span class=&p&&]&/span&
&span class=&p&&},&/span&
&span class=&nx&&babel&/span&&span class=&o&&:&/span& &span class=&p&&{&/span&
&span class=&nx&&presets&/span&&span class=&o&&:&/span& &span class=&p&&[&/span&&span class=&s1&&'es2015'&/span&&span class=&p&&,&/span& &span class=&s1&&'stage-0'&/span&&span class=&p&&],&/span&
&span class=&nx&&plugins&/span&&span class=&o&&:&/span& &span class=&p&&[&/span&&span class=&s1&&'transform-runtime'&/span&&span class=&p&&]&/span&
&span class=&p&&},&/span&
&span class=&nx&&resolve&/span&&span class=&o&&:&/span& &span class=&p&&{&/span&
&span class=&c1&&//自动扩展文件后缀名,意味着我们require模块可以省略不写后缀名&/span&
&span class=&nx&&extensions&/span&&span class=&o&&:&/span& &span class=&p&&[&/span&&span class=&s1&&''&/span&&span class=&p&&,&/span& &span class=&s1&&'.js'&/span&&span class=&p&&,&/span& &span class=&s1&&'.json'&/span&&span class=&p&&,&/span& &span class=&s1&&'.css'&/span&&span class=&p&&],&/span&
&span class=&c1&&//模块别名定义,方便后续直接引用别名,无须多写长长的地址&/span&
&span class=&nx&&alias&/span&&span class=&o&&:&/span& &span class=&p&&{&/span&
&span class=&s1&&'vue-strap'&/span&&span class=&o&&:&/span& &span class=&s1&&'./node_modules/vue-strap/dist/vue-strap.min.js'&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&nx&&process&/span&&span class=&p&&.&/span&&span class=&nx&&env&/span&&span class=&p&&.&/span&&span class=&nx&&NODE_ENV&/span& &span class=&o&&===&/span& &span class=&s1&&'production'&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&nx&&module&/span&&span class=&p&&.&/span&&span class=&nx&&exports&/span&&span class=&p&&.&/span&&span class=&nx&&plugins&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&
&span class=&k&&new&/span& &span class=&nx&&webpack&/span&&span class=&p&&.&/span&&span class=&nx&&DefinePlugin&/span&&span class=&p&&({&/span&
&span class=&s1&&'process.env'&/span&&span class=&o&&:&/span& &span class=&p&&{&/span&
&span class=&nx&&NODE_ENV&/span&&span class=&o&&:&/span& &span class=&s1&&'&production&'&/span&
&span class=&p&&}&/span&
&span class=&p&&}),&/span&
&span class=&k&&new&/span& &span class=&nx&&webpack&/span&&span class=&p&&.&/span&&span class=&nx&&optimize&/span&&span class=&p&&.&/span&&span class=&nx&&UglifyJsPlugin&/span&&span class=&p&&({&/span&
&span class=&nx&&compress&/span&&span class=&o&&:&/span& &span class=&p&&{&/span&
&span class=&nx&&warnings&/span&&span class=&o&&:&/span& &span class=&kc&&false&/span&
&span class=&p&&}&/span&
&span class=&p&&}),&/span&
&span class=&k&&new&/span& &span class=&nx&&webpack&/span&&span class=&p&&.&/span&&span class=&nx&&optimize&/span&&span class=&p&&.&/span&&span class=&nx&&OccurenceOrderPlugin&/span&&span class=&p&&()&/span&
&span class=&p&&]&/span&
&span class=&p&&}&/span& &span class=&k&&else&/span& &span class=&p&&{&/span&
&span class=&nx&&module&/span&&span class=&p&&.&/span&&span class=&nx&&exports&/span&&span class=&p&&.&/span&&span class=&nx&&devtool&/span& &span class=&o&&=&/span& &span class=&s1&&'#source-map'&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&&br&转场动画:&br&&br&&div class=&highlight&&&pre&&code class=&language-html&&&span class=&nt&&&div&/span& &span class=&na&&class=&/span&&span class=&s&&&page&&/span&&span class=&nt&&&&/span&
&span class=&nt&&&router-view&/span& &span class=&na&&transition=&/span&&span class=&s&&&expand&&/span&&span class=&nt&&&&/router-view&&/span&
&span class=&nt&&&/div&&/span&
&/code&&/pre&&/div&&br&&div class=&highlight&&&pre&&code class=&language-css&&&span class=&nc&&.expand-transition&/span& &span class=&p&&{&/span&
&span class=&n&&transition&/span&&span class=&o&&:&/span& &span class=&n&&all&/span& &span class=&m&&.3s&/span& &span class=&n&&ease&/span&&span class=&p&&;&/span&
&span class=&k&&overflow&/span&&span class=&o&&:&/span& &span class=&k&&hidden&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&nc&&.expand-enter&/span&&span class=&o&&,&/span& &span class=&nc&&.expand-leave&/span& &span class=&p&&{&/span&
&span class=&k&&height&/span&&span class=&o&&:&/span& &span class=&m&&0&/span&&span class=&p&&;&/span&
&span class=&k&&padding&/span&&span class=&o&&:&/span& &span class=&m&&0px&/span& &span class=&m&&10px&/span&&span class=&p&&;&/span&
&span class=&k&&opacity&/span&&span class=&o&&:&/span& &span class=&m&&0&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&根据vue-router官方文档,每个vue文件的template部分必须由单独的div包裹起来,才会启用转场效果,如下:&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&&template&
&div class=&timeline-master&&
&div @click=&pathTo('public')& id=&public-timeline& class=&type-circle&&
&div @click=&pathTo('personal')& id=&personal-timeline& class=&type-circle right&&
&div class=&page&&
&router-view transition=&expand&&&/router-view&
&/template&
&/code&&/pre&&/div&&br&如果去掉timeline-master这个div,那么转场动画就会失效&br&&br&大屏&br&&img src=&/9c8a3ed2efcf3b8d9c148703_b.png& data-rawwidth=&1075& data-rawheight=&724& class=&origin_image zh-lightbox-thumb& width=&1075& data-original=&/9c8a3ed2efcf3b8d9c148703_r.png&&&br&&img src=&/f4a6bb0a7f8addba5e594d_b.png& data-rawwidth=&1051& data-rawheight=&721& class=&origin_image zh-lightbox-thumb& width=&1051& data-original=&/f4a6bb0a7f8addba5e594d_r.png&&&br&ipad&br&&img src=&/b22ae83013d79abe6392_b.png& data-rawwidth=&843& data-rawheight=&719& class=&origin_image zh-lightbox-thumb& width=&843& data-original=&/b22ae83013d79abe6392_r.png&&&br&&img src=&/09d548dce5e7cc_b.png& data-rawwidth=&800& data-rawheight=&723& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/09d548dce5e7cc_r.png&&&br&iphone 6 plus&br&&img src=&/c49af8ca46ece6bc7129_b.png& data-rawwidth=&687& data-rawheight=&744& class=&origin_image zh-lightbox-thumb& width=&687& data-original=&/c49af8ca46ece6bc7129_r.png&&
可以,完全可以。 技术选型是这样: vue+vue-strap+babel(es6)+webpack+vue-router 相关文档:
我写了个种子文件,题主可以参考(把seed打成feed了请无…
&p&我们(凡普信贷)的移动端页面正在使用 vue2.0 重构,在基于 vue-cli 脚手架生成项目模板基础上做了些改动,加入了 vue-router ,vuex 等配套设施,本地 dev server 中加入了接口 mock 功能,还增加一个 build server 来预览 build 结果页面,前后端通过 spa 的方式实现分离,并相应做了分离后的联调,部署方案。在这里俺也对整个过程简单做个介绍吧。&/p&&p&&b&目录结构&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&
├── index.html
├── build
构建脚本目录
├── build-server.js
运行本地构建服务器,可以访问构建后的页面
├── build.js
生产环境构建脚本
├── dev-client.js
开发服务器热重载脚本,主要用来实现开发阶段的页面自动刷新
├── dev-server.js
运行本地开发服务器
├── utils.js
构建相关工具方法
├── webpack.base.conf.js
wabpack基础配置
├── webpack.dev.conf.js
wabpack开发环境配置
└── webpack.prod.conf.js
wabpack生产环境配置
├── config
├── dev.env.js
开发环境变量
├── index.js
项目配置文件
├── prod.env.js
生产环境变量
└── test.env.js
测试环境变量
├── mock
mock数据目录
└── hello.js
├── package.json
npm包配置文件,里面定义了项目的npm脚本,依赖包等信息
├── src
项目源码目录
├── main.js
入口js文件
├── app.vue
├── components
公共组件目录
└── title.vue
├── assets
资源目录,这里的资源会被wabpack构建
└── images
└── logo.png
├── routes
└── index.js
├── store
应用级数据(state)
└── index.js
└── views
├── hello.vue
└── notfound.vue
├── static
纯静态资源,不会被wabpack构建。
└── test
测试文件目录(unit&e2e)
└── unit
├── index.js
├── karma.conf.js
karma配置文件
└── specs
单测case目录
└── Hello.spec.js
&/code&&/pre&&/div&&br&&p&&b&快速开始&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&git clone /hanan198501/vue-spa-template.git
cd vue-spa-template
cnpm install
npm run dev
&/code&&/pre&&/div&&br&&p&&b&命令列表&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&#开启本地开发服务器,监控项目文件的变化,实时构建并自动刷新浏览器,浏览器访问 http://localhost:8081
npm run dev
#使用生产环境配置构建项目,构建好的文件会输出到 &dist& 目录,
npm run build
#运行构建服务器,可以查看构建的页面
npm run build-server
#运行单元测试
npm run unit
&/code&&/pre&&/div&&br&&p&&b&前后端分离&/b&&/p&&p&项目基于 spa 方式实现前后端分离,后端将所有 url 都返回到同一个 jsp 页面(由前端提供),此 jsp 页面也是前端的入口页面。然后路由由前端控制(基于vue-router),根据不同的 url 加载相应数据和组件进行渲染。&/p&&p&&b&接口 mock&/b&&/p&&p&前后端分离后,开发前需要和后端同学定义好接口信息(请求地址,参数,返回信息等),前端通过 mock 的方式,即可开始编码,无需等待后端接口 ready。项目的本地开发服务器是基于
express 搭建的,通过 express 的中间件机制,我们可以很方便的添加接口 mock 功能:&/p&&p&在 build/dev-server.js 中新增接口 mock 处理:&/p&&div class=&highlight&&&pre&&code class=&language-text&&// mock api requests
var mockDir = path.resolve(__dirname, '../mock');
fs.readdirSync(mockDir).forEach(function (file) {
var mock = require(path.resolve(mockDir, file));
app.use(mock.api, mock.response);
&/code&&/pre&&/div&&br&&p&其中,mock 目录下可能有个文件内容如下,描述了一个接口的数据信息:&/p&&div class=&highlight&&&pre&&code class=&language-text&&module.exports = {
// 接口地址
api: '/api/hello',
// 返回数据
response: function (req, res) {
res.send(`
&p&hello vue!&/p&
&/code&&/pre&&/div&&br&&p&&b&组件化&/b&&/p&&p&整个应用通过 vue 组件的方式搭建起来,通过 vue-router 控制相应组件的展现,组件树结构如下:&/p&&div class=&highlight&&&pre&&code class=&language-text&&
根组件(整个应用只有一个)
├──view1.vue
页面级组件,放在 views 目录里面,有子组件时,可以建立子目录
├──component1.vue
功能组件,公用的放在 components 目录,否则放在 views 子目录
├──component2.vue
└──component3.vue
├──view2.vue
├──component1.vue
└──component4.vue
└──view3.vue
├──component5.vue
&/code&&/pre&&/div&&br&&p&&b&单元测试&/b&&/p&&p&可以为每个组件编写单元测试,放在 test/unit/specs 目录下面, 单元测试用例的目录结构建议和测试的文件保持一致(相对于src),每个测试用例文件名以 .spec.js 结尾。
执行 npm run unit 时会遍历所有的 spec.js 文件,产出测试报告在 test/unit/coverage 目录。&/p&&p&&b&前后端联调&/b&&/p&&p&前后端分离后,由于服务端和前端的开发环境处于2台不同的机器上,整个联调过程,入口页面需要引用前端机器的静态资源,又要调用后端机器的异步接口。根据入口页面的位置,我们可以使用不同的联调方案:&/p&&p&1. 入口页面在前端机器:&/p&&p&通过在本地 dev-server 中使用 &a href=&///?target=https%3A///chimurai/http-proxy-middleware& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/chimurai/htt&/span&&span class=&invisible&&p-proxy-middleware&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 中间件把接口请求代理到后端机器,vue-cli 生成的 dev-server 中已经自带了这个功能:&/p&&div class=&highlight&&&pre&&code class=&language-text&&// proxy api requests
Object.keys(proxyTable).forEach(function (context) {
var options = proxyTable[context]
if (typeof options === 'string') {
options = { target: options }
app.use(proxyMiddleware(context, options))
&/code&&/pre&&/div&&p&最好通过启动 dev-server 时传入一个参数来控制是否打开代理功能,这样可以避免开发阶段覆盖掉我们的 mock 配置。&/p&&p&2. 入口页面在后端机器:
后端工程里面的入口 jsp 中引用的 js 文件地址需要指向前端环境中的地址,联调时才能显示最新的修改。主要有2种实现方式:
1) jsp 文件引用一个固定域名(如 debughost)的 js 文件, 后端机器上通过修改此域名的ip指向前端机器,达到引入前端环境 js 的目的。
2) jsp 文件通过获取一个 url 参数(如 debughost)的值,这个值为前端机器的 ip 地址,再动态的插入一个 script 标签引入这个 ip 的前端 js 文件。&/p&&p&举个例子,假设前端机器的 ip 为 172.16.36.90,需要加载前端的js文件地址为:&a href=&///?target=http%3A//172.16.36.90%3A8081/main.js& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&172.16.36.90:8081/main.&/span&&span class=&invisible&&js&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&, 那么后端同学的机器中需要在 host 文件加一条记录:&/p&&div class=&highlight&&&pre&&code class=&language-text&&172.16.36.90 debughost
&/code&&/pre&&/div&&br&&p&而入口 jsp 页面中则通过以下代码开加载前端js: &/p&&div class=&highlight&&&pre&&code class=&language-text&&
var debughost = 'debughost';
location.search.substr(1).split('&').forEach(function (item) {
var arr = item.split('=');
var key = arr[0];
var value = arr[1];
if (key === 'debughost') {
debughost =
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://' + debughost + ':8081/main.js?' + (new Date()).getTime();
document.head.appendChild(script);
&/code&&/pre&&/div&&p&这样,jsp 页面默认会加载 &a href=&///?target=http%3A//debughost%3A8081/main.js& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&debughost:8081/main.js&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&这个文件。
此外,如果不想用 debughost 这个域名的 js 文件,访问 jsp 时候还可以通过 url 带入 debughost 参数来指定前端 ip 。&/p&&p&&b&部署方案
分离后前后端代码会存放在2个单独的 git 仓库中,构建过程也是分开的。后端构建时,需要依赖前端的构建结果。具体流程如下:&/p&&p&1. 拉取前端项目代码
2. 构建前端(构建结果放在dist目录)
3. 拉取后端代码
4. 将前端的构建结果(dist目录里的文件)复制到后端工程中
5. 构建后端&/p&&p&此过程可以借助 jenkins 配置,或者,让运维同学配合修改部署脚本。&/p&&p&最终的项目模板会是这样:&a href=&///?target=https%3A///annnhan/vue-spa-template& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&annnhan/vue-spa-template&i class=&icon-external&&&/i&&/a&&/p&&p&==================&/p&&p&vue交流群:&/p&
我们(凡普信贷)的移动端页面正在使用 vue2.0 重构,在基于 vue-cli 脚手架生成项目模板基础上做了些改动,加入了 vue-router ,vuex 等配套设施,本地 dev server 中加入了接口 mock 功能,还增加一个 build server 来预览 build 结果页面,前后端通过 sp…
--------------------------------------------------------------------------------------------------------------&br&&br&0.0.3版本后,生成代码片段的描述改为英文&br&&br&————————————————————————&br&&br&&br&说说自己写的vscode插件:VueHelper。&a href=&///?target=https%3A///OYsun/vscode-VueHelper& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&OYsun/vscode-VueHelper&i class=&icon-external&&&/i&&/a&&br&(1)可能是目前vscode最好的vue代码提示插件,不仅包括了vue2所有api,还含有vue-router2和vuex2的代码提示&br&(2)每个提示都有详细的中文描述,主要是方便学习,因为在学习的时候忘记某个api的用法,经常要查阅文档,比较浪费时间,所以我将每个代码提示都增加了描述,描述的依据都来源于官方中文文档&br&(3)vue文件代码高亮fork自[vuter](&a href=&///?target=https%3A///octref/vetur& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&octref/vetur&i class=&icon-external&&&/i&&/a&)&br&&img src=&/v2-e29f24a6db_b.jpg& data-rawwidth=&514& data-rawheight=&360& class=&origin_image zh-lightbox-thumb& width=&514& data-original=&/v2-e29f24a6db_r.jpg&&&img src=&/v2-0f0fce529e12be30b1d9_b.jpg& data-rawwidth=&483& data-rawheight=&513& class=&origin_image zh-lightbox-thumb& width=&483& data-original=&/v2-0f0fce529e12be30b1d9_r.jpg&&&img src=&/v2-207fd38f98534acf54742_b.jpg& data-rawwidth=&641& data-rawheight=&553& class=&origin_image zh-lightbox-thumb& width=&641& data-original=&/v2-207fd38f98534acf54742_r.jpg&&&img src=&/v2-997cc669ef6e8444b78dda952eeba01c_b.png& data-rawwidth=&474& data-rawheight=&502& class=&origin_image zh-lightbox-thumb& width=&474& data-original=&/v2-997cc669ef6e8444b78dda952eeba01c_r.png&&&img src=&/v2-fe22b99bc3f07ef4af49b0e3b4d18ef2_b.jpg& data-rawwidth=&474& data-rawheight=&502& class=&origin_image zh-lightbox-thumb& width=&474& data-original=&/v2-fe22b99bc3f07ef4af49b0e3b4d18ef2_r.jpg&&知乎没办法上传gif动图,想了解更多就去我的github项目那里看吧。&br&- 这个插件的代码提示会与官方文档同步(根据文档新增或者删除某个api的时候更新),如果有某个api没有提示可以提issues,另外有什么建议也欢迎提issues&br&- 这个插件主要是方便自己学习vue,所以很多提示是根据自己的代码风格,比如vue组件模板和vue-router,vuex主文件模板。仅供参考&br&- 如果发现生成的提示代码有错误,请提issues,或者pr&br&- 如果你想要自己的编写风格,请fork一份自行修改使用,可以在issues提建议一起讨论,我这提供就算是基础模板吧&br&- 如果该插件对你有帮助,不妨给个star
-------------------------------------------------------------------------------------------------------------- 0.0.3版本后,生成代码片段的描述改为英文 ———————————————————————— 说说自己写的vscode插件:VueHelper。
干过几年的前端,并且会在前端这条不归路上继续走下去。。。&br&从开始的ie6风行天下的时刻加入前端这个行业。眼睁睁看着这个行业的风起云涌,最落寞不过是一个个项目由风光无限转到寂寥到无人问津。&br&ie6-8+ firefox 3的时代,jquery+jquery 插件大行其道。那时候面试的时候问的最多一句,jquery的插件有几种写法,面向对象的插件与普通插件的异同。jquery的源码有没有读过。你有没有读过jquery源码?dom操作,api精简,链,deferred,这些思想沉淀的深刻。&br&&br&到大而全的框架开发,比如dojo,extjs,jquery UI,YUI是的,这些动辄几十兆的开发包,掌握一个框架就可以吃一行饭。至今还记得半夜读extjs的源码时的一声声叹息,原来js,前端代码可以这么写。&br&&br&到后来模块化崛起,问的做多的是,seajs,requirejs,amd,cmd,umd,nginx的combo 的各种差异,而这些也是如数家珍一样。&br&&br&html5,webkit,跨终端,css3,sass,less 崛起,bootstrap风靡中国。&br&&br&nodejs携着npm搅起前后端分离,js服务端开发拉开序幕。&br&&br&小而美,函数式,mirojs集锦,undersocre,q等等...一个个前仆后继的在js中诞生。技术变得日新月异。&br&再后来ES5,ES6,ES7相继出台,一方面弥补js在语法上的不足,一方面又像改革的春风吹向前端这个圈子。&br&angular2,reactjs,native,web components。。。&br&web工程化。gulp,grunt,fis。太多太多了。&br&&br&其实这些年走来,看着这些技术有苦涩也有欣慰。这个行业的发展要比以往刀耕火种,没日没夜的切图,围着设计稿打转,写完html,css,写jquery 动效,至少加了新鲜的热辣的元素。&br&&br&我也曾迷茫过,也曾彷徨过,也曾想着换个坑,换个职业,换个人生,看不一样的风景,听不一样的故事。但最后还是留下来了。&br&做技术就是做人做事。迷茫的时候不如去看看这些人是怎么想到这些技术,怎么做出这些成就。看看源码,看看设计。也就明白了很多道理。&br&angularjs 做个内部管理系统,是足够的,也是健全的。比extjs好些。你用了,你就知道了,你不用,永远在门里面看门外的风景,其实也就只有一个门框的视野。机会只给勇于弄脏自己双手的年轻人。&br&&br&祝永远年轻,永远热泪盈眶。
干过几年的前端,并且会在前端这条不归路上继续走下去。。。 从开始的ie6风行天下的时刻加入前端这个行业。眼睁睁看着这个行业的风起云涌,最落寞不过是一个个项目由风光无限转到寂寥到无人问津。 ie6-8+ firefox 3的时代,jquery+jquery 插件大行其道。那…
没人邀请,看到这个问题不错,路过怒答。(多图预警)&br&&br&前百度工程师,曾负责百度 &a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端集成解决方案&i class=&icon-external&&&/i&&/a& 的核心设计与开发工作。我现在称这个领域为【前端工程】。没错,这是我最爱唠叨的问题域。&br&&br&这是一个非常有趣的 &u&&b&非主流前端领域&/b&&/u&,这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中。&br&&br&在我的印象中,facebook是这个领域的鼻祖,有兴趣、有梯子的同学可以去看看facebook的页面源代码,体会一下什么叫工程化。&br&&br&接下来,我想从原理展开讲述,多图,较长,希望能有耐心看完。&br&&br&&br&---------------------------- 我是一条分割线 ----------------------------&br&&br&&img src=&/07c2bdef6ccef3ada425d61e3062dd09_b.jpg& data-rawwidth=&389& data-rawheight=&238& class=&content_image& width=&389&&&br&&br&让我们返璞归真,从原始的前端开发讲起。上图是一个“可爱”的index.html页面和它的样式文件a.css,用文本编辑器写代码,无需编译,本地预览,确认OK,丢到服务器,等待用户访问。前端就是这么简单,好好玩啊,门槛好低啊,分分钟学会有木有!&br&&br&&img src=&/d53b504bbc9f1887eddf06d_b.jpg& data-rawwidth=&400& data-rawheight=&98& class=&content_image& width=&400&&&br&&br&然后我们访问页面,看到效果,再查看一下网络请求,200!不错,太(TM)完美了!那么,研发完成。。。。了么?&br&&br&等等,这还没完呢!对于大公司来说,那些变态的访问量和性能指标,将会让前端一点也不“好玩”。&br&&br&看看那个a.css的请求吧,如果每次用户访问页面都要加载,是不是很影响性能,很浪费带宽啊,我们希望最好这样:&br&&br&&img src=&/6a8ca252211cec85a31ac4_b.jpg& data-rawwidth=&401& data-rawheight=&98& class=&content_image& width=&401&&&br&利用304,让浏览器使用本地缓存。但,这样也就够了吗?不成!304叫协商缓存,这玩意还是要和服务器通信一次,我们的优化级别是变态级,所以必须彻底灭掉这个请求,变成这样:&br&&br&&img src=&/fd74ab2bf02d79dd7aff180e_b.jpg& data-rawwidth=&400& data-rawheight=&98& class=&content_image& width=&400&&&br&强制浏览器使用本地缓存(cache-control/expires),不要和服务器通信。好了,请求方面的优化已经达到变态级别,那问题来了:你都不让浏览器发资源请求了,这缓存咋更新?&br&&br&很好,相信有人想到了办法:&b&&u&通过更新页面中引用的资源路径,让浏览器主动放弃缓存,加载新资源&/u&&/b&。好像这样:&br&&br&&img src=&/8ad1ade55f5_b.jpg& data-rawwidth=&304& data-rawheight=&110& class=&content_image& width=&304&&&br&下次上线,把链接地址改成新的版本,就更新资源了不是。OK,问题解决了么?!当然没有!大公司的变态又来了,思考这种情况:&br&&br&&img src=&/7dc885bf_b.jpg& data-rawwidth=&579& data-rawheight=&310& class=&origin_image zh-lightbox-thumb& width=&579& data-original=&/7dc885bf_r.jpg&&&br&页面引用了3个css,而某次上线只改了其中的a.css,如果所有链接都更新版本,就会导致b.css,c.css的缓存也失效,那岂不是又有浪费了?!&br&&br&重新开启变态模式,我们不难发现,要解决这种问题,必须让url的修改与文件内容关联,也就是说,只有文件内容变化,才会导致相应url的变更,从而实现文件级别的精确缓存控制。&br&&br&什么东西与文件内容相关呢?我们会很自然的联想到利用 &a href=&///?target=http%3A///view/.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&数据摘要要算法&i class=&icon-external&&&/i&&/a& 对文件求摘要信息,摘要信息与文件内容一一对应,就有了一种可以精确到单个文件粒度的缓存控制依据了。好了,我们把url改成带摘要信息的:&br&&br&&img src=&/dbc1d_b.jpg& data-rawwidth=&588& data-rawheight=&310& class=&origin_image zh-lightbox-thumb& width=&588& data-original=&/dbc1d_r.jpg&&&br&这回再有文件修改,就只更新那个文件对应的url了,想到这里貌似很完美了。你觉得这就够了么?大公司告诉你:图样图森破!&br&&br&唉~~~~,让我喘口气&br&&br&现代互联网企业,为了进一步提升网站性能,会把静态资源和动态网页分集群部署,静态资源会被部署到CDN节点上,网页中引用的资源也会变成对应的部署路径:&br&&br&&img src=&/0866cb58bcfa06b162e0d91_b.jpg& data-rawwidth=&574& data-rawheight=&259& class=&origin_image zh-lightbox-thumb& width=&574& data-original=&/0866cb58bcfa06b162e0d91_r.jpg&&&br&好了,当我要更新静态资源的时候,同时也会更新html中的引用吧,就好像这样:&br&&br&&img src=&/16d6d6c32e52ef1d1a835fb2ed15f864_b.jpg& data-rawwidth=&574& data-rawheight=&456& class=&origin_image zh-lightbox-thumb& width=&574& data-original=&/16d6d6c32e52ef1d1a835fb2ed15f864_r.jpg&&&br&这次发布,同时改了页面结构和样式,也更新了静态资源对应的url地址,现在要发布代码上线,亲爱的前端研发同学,你来告诉我,咱们是先上线页面,还是先上线静态资源?&br&&ol&&li&&b&&u&先部署页面,再部署资源&/u&&/b&:在二者部署的时间间隔内,如果有用户访问页面,就会在新的页面结构中加载旧的资源,并且把这个旧版本的资源当做新版本缓存起来,其结果就是:用户访问到了一个样式错乱的页面,除非手动刷新,否则在资源缓存过期之前,页面会一直执行错误。&br&&/li&&li&&b&&u&先部署资源,再部署页面&/u&&/b&:在部署时间间隔之内,有旧版本资源本地缓存的用户访问网站,由于请求的页面是旧版本的,资源引用没有改变,浏览器将直接使用本地缓存,这种情况下页面展现正常;但没有本地缓存或者缓存过期的用户访问网站,就会出现旧版本页面加载新版本资源的情况,导致页面执行错误,但当页面完成部署,这部分用户再次访问页面又会恢复正常了。&/li&&/ol&好的,上面一坨分析想说的就是:先部署谁都不成!都会导致部署过程中发生页面错乱的问题。所以,访问量不大的项目,可以让研发同学苦逼一把,等到半夜偷偷上线,先上静态资源,再部署页面,看起来问题少一些。&br&&br&但是,大公司超变态,没有这样的“绝对低峰期”,只有“相对低峰期”。So,为了稳定的服务,还得继续追求极致啊!&br&&br&这个奇葩问题,起源于资源的 &u&&b&覆盖式发布&/b&&/u&,用 待发布资源 覆盖 已发布资源,就有这种问题。解决它也好办,就是实现 &u&&b&非覆盖式发布&/b&&/u&。&br&&br&&img src=&/9b3a9df114d14a14130a70abf5733837_b.jpg& data-rawwidth=&631& data-rawheight=&456& class=&origin_image zh-lightbox-thumb& width=&631& data-original=&/9b3a9df114d14a14130a70abf5733837_r.jpg&&&br&看上图,用文件的摘要信息来对资源文件进行重命名,把摘要信息放到资源文件发布路径中,这样,内容有修改的资源就变成了一个新的文件发布到线上,不会覆盖已有的资源文件。上线过程中,先全量部署静态资源,再灰度部署页面,整个问题就比较完美的解决了。&br&&br&所以,大公司的静态资源优化方案,基本上要实现这么几个东西:&br&&br&&blockquote&&ol&&li&配置超长时间的本地缓存
—— 节省带宽,提高性能&br&&/li&&li&采用内容摘要作为缓存更新依据
—— 精确的缓存控制&br&&/li&&li&静态资源CDN部署
—— 优化网络请求&br&&/li&&li&更资源发布路径实现非覆盖式发布
—— 平滑升级&br&&/li&&/ol&&/blockquote&&br&全套做下来,就是相对比较完整的静态资源缓存控制方案了,而且,还要注意的是,静态资源的缓存控制要求在&b&&u&前端所有静态资源加载的位置都要做这样的处理&/u&&/b&。是的,所有!什么js、css自不必说,还要包括js、css文件中引用的资源路径,由于涉及到摘要信息,引用资源的摘要信息也会引起引用文件本身的内容改变,从而形成级联的摘要变化,大概示意图就是:&br&&br&&img src=&/edf10bb428d39d721e1e_b.jpg& data-rawwidth=&709& data-rawheight=&371& class=&origin_image zh-lightbox-thumb& width=&709& data-original=&/edf10bb428d39d721e1e_r.jpg&&&br&好了,目前我们快速的学习了一下前端工程中关于静态资源缓存要面临的优化和部署问题,新的问题又来了:这(TM)让工程师怎么写码啊!!!&br&&br&要解释优化与工程的结合处理思路,又会扯出一堆有关模块化开发、资源加载、请求合并、前端框架等等的工程问题,以上只是开了个头,解决方案才是精髓,但要说的太多太多,有空再慢慢展开吧。或者大家可以去我的blog看其中的一些拆解:&a href=&///?target=https%3A///fouber/blog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&fouber/blog · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&&blockquote&总之,前端性能优化绝逼是一个工程问题!&br&&/blockquote&&br&以上不是我YY的,可以观察 百度 或者 facebook 的页面以及静态资源源代码,查看它们的资源引用路径处理,以及网络请中静态资源的缓存控制部分。再次赞叹facebook的前端工程建设水平,跪舔了。&br&&br&建议前端工程师多多关注前端工程领域,也许有人会觉得自己的产品很小,不用这么变态,但很有可能说不定某天你就需要做出这样的改变了。而且,如果我们能把事情做得更极致,为什么不去做呢?&br&&br&另外,也不要觉得这些是运维或者后端工程师要解决的问题。如果由其他角色来解决,&u&&b&大家总是把自己不关心的问题丢给别人&/b&&/u&,那么前端工程师的开发过程将受到极大的限制,这种情况甚至在某些大公司都不少见!&br&&br&妈妈,我再也不玩前端了。。。。5555&br&&br&&br&&br&========================[ 10.29更新 ]========================&br&这里更新一下:&br&&br&在评论中, &a data-hash=&4b1a0d3f97fddca9ed6fc820a7be261c& href=&///people/4b1a0d3f97fddca9ed6fc820a7be261c& class=&member_mention& data-editable=&true& data-title=&@陈钢& data-tip=&p$b$4b1a0d3f97fddca9ed6fc820a7be261c& data-hovercard=&p$b$4b1a0d3f97fddca9ed6fc820a7be261c&&@陈钢&/a&&a data-hash=&aed& href=&///people/aed& class=&member_mention& data-editable=&true& data-title=&@fleuria& data-tip=&p$b$aed& data-hovercard=&p$b$aed&&@fleuria&/a& @林翔 提到了rails,刚刚去看了一下,确实是完成了以上所说的优化细节,对整个静态资源的管理上的思考于本答案描述的一致。很遗憾我直到今天()才了解到rails中的assets pipeline。这里向以上3位同学道歉,原谅我的无知。&br&&br&不过整篇回答没有讲解到具体的解决方案实现思路,只是介绍了前端在工程化方向的思考,答案本身是可用的,了解rails的人也可以把此答案当做是对rails中assets pipeline设计原理的分析。&br&&br&rails通过把静态资源变成erb模板文件,然后加入&%= asset_path 'image.png' %&,上线前预编译完成处理,不得不承认,fis的实现思路跟这个几乎完全一样,但我们当初确实不知道有rails的这套方案存在。&br&&br&相关资料:英文版:&a href=&///?target=http%3A//guides.rubyonrails.org/asset_pipeline.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Asset Pipeline&i class=&icon-external&&&/i&&/a&,中文版:&a href=&///?target=http%3A//guides.ruby-china.org/asset_pipeline.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Asset Pipeline&i class=&icon-external&&&/i&&/a&&br&========================[ 10.31更新 ]========================&br&用 &a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&F.I.S&i class=&icon-external&&&/i&&/a& 包装了一个小工具,完整实现整个回答所说的最佳部署方案,并提供了源码对照,可以感受一下项目源码和部署代码的对照。&br&源码项目:&a href=&///?target=https%3A///fouber/static-resource-digest-project& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&fouber/static-resource-digest-project · GitHub&i class=&icon-external&&&/i&&/a&&br&部署项目:&a href=&///?target=https%3A///fouber/static-resource-digest-project-release& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&fouber/static-resource-digest-project-release · GitHub&i class=&icon-external&&&/i&&/a&&br&部署项目可以理解为线上发布后的结果,可以在部署项目里查看所有资源引用的md5化处理。&br&&br&这个示例也可以用于和assets pipeline做比较。fis没有assets的目录规范约束,而且可以以独立工具的方式组合各种前端开发语言(coffee、less、sass/scss、stylus、markdown、jade、ejs、handlebars等等你能想到的),并与其他后端开发语言结合。&br&&br&assets pipeline的设计思想值得独立成工具用于前端工程,fis就当做这样的一个选择吧。
没人邀请,看到这个问题不错,路过怒答。(多图预警) 前百度工程师,曾负责百度
的核心设计与开发工作。我现在称这个领域为【前端工程】。没错,这是我最爱唠叨的问题域。 这是一个非常有趣的 非主流前端领域,这个领域要探索的是如何用…
&p&演示一些插件的使用效果,点击 &b&序号右边 &/b&的链接访问动态图&/p&1. &a href=&///?target=http%3A///wp-content/uploads/2015/05/AutoPrefixer.gif& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&AutoPrefixer 插入浏览器前缀&i class=&icon-external&&&/i&&/a&&img src=&/9ce7d08dad7bccc1dd202f049b524806_b.jpg& data-rawwidth=&922& data-rawheight=&487& class=&origin_image zh-lightbox-thumb& width=&922& data-original=&/9ce7d08dad7bccc1dd202f049b524806_r.jpg&&&br&2. &a href=&///?target=http%3A///wp-content/uploads/2015/05/live2.gif& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Emmet LiveStyle 实时刷新双向修改&i class=&icon-external&&&/i&&/a&&br&&img src=&/926d84d5323dffe9ca5ac4_b.jpg& data-rawwidth=&1156& data-rawheight=&595& class=&origin_image zh-lightbox-thumb& width=&1156& data-original=&/926d84d5323dffe9ca5ac4_r.jpg&&&br&3.&a href=&///?target=http%3A///wp-content/uploads/2015/05/FileHeader.gif& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&FileHeader 自动更新保存时间,文件模板&i class=&icon-external&&&/i&&/a&&br&&img src=&/6f1b59fd581e0e3d6e5ec_b.jpg& data-rawwidth=&564& data-rawheight=&344& class=&origin_image zh-lightbox-thumb& width=&564& data-original=&/6f1b59fd581

我要回帖

更多关于 三星手机消费者分析 的文章

 

随机推荐