邝荣基 發表於 2019-12-30 18:08:00

Java+大前端

<p>  前后端分离,是目前Web开发的主流模式也是趋势。而Java无疑是后端开发的王者(一条彪壮的鲶鱼,不知道吃什么长大的),PHP和.NET目前仍处于水深火热之中,更像是在夹缝中求生存,因为没办法和Java正面硬拼(假设Java部队有100w人,而PHP或者.Net部队可能只有十几万人,而这些人分散在各个IT公司)。大前端呢,最近几年发展很快,属于不断崛起的新势力!Java+大前端这一强强组合,面对其他没有前后端分离的竞争者,可以将其按在地上使劲摩擦(没别的歧视的意思,夸张手法,打个比方,就像Java部落有100w人,前端部落也100w人,其它一个部落可能才十几万人)。</p>
<p>   PHP要生存,怎么办?不断的往H5移动端靠,不断的往所谓的全栈靠,让其作为一些前端开发人员的全栈补充技能,甚至有些公司的PHP程序员被要求掌握Python。全栈,很多时候变成了“全干”!许多公司为了节约成本,希望一个人可以干几个人的活,可是一个人是一个进程,让一个人开多线程去VS多人多进程?</p>
<p>  .Net要生存,怎么办?开源、舍弃.net framework,推广新框架.net core,跨平台并大力推广,......可是国内的互联网公司们都不愿意冒险,不愿意摸着石头过河,而是希望有现成的经历过时间考验、市场验证的成熟技术方案.......尽管相比于之前,微软算是给了很大的诚意,可是许多公司的决策层认为,选择这个会不会犯下技术大方向的错误,他们或多或少的从某些地方或者某些人口中会听到XX技术栈是目前比较主流的,有很多成熟解决方案和案例,然后他们表示再看看,观望一下.......</p>
<p>  其它的后端开发语言如果不和前端进行联合,在面对Java+前端的组合时很难对抗。(假设Java部落100w人,前端部落100w人,Python部落80w人,PHP部落和.Net部落、Android部落、IOS部落等等各20w人),在谁也没有比谁先进多少的情况下,人数和战力往往成正比。不管你是用什么语言做web开发,只要不拥抱大前端,就很难和拥抱了大前端的对手拼。Java就像一条不安分的鲶鱼,每次它突然出现在公司,都会感到一丝威胁,它似乎带有侵略性,一开始可能还能和你和平相处,当你放松警提时,可能会想方设法吃掉你或是把你赶出领地。有人的地方就有江湖,有江湖的地方就有派系,公司也是如此。</p>
<p>  前后端分离后,不管你后端用Java也好、.Net也好,PHP也好,前端代码都可以不用动,后端是什么技术栈的项目都可以对接。不管是Java、.Net、还是PHP或是其它的,如果不做前后端分离会是很糟糕的,因为现在的界面需求越来越复杂,越来越追求用户体验,尤其是移动端,更是如此。前后端代码糅合在一起想要改造升级非常困难,前端人员很难帮得上,因为要看懂部分后端的代码和后端常用的视图引擎,前端的组件化和模块化也无法和具体业务进行很好的分离。</p>
<p>  前端的兴起,搞得Android和IOS原生开发也失去了往日的辉煌,以前还有WP(一个坑程序员的技术,我当时还买过wp10的诺基亚手机,最终因为只能看mp4格式的视频(其它的软件要付费),无法点外卖、无法打车、无法用支付宝、微信无法支付...我愤怒而又绝望的扔到了河里),不管什么技术,没有人用,没有开发者、没有用户,你说它一文不值也不算太过分,因为技术是第一生产力,而前提是要给社会创造它应有的价值。做程序员也一样,你掌握的技术再牛逼,没有人用,就你一个人孤芳自赏,也是枉然!价值衡量的一个最粗暴的标准:就是用户数和影响力。通常技术影响的用户越多,影响面越广,它给社会带来的价值越大。</p>
<p>  前端的发展,真的要感谢微软、感谢.net、感谢后端。为什么这么说?在WPF和Siverlight出现之前,前端根本就没有什么所谓的MVVM(vue 、react、 angular)。前端不断的在借鉴(抄袭)后端的架构、设计思想、语法和框架。而node.js的实现,让这一切抄袭变成了可能。看看现在css(less、sass 、scss、stylus)和js(typescript、ES6+)等都和C#、Java这样的高级语言一样要先预编译,也有了封装、继承、多态、组件化、模块化的概念,如此一来重前端的发展也逐渐成为可能,要知道这些东西,以前都是后端高级语言的专利。</p>
<p>  作为一名普普通通的开发者,说什么大道理都没什么用,我们首先得考虑生存(稳定的工作和收入),面向RMB编程,其次是考虑做的东西是否有意义(对社会有贡献)。我们只是单纯的在互联网的大浪潮中生存,在其中分一杯羹,然而适应时势而已,因为我们是普通人。当然也不排除会出现一些可以左右互联网浪潮,英雄造时势的人物。</p>
<p>  技术人员:时间投入=》技术回报=》金钱回报。回报率??</p>
<p>  简单识别XX技术或者XX框架火不火:GitHub上搜一搜,看看星星数;求职网上走一波,瞧瞧职位数。</p>
<p>  社会很残酷,互联网的竞争很激烈,所谓物竞天择适者生存。不要扯什么情怀,能当饭吃否?市场决定一切!在Web领域,移动端的快速崛起,PC端也逐渐显现其发展的疲态,不管我们愿不愿意接受这一事实。</p>
<p>  我们先来看下目前前端可以做什么?</p>
<p><img src="https://img2018.cnblogs.com/blog/413851/201912/413851-20191230172527964-568254350.png" alt=""></p>
<p>  前端技术栈</p>
<p><img src="https://img2018.cnblogs.com/blog/413851/201912/413851-20191230172722837-1640726784.png" alt=""></p>
<p>&nbsp;  前端就业方向及相关技术栈</p>
<p><img src="https://img2018.cnblogs.com/blog/413851/201912/413851-20191230191227484-449926197.png" alt=""></p>
<p>  再来看看Java后端,彪壮的鲶鱼</p>
<p><img src="https://img2018.cnblogs.com/blog/413851/201912/413851-20191230180830161-1483112484.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/413851/201912/413851-20191230172824864-1097909212.png" alt=""></p>
<p>&nbsp;  Java技术栈和生态</p>
<p><img src="https://img2018.cnblogs.com/blog/413851/201912/413851-20191230173657095-451700293.png" alt=""></p>
<p><strong>&nbsp; &nbsp; </strong>Java应用领域</p>
<p><strong><img src="https://img2018.cnblogs.com/blog/413851/201912/413851-20191230191440297-1897279272.png" alt=""></strong></p>
<p>  世界在变化,时代在发展,技术在革新!那个曾经会js、jquery和切图、会java三大框架,会用.net拖控件和.net mvc,会用php开发网站就能在web领域混饭吃的年代渐渐远去了,各种技术都在不断更新和发展,与时俱进,才能走得更远!</p>
<p>  那些说什么互联网做web开发门槛低啊什么的人,要么自己是天才,要么自己不懂!那么多东西要学个不停,低吗?所谓的门槛低,是指学历低吧?不持续学习就很容易out,这年头,做程序员真不容易?每年多少互联网从业人员被浪潮吞没?一些人被逼跳楼了,一些人被逼猝死了,一些人被迫转业了,一些人还在互联网的浪潮里苦苦挣扎,还有一些人却成为了弄潮儿(这里,我解释一下,这指极少数技术出身后来成为大佬的领军人物,互联网大佬多数都是技术出身)......</p>
<p>  当我不知道下一个风口在哪时,我选择赶往现在的风口,当然,前提是你得有这样的机会.....</p>
<p>  <strong>后记(个人经历):</strong>曾经我是一名.net铁粉,有多铁,直接跟公司摆明态度:你要是敢抛弃.net,我跑路给你看!结果公司:你不转就给我滚蛋!发觉我把.net当成情怀和信仰,经历N次跑路后,我待过的用.net技术的公司,现在都变成java技术栈了,若问待过多少家公司,依稀记得两位数.......唯一在一家公司待满了两年,却是因为被迫转前端了(摆在面前三条路:1.再次跑路,继续做.net;2.去做前端;3.去转java),我终于妥协,我做前端还不行么?不管你以后后端换啥都和我没关系,我开始不再像年轻时候那样倔强和固执,否则换得公司会更多,奔四后就想开始寻求稳定.....当时的感觉就是这样,永远不知道公司哪一天会突然转java(我也不知道为什么不是转其它的,反正我待的公司都是这样子,其技术组合无外乎就是Java做后端接口,然后前端分离,这样简单直接的方式,和PHP互不侵犯不一样,Java更像一条鲶鱼)!一开始我怀疑是公司的问题,所以几十人、几百人、几千人、几万人的公司我都换过,可后来发现结局都一样:某一天它们居然跑去搞java了,不愿意转java的我只能不断跑路.....经历过N次跑路,我终于明白Not only .Net,做技术不止.net这一条路的。</p>
<p>  公司要技术转型总会抛出一些危险信号:1.原班技术人马被撤。2.新引入其他技术(JAVA)的架构师,并扩大技术队伍。3.你所在的技术团队招人困难,规模缩减(其它技术团队在扩招)。通俗的理解就是:磨已卸好,驴安在?</p>
<p>  <strong>再次申明:</strong>本文,只是作者个人观点和经历描述,并没有呼吁大家去学xx,转xx,大家都是成年人,有自己的思想和辨别能力的,我就是一个摇旗啦喊的人,也没有收人家钱!有不同观点的意见的也欢迎留言评论!O(∩_∩)O哈哈~毕竟我们都没有拿人家钱来当水军........</p>
<p>  <strong>温馨提示:</strong>转技术有风险,在学有余力的情况下,多掌握一门技能是可以的。而每个人时间精力学习力都是有限的,如果公司要换技术,要么走,要么留,留就快速掌握公司要用得技术,并去钻研它,走,就继续做自己熟悉的技术。就跟你买股票买大盘和小盘一样的,买大盘还是小盘都可以。没有说做java一定很好,我有个大学同学一直做java,干垮的公司不下10家,总共换过二十余公司比我做.net时换得还多........</p>
<p>  下面这段本来不想说,可是许多.Net程序员,认为我刻意去踩.Net,我就补充说明一下:</p>
<p>  Java目前形式比人强,大多数公司的架构师都是Java技术栈的人,其实我恨Java,但是又不得不接受它,我花了那么多时间学.net,本来做.net做得好好的,它突然跑出来破坏了公司的技术生态,搞得我现在又要重新学其它的东西,我不是学习狂,谁不想好好玩,都是没有办法逼自己,是被国内的互联网公司逼的,被Java这样的鲶鱼逼的。可是谁不知道会不会某一天突然又出来新的XX,把Java给吃了,我期待着.......</p>
<p>  根据惯例,文章中只要提及某一门语言,哪怕说一丁点不是就会引来骂声一片,为此我郑重声明:PHP是宇宙最好的语言!.net神通广大,战无不胜,.net法驾中原,仙福永享,寿与天齐! Java NO.1。</p>
<p>  纵观历史,很少有某一样东西一直形势比人强,如楚汉之争,国共之争,一时的兴衰并不代表未来!我并没有刻意贬.net,.net兴对我百利而无一害,看不起.net的恰恰是发工资的公司老板和决定我们薪资的公司决策层们!看不起.net的是那些线上线下的培训机构和大学(它们不开课),看不起.net的是那些找我做项目的客户,他们一听说我用.net做项目,就带着疑问的语气和我交谈......许多人可能没有经历过,不清楚其中的辛酸,可是这些我都经历过(去面试、去讲课、去谈项目、去推销书都有遇到这样的问题...)......我甚至曾经因为公司不用.net,跟公司领导干过架,跟公司java架构师干过架,当然,结局肯定是犹如小怪兽打奥特曼,被虐得不要不要的……这是我的经历和感触,可能是我运气不好而已,我也不怨天尤人,吐槽归吐槽,生活还是要继续~环境每天都在变化,改变不了环境,就努力适应,不把自己固定和局限在某一个技术领域。多年后,我在领英上发觉当年公司一些只会.Net的微软哥现在好多其它技术都会了(虽然人现在依旧在微软就职),时代在变,人也在变......我挑一位来看下他领英上的技能图,这位是我以前公司的上司,曾经的.Net超级粉(已就职微软10年),我的感觉就是<strong><span style="color: rgba(255, 0, 0, 1)">Not only .Net</span></strong>,如下:</p>
<p><img src="https://img2018.cnblogs.com/blog/413851/202001/413851-20200101120640231-262929010.png" alt=""></p>
<p>  这些不是我臆想出来的,不信可以看看一些培训机构官网开的课程,培训机构是以市场需求为导向的,同以往相比课程上新增了Python,H5,新媒体短视频运营,UE,产品经理,影视制作,智能机器人。撤掉了平面,Android,IOS,.NET课程,如下图所示:</p>
<p><img src="https://img2018.cnblogs.com/blog/413851/201912/413851-20191231202503885-393804032.png" alt=""></p>
<p>  我只是把自己以前做.net时的经历说出来,不是每个人像我一样那么运气差的......是不是我的表达有什么问题?为什么都说我是在说Java多好,.Net和PHP如何不堪呢?感觉很多人误解我要表达的意思,所以我只好不断修稿.....</p>
<p>  是不是我把图文中所有java全部换为.net就可以了?做过.Net都知道,Java的东西加一个.net或者N就行了,额...我想想,诶?PHP程序员何在?为什么没有PHP程序员喷?文中明明说到了前端、PHP、Android、IOS,为什么大家只看到Java和.Net?就因为我之前做过.NET和Java吗?可我也做过前端啊!对此,我表示不服!这应该不是我的表达有问题,是一些开发者先入为主带有偏见在阅读?还是一些人脆弱的自尊心,让其不愿意面对和接受残酷的现实?</p>
<p>  好吧,下次我出版一本《Spring Boot 21天入门到精通》、《你必须掌握的PHP》,去毒害Java、PHP程序员,最后来一句:对不起,我是卧底!要不是合作人中途撤场,现已出版!O(∩_∩)O哈哈~</p>
<p><strong>  说明:</strong>本文仅代表个人观点!不一定正确!以上图片均从传智播客官网转载!</p>
<p>  写这个博文连包白沙都没有,若拿这些字数给出版社换稿费,还可以换两包和天下,本来就是嘛!至于吐槽我.net书写得烂的,我认可,可是国内技术书写得比我烂的多了去了,说最烂的书和一文不值的垃圾,我就不认了,多数读者能受益就有价值,一本书不可能满足每一个人,《圣经》也会有人觉得是垃圾,一样的道理么。出版社和读者都不傻,如果真烂得那么夸张,一本.net技术书也很难六次印刷,不是么?至于说发博文的都是半桶水的,我也认,我本来就是一个普通的开发人员,又不是什么大牛。如果都是大牛,然后都不发文章,会怎么样?</p>
<p>&nbsp; &nbsp; &nbsp; 如果觉得我写的毒文章辣到了您的眼睛,对不起,请直接无视它,忘记它,文章内容不代表事实,你可以看成是故事。越来越少发文章了,因为发得好还好,发得不好,会被喷死,喷就算了,最重要的是居然还没钱,所以更愿意把时间都拿去学习、写稿、做私单换钱去了.....</p>
<p>  好了,作为前端开发者,我现在要开始去毒害前端人员了,二月份烂书《Vue.js 2.x实践指南》已出版,阅读有害健康,但是有利于国家!(本书提供PPT课件和示例代码)</p>
<p>  书目录:</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" id="code_img_closed_22af3eb5-4d17-4f01-a083-6a276c6a4396" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" id="code_img_opened_22af3eb5-4d17-4f01-a083-6a276c6a4396" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_22af3eb5-4d17-4f01-a083-6a276c6a4396" class="cnblogs_code_hide">
<pre>第 <span style="color: rgba(128, 0, 128, 1)">1</span> 章    <span style="color: rgba(128, 0, 128, 1)">7</span><span style="color: rgba(0, 0, 0, 1)">
◄ VUE开发前奏 ►    </span><span style="color: rgba(128, 0, 128, 1)">7</span>
<span style="color: rgba(128, 0, 128, 1)">1.1</span>网站交互方式    <span style="color: rgba(128, 0, 128, 1)">8</span>
<span style="color: rgba(128, 0, 128, 1)">1.1</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>多页WEB应用(MPA)    <span style="color: rgba(128, 0, 128, 1)">8</span>
<span style="color: rgba(128, 0, 128, 1)">1.1</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>单页WEB应用(SPA)    <span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(128, 0, 128, 1)">1.2</span>前后端分离的开发模式    <span style="color: rgba(128, 0, 128, 1)">11</span>
<span style="color: rgba(128, 0, 128, 1)">1.3</span>前端三大开发框架    <span style="color: rgba(128, 0, 128, 1)">12</span>
<span style="color: rgba(128, 0, 128, 1)">1.4</span>为什么要学习流行框架(MVVM框架)    <span style="color: rgba(128, 0, 128, 1)">13</span>
<span style="color: rgba(128, 0, 128, 1)">1.5</span>框架和库的区别    <span style="color: rgba(128, 0, 128, 1)">14</span>
<span style="color: rgba(128, 0, 128, 1)">1.6</span>模块化和组件化    <span style="color: rgba(128, 0, 128, 1)">14</span>
<span style="color: rgba(128, 0, 128, 1)">1.7</span>后端中的MVC与前端中的MVVM 之间的区别    <span style="color: rgba(128, 0, 128, 1)">15</span>
<span style="color: rgba(128, 0, 128, 1)">1.8</span>NODE.JS安装    <span style="color: rgba(128, 0, 128, 1)">16</span>
<span style="color: rgba(128, 0, 128, 1)">1.9</span>PROMISES介绍    <span style="color: rgba(128, 0, 128, 1)">17</span>
<span style="color: rgba(128, 0, 128, 1)">1.9</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>在PROMISES出现之前的文件读取方式    <span style="color: rgba(128, 0, 128, 1)">17</span>
<span style="color: rgba(128, 0, 128, 1)">1.9</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>PROMISES基本概念介绍    <span style="color: rgba(128, 0, 128, 1)">19</span>
<span style="color: rgba(128, 0, 128, 1)">1.10</span>ES7语法糖ASYNC/AWAIT    <span style="color: rgba(128, 0, 128, 1)">22</span>
<span style="color: rgba(128, 0, 128, 1)">1.11</span>开发工具    <span style="color: rgba(128, 0, 128, 1)">23</span>
<span style="color: rgba(128, 0, 128, 1)">1.11</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>VISUAL STUDIO CODE    <span style="color: rgba(128, 0, 128, 1)">24</span>
<span style="color: rgba(128, 0, 128, 1)">1.11</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>VUEDEVTOOLS    <span style="color: rgba(128, 0, 128, 1)">25</span>
<span style="color: rgba(128, 0, 128, 1)">1.11</span>.<span style="color: rgba(128, 0, 128, 1)">3</span>CHROME    <span style="color: rgba(128, 0, 128, 1)">25</span><span style="color: rgba(0, 0, 0, 1)">
第 </span><span style="color: rgba(128, 0, 128, 1)">2</span> 章    <span style="color: rgba(128, 0, 128, 1)">26</span><span style="color: rgba(0, 0, 0, 1)">
◄ VUE基础入门 ►    </span><span style="color: rgba(128, 0, 128, 1)">26</span>
<span style="color: rgba(128, 0, 128, 1)">2.1</span>VUE发展历史    <span style="color: rgba(128, 0, 128, 1)">26</span>
<span style="color: rgba(128, 0, 128, 1)">2.2</span>什么是VUE.JS    <span style="color: rgba(128, 0, 128, 1)">27</span>
<span style="color: rgba(128, 0, 128, 1)">2.3</span>VUE基本代码    <span style="color: rgba(128, 0, 128, 1)">27</span>
<span style="color: rgba(128, 0, 128, 1)">2.4</span>VUE常用指令介绍    <span style="color: rgba(128, 0, 128, 1)">30</span>
<span style="color: rgba(128, 0, 128, 1)">2.4</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>V-CLOAK指令    <span style="color: rgba(128, 0, 128, 1)">30</span>
<span style="color: rgba(128, 0, 128, 1)">2.4</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>V-HTML指令    <span style="color: rgba(128, 0, 128, 1)">32</span>
<span style="color: rgba(128, 0, 128, 1)">2.4</span>.<span style="color: rgba(128, 0, 128, 1)">3</span>V-BIND&amp;V-ON指令    <span style="color: rgba(128, 0, 128, 1)">33</span>
<span style="color: rgba(128, 0, 128, 1)">2.4</span>.<span style="color: rgba(128, 0, 128, 1)">4</span>示例:跑马灯特效    <span style="color: rgba(128, 0, 128, 1)">34</span>
<span style="color: rgba(128, 0, 128, 1)">2.5</span>事件修饰符    <span style="color: rgba(128, 0, 128, 1)">35</span>
<span style="color: rgba(128, 0, 128, 1)">2.6</span>V-MODEL双向数据绑定    <span style="color: rgba(128, 0, 128, 1)">40</span>
<span style="color: rgba(128, 0, 128, 1)">2.7</span>V-FOR和KEY属性    <span style="color: rgba(128, 0, 128, 1)">42</span>
<span style="color: rgba(128, 0, 128, 1)">2.8</span>V-IF和V-SHOW    <span style="color: rgba(128, 0, 128, 1)">46</span>
<span style="color: rgba(128, 0, 128, 1)">2.9</span>在VUE中使用样式    <span style="color: rgba(128, 0, 128, 1)">47</span>
<span style="color: rgba(128, 0, 128, 1)">2.9</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>使用CLASS样式    <span style="color: rgba(128, 0, 128, 1)">47</span>
<span style="color: rgba(128, 0, 128, 1)">2.9</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>使用内联样式    <span style="color: rgba(128, 0, 128, 1)">48</span>
<span style="color: rgba(128, 0, 128, 1)">2.10</span>过滤器    <span style="color: rgba(128, 0, 128, 1)">49</span>
<span style="color: rgba(128, 0, 128, 1)">2.10</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>全局过滤器    <span style="color: rgba(128, 0, 128, 1)">49</span>
<span style="color: rgba(128, 0, 128, 1)">2.10</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>私有过滤器    <span style="color: rgba(128, 0, 128, 1)">50</span>
<span style="color: rgba(128, 0, 128, 1)">2.11</span>键盘修饰符以及自定义键盘修饰符    <span style="color: rgba(128, 0, 128, 1)">51</span>
<span style="color: rgba(128, 0, 128, 1)">2.12</span>自定义指令    <span style="color: rgba(128, 0, 128, 1)">52</span>
<span style="color: rgba(128, 0, 128, 1)">2.13</span>增删改查示例    <span style="color: rgba(128, 0, 128, 1)">53</span><span style="color: rgba(0, 0, 0, 1)">
第 </span><span style="color: rgba(128, 0, 128, 1)">3</span> 章    <span style="color: rgba(128, 0, 128, 1)">58</span><span style="color: rgba(0, 0, 0, 1)">
◄ VUE进阶 ►    </span><span style="color: rgba(128, 0, 128, 1)">58</span>
<span style="color: rgba(128, 0, 128, 1)">3.1</span>VUE生命周期    <span style="color: rgba(128, 0, 128, 1)">58</span>
<span style="color: rgba(128, 0, 128, 1)">3.2</span>AXIOS介绍    <span style="color: rgba(128, 0, 128, 1)">61</span>
<span style="color: rgba(128, 0, 128, 1)">3.2</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>跨域请求    <span style="color: rgba(128, 0, 128, 1)">64</span>
<span style="color: rgba(128, 0, 128, 1)">3.2</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>NODE手写JSONP服务器剖析JSONP原理    <span style="color: rgba(128, 0, 128, 1)">65</span>
<span style="color: rgba(128, 0, 128, 1)">3.3</span>VUE过渡动画    <span style="color: rgba(128, 0, 128, 1)">67</span>
<span style="color: rgba(128, 0, 128, 1)">3.3</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>单元素/组件的过渡    <span style="color: rgba(128, 0, 128, 1)">67</span>
<span style="color: rgba(128, 0, 128, 1)">3.3</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>列表过渡    <span style="color: rgba(128, 0, 128, 1)">73</span><span style="color: rgba(0, 0, 0, 1)">
第 </span><span style="color: rgba(128, 0, 128, 1)">4</span> 章    <span style="color: rgba(128, 0, 128, 1)">75</span><span style="color: rgba(0, 0, 0, 1)">
◄ VUE组件开发 ►    </span><span style="color: rgba(128, 0, 128, 1)">75</span>
<span style="color: rgba(128, 0, 128, 1)">4.1</span>组件介绍    <span style="color: rgba(128, 0, 128, 1)">75</span>
<span style="color: rgba(128, 0, 128, 1)">4.1</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>全局组件定义的三种方式    <span style="color: rgba(128, 0, 128, 1)">75</span>
<span style="color: rgba(128, 0, 128, 1)">4.1</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>使用COMPONENTS定义私有组件    <span style="color: rgba(128, 0, 128, 1)">77</span>
<span style="color: rgba(128, 0, 128, 1)">4.1</span>.<span style="color: rgba(128, 0, 128, 1)">3</span>组件中展示数据和响应事件    <span style="color: rgba(128, 0, 128, 1)">77</span>
<span style="color: rgba(128, 0, 128, 1)">4.1</span>.<span style="color: rgba(128, 0, 128, 1)">4</span>组件切换    <span style="color: rgba(128, 0, 128, 1)">78</span>
<span style="color: rgba(128, 0, 128, 1)">4.2</span>组件传值    <span style="color: rgba(128, 0, 128, 1)">80</span>
<span style="color: rgba(128, 0, 128, 1)">4.2</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>父组件向子组件传值    <span style="color: rgba(128, 0, 128, 1)">80</span>
<span style="color: rgba(128, 0, 128, 1)">4.2</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>子组件向父组件传值    <span style="color: rgba(128, 0, 128, 1)">81</span>
<span style="color: rgba(128, 0, 128, 1)">4.2</span>.<span style="color: rgba(128, 0, 128, 1)">3</span>事件总线(EVENTBUS)    <span style="color: rgba(128, 0, 128, 1)">83</span>
<span style="color: rgba(128, 0, 128, 1)">4.3</span>组件案例:留言板    <span style="color: rgba(128, 0, 128, 1)">85</span>
<span style="color: rgba(128, 0, 128, 1)">4.4</span>使用REF获取DOM元素和组件引用    <span style="color: rgba(128, 0, 128, 1)">88</span>
<span style="color: rgba(128, 0, 128, 1)">4.5</span>VUEX    <span style="color: rgba(128, 0, 128, 1)">90</span>
<span style="color: rgba(128, 0, 128, 1)">4.5</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>安装VUEX    <span style="color: rgba(128, 0, 128, 1)">91</span>
<span style="color: rgba(128, 0, 128, 1)">4.5</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>配置VUEX的步骤    <span style="color: rgba(128, 0, 128, 1)">91</span>
<span style="color: rgba(128, 0, 128, 1)">4.6</span>RENDER函数    <span style="color: rgba(128, 0, 128, 1)">94</span><span style="color: rgba(0, 0, 0, 1)">
第 </span><span style="color: rgba(128, 0, 128, 1)">5</span> 章    <span style="color: rgba(128, 0, 128, 1)">97</span><span style="color: rgba(0, 0, 0, 1)">
◄ 路由VUE</span>-ROUTER ►    <span style="color: rgba(128, 0, 128, 1)">97</span>
<span style="color: rgba(128, 0, 128, 1)">5.1</span>什么是路由    <span style="color: rgba(128, 0, 128, 1)">97</span>
<span style="color: rgba(128, 0, 128, 1)">5.1</span>.<span style="color: rgba(128, 0, 128, 1)">1</span> 前端路由的原生代码实现    <span style="color: rgba(128, 0, 128, 1)">97</span>
<span style="color: rgba(128, 0, 128, 1)">5.2</span>安装VUE-ROUTER的两种方式    <span style="color: rgba(128, 0, 128, 1)">98</span>
<span style="color: rgba(128, 0, 128, 1)">5.3</span>VUE-ROUTER的基本使用    <span style="color: rgba(128, 0, 128, 1)">99</span>
<span style="color: rgba(128, 0, 128, 1)">5.3</span>.<span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(128, 0, 128, 1)">404</span>    <span style="color: rgba(128, 0, 128, 1)">101</span>
<span style="color: rgba(128, 0, 128, 1)">5.4</span>设置选中路由高亮    <span style="color: rgba(128, 0, 128, 1)">102</span>
<span style="color: rgba(128, 0, 128, 1)">5.5</span>为路由切换启动动画    <span style="color: rgba(128, 0, 128, 1)">103</span>
<span style="color: rgba(128, 0, 128, 1)">5.6</span>路由传参QUERY&amp;PARAMS    <span style="color: rgba(128, 0, 128, 1)">103</span>
<span style="color: rgba(128, 0, 128, 1)">5.6</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>QUERY    <span style="color: rgba(128, 0, 128, 1)">104</span>
<span style="color: rgba(128, 0, 128, 1)">5.6</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>PARAMS    <span style="color: rgba(128, 0, 128, 1)">105</span>
<span style="color: rgba(128, 0, 128, 1)">5.7</span>使用CHILDREN属性实现路由嵌套    <span style="color: rgba(128, 0, 128, 1)">105</span>
<span style="color: rgba(128, 0, 128, 1)">5.8</span>使用命名视图    <span style="color: rgba(128, 0, 128, 1)">107</span>
<span style="color: rgba(128, 0, 128, 1)">5.9</span>WATCH监听    <span style="color: rgba(128, 0, 128, 1)">110</span>
<span style="color: rgba(128, 0, 128, 1)">5.10</span>COMPUTED:计算属性的使用    <span style="color: rgba(128, 0, 128, 1)">111</span>
<span style="color: rgba(128, 0, 128, 1)">5.11</span>WATCH、COMPUTED、METHODS的对比    <span style="color: rgba(128, 0, 128, 1)">113</span>
<span style="color: rgba(128, 0, 128, 1)">5.12</span>NRM的安装及使用    <span style="color: rgba(128, 0, 128, 1)">114</span>
<span style="color: rgba(128, 0, 128, 1)">5.1</span>.<span style="color: rgba(128, 0, 128, 1)">3</span>VUE-ROUTER中编程式导航    <span style="color: rgba(128, 0, 128, 1)">115</span><span style="color: rgba(0, 0, 0, 1)">
第 </span><span style="color: rgba(128, 0, 128, 1)">6</span> 章    <span style="color: rgba(128, 0, 128, 1)">117</span><span style="color: rgba(0, 0, 0, 1)">
◄ WEBPACK介绍 ►    </span><span style="color: rgba(128, 0, 128, 1)">117</span>
<span style="color: rgba(128, 0, 128, 1)">6.1</span>WEBPACK概念的引入    <span style="color: rgba(128, 0, 128, 1)">117</span>
<span style="color: rgba(128, 0, 128, 1)">6.2</span>WEBPACK:最基本的使用方式    <span style="color: rgba(128, 0, 128, 1)">118</span>
<span style="color: rgba(128, 0, 128, 1)">6.3</span>WEBPACK最基本的配置文件的使用    <span style="color: rgba(128, 0, 128, 1)">121</span>
<span style="color: rgba(128, 0, 128, 1)">6.4</span>WEBPACK-DEV-SERVER的基本使用    <span style="color: rgba(128, 0, 128, 1)">122</span>
<span style="color: rgba(128, 0, 128, 1)">6.5</span>使用HTML-WEBPACK-PLUGIN插件 配置启动页面    <span style="color: rgba(128, 0, 128, 1)">124</span>
<span style="color: rgba(128, 0, 128, 1)">6.6</span>WEBPACK-DEV-SERVER的常用命令参数    <span style="color: rgba(128, 0, 128, 1)">125</span>
<span style="color: rgba(128, 0, 128, 1)">6.7</span>WEBPACK-DEV-SERVER配置命令的另一种方式    <span style="color: rgba(128, 0, 128, 1)">127</span>
<span style="color: rgba(128, 0, 128, 1)">6.8</span>LOADER:配置处理CSS样式表的第三方LOADER    <span style="color: rgba(128, 0, 128, 1)">127</span>
<span style="color: rgba(128, 0, 128, 1)">6.9</span>LOADER:分析WEBPACK调用第三方LOADER的过程    <span style="color: rgba(128, 0, 128, 1)">129</span>
<span style="color: rgba(128, 0, 128, 1)">6.10</span>NPM INSTALL --SAVE 、--SAVE-DEV 、 -D、-S、-G 的区别    <span style="color: rgba(128, 0, 128, 1)">130</span>
<span style="color: rgba(128, 0, 128, 1)">6.11</span>LOADER:配置处理LESS文件的LOADER    <span style="color: rgba(128, 0, 128, 1)">131</span>
<span style="color: rgba(128, 0, 128, 1)">6.12</span>LOADER-配置处理SCSS文件的LOADER    <span style="color: rgba(128, 0, 128, 1)">131</span>
<span style="color: rgba(128, 0, 128, 1)">6.13</span>WEBPACK中URL-LOADER的使用    <span style="color: rgba(128, 0, 128, 1)">132</span>
<span style="color: rgba(128, 0, 128, 1)">6.14</span>WEBPACK中使用URL-LOADER处理字体文件    <span style="color: rgba(128, 0, 128, 1)">136</span>
<span style="color: rgba(128, 0, 128, 1)">6.15</span>WEBPACK中BABEL的配置    <span style="color: rgba(128, 0, 128, 1)">137</span><span style="color: rgba(0, 0, 0, 1)">
第 </span><span style="color: rgba(128, 0, 128, 1)">7</span> 章    <span style="color: rgba(128, 0, 128, 1)">140</span><span style="color: rgba(0, 0, 0, 1)">
◄ WEBPACK和VUE的结合 ►    </span><span style="color: rgba(128, 0, 128, 1)">140</span>
<span style="color: rgba(128, 0, 128, 1)">7.1</span>WEBPACK中导入VUE和普通网页 使用VUE的区别    <span style="color: rgba(128, 0, 128, 1)">140</span>
<span style="color: rgba(128, 0, 128, 1)">7.1</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>在WEBPACK中使用VUE    <span style="color: rgba(128, 0, 128, 1)">140</span>
<span style="color: rgba(128, 0, 128, 1)">7.1</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>在WEBPACK中配置.VUE组件页面总结    <span style="color: rgba(128, 0, 128, 1)">146</span>
<span style="color: rgba(128, 0, 128, 1)">7.2</span>EXPORT DEFAULT 和 EXPORT 的使用方式    <span style="color: rgba(128, 0, 128, 1)">147</span>
<span style="color: rgba(128, 0, 128, 1)">7.3</span>结合WEBPACK使用VUE-ROUTER    <span style="color: rgba(128, 0, 128, 1)">149</span>
<span style="color: rgba(128, 0, 128, 1)">7.4</span>结合WEBPACK实现CHILDREN子路由    <span style="color: rgba(128, 0, 128, 1)">152</span>
<span style="color: rgba(128, 0, 128, 1)">7.5</span>组件中STYLE标签LANG属性和SCOPED 属性的介绍    <span style="color: rgba(128, 0, 128, 1)">153</span>
<span style="color: rgba(128, 0, 128, 1)">7.5</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>重写子组件中的样式    <span style="color: rgba(128, 0, 128, 1)">154</span>
<span style="color: rgba(128, 0, 128, 1)">7.6</span>抽离路由模块    <span style="color: rgba(128, 0, 128, 1)">156</span><span style="color: rgba(0, 0, 0, 1)">
第 </span><span style="color: rgba(128, 0, 128, 1)">8</span> 章    <span style="color: rgba(128, 0, 128, 1)">158</span><span style="color: rgba(0, 0, 0, 1)">
◄ WEBPACK中UI组件的使用 ►    </span><span style="color: rgba(128, 0, 128, 1)">158</span>
<span style="color: rgba(128, 0, 128, 1)">8.1</span>使用饿了么的MINT UI 组件    <span style="color: rgba(128, 0, 128, 1)">158</span>
<span style="color: rgba(128, 0, 128, 1)">8.1</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>BUTTON组件    <span style="color: rgba(128, 0, 128, 1)">159</span>
<span style="color: rgba(128, 0, 128, 1)">8.1</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>TOAST组件    <span style="color: rgba(128, 0, 128, 1)">160</span>
<span style="color: rgba(128, 0, 128, 1)">8.2</span>MINT UI按需导入    <span style="color: rgba(128, 0, 128, 1)">162</span>
<span style="color: rgba(128, 0, 128, 1)">8.3</span>MUI介绍    <span style="color: rgba(128, 0, 128, 1)">164</span>
<span style="color: rgba(128, 0, 128, 1)">8.4</span>MUI的使用    <span style="color: rgba(128, 0, 128, 1)">164</span>
<span style="color: rgba(128, 0, 128, 1)">8.5</span>VANT UI    <span style="color: rgba(128, 0, 128, 1)">165</span>
<span style="color: rgba(128, 0, 128, 1)">8.6</span>ELEMENT UI    <span style="color: rgba(128, 0, 128, 1)">166</span>
<span style="color: rgba(128, 0, 128, 1)">8.6</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>引入ELEMENT    <span style="color: rgba(128, 0, 128, 1)">166</span>
<span style="color: rgba(128, 0, 128, 1)">8.6</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>ELEMENT常见应用场景及解决方案    <span style="color: rgba(128, 0, 128, 1)">166</span><span style="color: rgba(0, 0, 0, 1)">
第 </span><span style="color: rgba(128, 0, 128, 1)">9</span> 章    <span style="color: rgba(128, 0, 128, 1)">176</span><span style="color: rgba(0, 0, 0, 1)">
◄ 移动图书商城 ►    </span><span style="color: rgba(128, 0, 128, 1)">176</span>
<span style="color: rgba(128, 0, 128, 1)">9.1</span>MOCKJS介绍    <span style="color: rgba(128, 0, 128, 1)">176</span>
<span style="color: rgba(128, 0, 128, 1)">9.2</span>APP首页设计    <span style="color: rgba(128, 0, 128, 1)">177</span>
<span style="color: rgba(128, 0, 128, 1)">9.3</span>使用阿里巴巴矢量库    <span style="color: rgba(128, 0, 128, 1)">178</span>
<span style="color: rgba(128, 0, 128, 1)">9.3</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>UNICODE、FONT CLASS和SYMBOL的区别    <span style="color: rgba(128, 0, 128, 1)">179</span>
<span style="color: rgba(128, 0, 128, 1)">9.3</span>APP.VUE 组件的基本设置    <span style="color: rgba(128, 0, 128, 1)">181</span>
<span style="color: rgba(128, 0, 128, 1)">9.3</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>设置路由激活时高亮的两种方式:    <span style="color: rgba(128, 0, 128, 1)">181</span>
<span style="color: rgba(128, 0, 128, 1)">9.3</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>实现 TABBAR 页签不同组件页面的切换    <span style="color: rgba(128, 0, 128, 1)">182</span>
<span style="color: rgba(128, 0, 128, 1)">9.3</span>.<span style="color: rgba(128, 0, 128, 1)">3</span>路由切换添加过渡效果    <span style="color: rgba(128, 0, 128, 1)">183</span>
<span style="color: rgba(128, 0, 128, 1)">9.4</span>首页轮播图    <span style="color: rgba(128, 0, 128, 1)">184</span>
<span style="color: rgba(128, 0, 128, 1)">9.4</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>什么是 BASE64 编码?    <span style="color: rgba(128, 0, 128, 1)">187</span>
<span style="color: rgba(128, 0, 128, 1)">9.5</span>首页九宫格    <span style="color: rgba(128, 0, 128, 1)">188</span>
<span style="color: rgba(128, 0, 128, 1)">9.6</span>图书分类组件    <span style="color: rgba(128, 0, 128, 1)">191</span>
<span style="color: rgba(128, 0, 128, 1)">9.7</span>制作顶部滑动导航    <span style="color: rgba(128, 0, 128, 1)">194</span>
<span style="color: rgba(128, 0, 128, 1)">9.8</span>制作图片列表    <span style="color: rgba(128, 0, 128, 1)">198</span>
<span style="color: rgba(128, 0, 128, 1)">9.9</span>在ANDROID手机浏览器中调试APP    <span style="color: rgba(128, 0, 128, 1)">201</span>
<span style="color: rgba(128, 0, 128, 1)">9.10</span>真机调试    <span style="color: rgba(128, 0, 128, 1)">202</span>
<span style="color: rgba(128, 0, 128, 1)">9.11</span>封装轮播组件    <span style="color: rgba(128, 0, 128, 1)">204</span>
<span style="color: rgba(128, 0, 128, 1)">9.12</span>商品详情页    <span style="color: rgba(128, 0, 128, 1)">205</span>
<span style="color: rgba(128, 0, 128, 1)">9.12</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>自定义V-TAP指令    <span style="color: rgba(128, 0, 128, 1)">208</span>
<span style="color: rgba(128, 0, 128, 1)">9.13</span>购物车小球动画    <span style="color: rgba(128, 0, 128, 1)">209</span>
<span style="color: rgba(128, 0, 128, 1)">9.13</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>GETBOUNDINGCLIENTRECT    <span style="color: rgba(128, 0, 128, 1)">211</span>
<span style="color: rgba(128, 0, 128, 1)">9.14</span>封装购买数量组件    <span style="color: rgba(128, 0, 128, 1)">211</span>
<span style="color: rgba(128, 0, 128, 1)">9.15</span>设计购物车数据存储    <span style="color: rgba(128, 0, 128, 1)">213</span>
<span style="color: rgba(128, 0, 128, 1)">9.16</span>我的购物车    <span style="color: rgba(128, 0, 128, 1)">215</span>
<span style="color: rgba(128, 0, 128, 1)">9.17</span>增加页面返回    <span style="color: rgba(128, 0, 128, 1)">220</span>
<span style="color: rgba(128, 0, 128, 1)">9.18</span>总结    <span style="color: rgba(128, 0, 128, 1)">221</span><span style="color: rgba(0, 0, 0, 1)">
第 </span><span style="color: rgba(128, 0, 128, 1)">10</span> 章    <span style="color: rgba(128, 0, 128, 1)">222</span><span style="color: rgba(0, 0, 0, 1)">
◄ 天下会管理平台 ►    </span><span style="color: rgba(128, 0, 128, 1)">222</span>
<span style="color: rgba(128, 0, 128, 1)">10.1</span>VUE前端开发规范    <span style="color: rgba(128, 0, 128, 1)">222</span>
<span style="color: rgba(128, 0, 128, 1)">10.1</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>统一开发环境    <span style="color: rgba(128, 0, 128, 1)">222</span>
<span style="color: rgba(128, 0, 128, 1)">10.1</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>技术框架选型    <span style="color: rgba(128, 0, 128, 1)">222</span>
<span style="color: rgba(128, 0, 128, 1)">10.1</span>.<span style="color: rgba(128, 0, 128, 1)">3</span>命名规范    <span style="color: rgba(128, 0, 128, 1)">223</span>
<span style="color: rgba(128, 0, 128, 1)">10.1</span>.<span style="color: rgba(128, 0, 128, 1)">4</span>注意事项    <span style="color: rgba(128, 0, 128, 1)">224</span>
<span style="color: rgba(128, 0, 128, 1)">10.1</span>.<span style="color: rgba(128, 0, 128, 1)">5</span>ESLINT配置JS语法检查并自动格式化    <span style="color: rgba(128, 0, 128, 1)">225</span>
<span style="color: rgba(128, 0, 128, 1)">10.2</span>通过VUE-CLI来搭建项目    <span style="color: rgba(128, 0, 128, 1)">227</span>
<span style="color: rgba(128, 0, 128, 1)">10.3</span>完善项目结构    <span style="color: rgba(128, 0, 128, 1)">230</span>
<span style="color: rgba(128, 0, 128, 1)">10.3</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>设置浏览器图标    <span style="color: rgba(128, 0, 128, 1)">230</span>
<span style="color: rgba(128, 0, 128, 1)">10.3</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>完善SRC源码目录结构    <span style="color: rgba(128, 0, 128, 1)">230</span>
<span style="color: rgba(128, 0, 128, 1)">10.3</span>.<span style="color: rgba(128, 0, 128, 1)">3</span>引入ELEMENT UI    <span style="color: rgba(128, 0, 128, 1)">231</span>
<span style="color: rgba(128, 0, 128, 1)">10.3</span>.<span style="color: rgba(128, 0, 128, 1)">4</span>封装AXIOS请求    <span style="color: rgba(128, 0, 128, 1)">231</span>
<span style="color: rgba(128, 0, 128, 1)">10.3</span>.<span style="color: rgba(128, 0, 128, 1)">5</span>AJAX跨域支持    <span style="color: rgba(128, 0, 128, 1)">236</span>
<span style="color: rgba(128, 0, 128, 1)">10.3</span>.<span style="color: rgba(128, 0, 128, 1)">6</span>封装全局的CSS变量文件    <span style="color: rgba(128, 0, 128, 1)">238</span>
<span style="color: rgba(128, 0, 128, 1)">10.3</span>.<span style="color: rgba(128, 0, 128, 1)">7</span>VUE-WECHAT-TITLE动态修改TITLE    <span style="color: rgba(128, 0, 128, 1)">239</span>
<span style="color: rgba(128, 0, 128, 1)">10.3</span>.<span style="color: rgba(128, 0, 128, 1)">8</span>封装全局的配置文件BASE-CONFIG.JS    <span style="color: rgba(128, 0, 128, 1)">239</span>
<span style="color: rgba(128, 0, 128, 1)">10.4</span>项目介绍及其界面设计    <span style="color: rgba(128, 0, 128, 1)">240</span>
<span style="color: rgba(128, 0, 128, 1)">10.5</span>项目设计和分析    <span style="color: rgba(128, 0, 128, 1)">242</span>
<span style="color: rgba(128, 0, 128, 1)">10.5</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>帮主首页    <span style="color: rgba(128, 0, 128, 1)">242</span>
<span style="color: rgba(128, 0, 128, 1)">10.5</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>其他管理界面    <span style="color: rgba(128, 0, 128, 1)">244</span>
<span style="color: rgba(128, 0, 128, 1)">10.5</span>.<span style="color: rgba(128, 0, 128, 1)">3</span>设计路由    <span style="color: rgba(128, 0, 128, 1)">248</span>
<span style="color: rgba(128, 0, 128, 1)">10.5</span>.<span style="color: rgba(128, 0, 128, 1)">4</span>设计业务逻辑层    <span style="color: rgba(128, 0, 128, 1)">251</span>
<span style="color: rgba(128, 0, 128, 1)">10.5</span>.<span style="color: rgba(128, 0, 128, 1)">5</span>VUEX设计    <span style="color: rgba(128, 0, 128, 1)">252</span>
<span style="color: rgba(128, 0, 128, 1)">10.5</span>.<span style="color: rgba(128, 0, 128, 1)">6</span>权限设计    <span style="color: rgba(128, 0, 128, 1)">254</span>
<span style="color: rgba(128, 0, 128, 1)">10.5</span>.<span style="color: rgba(128, 0, 128, 1)">7</span>菜单组件    <span style="color: rgba(128, 0, 128, 1)">254</span>
<span style="color: rgba(128, 0, 128, 1)">10.6</span>表单验证    <span style="color: rgba(128, 0, 128, 1)">260</span>
<span style="color: rgba(128, 0, 128, 1)">10.7</span>登录    <span style="color: rgba(128, 0, 128, 1)">266</span>
<span style="color: rgba(128, 0, 128, 1)">10.7</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>帐号密码登录    <span style="color: rgba(128, 0, 128, 1)">267</span>
<span style="color: rgba(128, 0, 128, 1)">10.7</span>.<span style="color: rgba(128, 0, 128, 1)">2</span>在线生成二维码    <span style="color: rgba(128, 0, 128, 1)">270</span>
<span style="color: rgba(128, 0, 128, 1)">10.7</span>.<span style="color: rgba(128, 0, 128, 1)">3</span>制作网站ICO图标    <span style="color: rgba(128, 0, 128, 1)">270</span>
<span style="color: rgba(128, 0, 128, 1)">10.7</span>.<span style="color: rgba(128, 0, 128, 1)">4</span>存储登录信息    <span style="color: rgba(128, 0, 128, 1)">271</span>
<span style="color: rgba(128, 0, 128, 1)">10.7</span>.<span style="color: rgba(128, 0, 128, 1)">5</span>回车自动登录    <span style="color: rgba(128, 0, 128, 1)">272</span>
<span style="color: rgba(128, 0, 128, 1)">10.7</span>.<span style="color: rgba(128, 0, 128, 1)">6</span>防止登录按钮频繁点击    <span style="color: rgba(128, 0, 128, 1)">272</span>
<span style="color: rgba(128, 0, 128, 1)">10.8</span>增删改查列表    <span style="color: rgba(128, 0, 128, 1)">273</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>  图书购买地址:<span style="font-size: 18px"><strong><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)">《Vue.js 2.x实践指南》</span></span></strong></span></p>
<p>  .net开发好啊<br>  真的好<br>  .net开发棒<br>  真的棒<br>  我是.net程序猿<br>  万能程序猿<br>  你是程序猿<br>  我是程序猿<br>  .net开发好耶<br>  真是好啊<br>  .net开发好耶<br>  太棒了啊<br>  .net开发够劲<br>  顶呱呱啊<br>  我是程序猿<br>  程序猿啊<br>  他是.net开发<br>  哇吼哇吼哇吼</p>

</div>
<div id="MySignature" role="contentinfo">
    <div align="left"><div style="color: #111111"><table style="vertical-align: top">
<tbody><tr>
   <td id="tdSign">博客地址:</td><td>http://www.cnblogs.com/jiekzou/</td>
<td rowspan="2"></td>
</tr>
<tr>
   <td>博客版权:</td><td>本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。<br>如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!<br>再次感谢您耐心的读完本篇文章。 </td>
</tr>
<tr><td>其它:</td><td>
.net-QQ群4:<span style="color: green">612347965</span>
java-QQ群:<span style="color: green">805741535</span>
H5-QQ群:<span style="color: green">773766020</span><br>
<div>我的拙作
《Vue3.x+TypeScript实践指南》
《ASP.NET MVC企业级实战》
《H5+移动应用实战开发》
《Vue.js 2.x实践指南》
《JavaScript实用教程 》
《Node+MongoDB+React 项目实战开发》
已经出版,希望大家多多支持!</div></td></tr>
</tbody></table></div>
</div>
<p style=" margin-bottom:-13px;padding-top: 15px;"><img src="https://images.cnblogs.com/cnblogs_com/jiekzou/780174/t_240929014358_%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20240929094331.png" style=" border:2px solid #ddd;border-radius:20px;" height="326" width="235"></p><br><br>
来源:https://www.cnblogs.com/jiekzou/p/12120978.html
頁: [1]
查看完整版本: Java+大前端