從壹開始前后端分離【 Vue2.0 + .NET Core2.1】之十四 ║ VUE 計劃書 && 我的前后端開發(fā)簡史【寫真經(jīng)歷】

---新內(nèi)容開始---

番外

大家周一好呀宰衙,又是元氣滿滿的一個周一呀平道!感謝大家在周一這個著急改Bug的黃金時期,抽出時間來看我的博文哈哈哈供炼,時間真快一屋,已經(jīng)到第十四篇博文了窘疮,也很順順(跌跌)利利 (撞撞)的來到了Vue的講解,群里有小伙伴說冀墨,感覺后端還有很多沒有更新闸衫,是呀!還是有很多東西的在后端诽嘉,只不過想把vue給簡單的搭建出來楚堤,如果大家有后端的一些知識,可以給我留言含懊,我總結(jié)后身冬,在Vue系列之后再繼續(xù)說,再強調(diào)一次岔乔,后端以后還會更新酥筝。

前邊的.net core 文章我會一直在更新中,一直在修改其中的錯誤雏门,或者不是很清晰的地方嘿歌,或者大家提出的問題,我都會放進(jìn)去(因為現(xiàn)在開始了Vue茁影,有的小伙伴在看.Net Core 的時候遇到問題歡迎來群里宙帝,實時給大家解決問題)。大家如果看的時候募闲,可能在文中會不經(jīng)意間看到自己的名字步脓,這里統(tǒng)一說一下,如果你指出了我的錯誤浩螺,或者提出了建設(shè)性的建議靴患,我會把您的相關(guān)問題放到文中,算是一種鼓勵支持我的動力?(要是感覺不適合,可以私信給我立叛,或者咱的QQ群,我去掉)或颊。周末的時候我聽取了@[高海東]的意見,把代碼升級到了.Net Core 2.1版本传于,現(xiàn)在的Git項目里已經(jīng)被2.1版本的覆蓋了囱挑,其實基本上都差不多,只是在Swagger那部分會有一些輕微的不同格了,我也把2.0版本的放到了Git新地址看铆,https://github.com/anjoy8/Blog.Core2.0 想要的可以去下載徽鼎。

前言

好啦盛末,開始今天的講解弹惦,今天呢,大家可以不用關(guān)系Git悄但,或者各種Code了棠隐,因為今天不涉及到代碼,今天主要說的是我的開發(fā)經(jīng)歷檐嚣,然后說明下互聯(lián)網(wǎng)BS開發(fā)下的Web發(fā)展史助泽,然后引出VUE——一個前端分離的較好的前端框架(目前前端三大框架React、Vue嚎京、Angular)嗡贺。大家可以簡單看一下,無論是做BS開發(fā)的鞍帝,還是CS開發(fā)的诫睬。

本VUE系列我大概有以下幾個路線系列(可能以后有增刪),內(nèi)容可能涉及的有些多帕涌,因為要重頭開始講摄凡,如果你感覺是后端沒必要學(xué)習(xí)的話,權(quán)當(dāng)是個樂子了蚓曼,可以看看亲澡,因為我不是專業(yè)講師,大家看看混個臉熟就行纫版,有這回事兒就行床绪,萬一下一個公司要用到呢,是吧其弊。如果你想好好了解下会涎,或者想轉(zhuǎn)前端(全棧,我也在去全棧的路上)瑞凑,可以試一試末秃,自己以后跟著練習(xí)下:

強調(diào)一點:現(xiàn)在的前端已經(jīng)不是以前那種單純的切圖片,畫頁面了籽御,前端框架層出不窮练慕,面向?qū)ο髮懛ǖ囊笕找嬖黾樱壿嬓缘暮袈曉絹碓礁呒继停袁F(xiàn)在的前端已經(jīng)往全棧方向發(fā)展铃将,后端往架構(gòu)師方向發(fā)展。

1哑梳、Web開發(fā)經(jīng)歷哪些時期

2劲阎、JS高級開發(fā)——面向?qū)ο笙盗校ㄈ绻浅跫墸⒁蚕雽W(xué)鸠真,可以單找我悯仙。)

3龄毡、vue開篇,引入vue.js锡垄,基本語法系列

4沦零、Vue生命周期

5、搭建腳手架Vue-cli货岭,安裝node.js路操,npm基礎(chǔ)系列

6、Axios訪問.Net Core Api系列

7千贯、模板-事件屬性-修飾符等系列

8屯仗、webpack打包系列

9、Vue-router路由系列

10搔谴、組件詳解系列

11祭钉、Vuex狀態(tài)模型庫系列

零、今天要實現(xiàn)紅色的部分

image

注意:以下這只是我個人的經(jīng)歷以及思考己沛,不是百度正版的慌核,有不意見請?zhí)岢鰜?/strong>

先上一個網(wǎng)絡(luò)截圖,很簡單

image

一申尼、簡潔明快的單頁面時代——沒有前后端的ASP

1垮卓、背景

我接觸到的的第一個項目,那時候還在大學(xué)师幕,就是Asp項目粟按,當(dāng)時第一次用到,感覺真的很神奇霹粥,通過代碼的敲寫灭将,就能動態(tài)的展示出來,還能連接數(shù)據(jù)庫持久化后控,這么多年過去了庙曙,現(xiàn)在再重新看,感覺看到頭都大了浩淘,從網(wǎng)上下載了一套源碼捌朴,大家可以簡單看看,真的神奇张抄,不僅html代碼里有邏輯代碼砂蔽,還有sql連接數(shù)據(jù)庫,嗯署惯。左驾。。可能部分讀者都沒有接觸過這樣的代碼了诡右,不過雖然看著很凌亂安岂,但是在瀏覽器渲染生成了Html頁面,還是和普通的asp.net mvc是一樣的樣式

2稻爬、代碼樣式

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <%'include此行代碼供安裝插件用勿刪改%>
    <% Const funpath = "../" Const dbpath = "../" Set ctr_page = New tr_page
    Set ctr_user = New tr_user
    Set ctr_comment = New tr_comment %>
    <%pageno = tr_killstr(request.querystring("pageno"), 1, 8, 1, "", "", "", "", 1) %>
    <%'head此行代碼供安裝插件用勿刪改%>
    <title>反饋留言_<%=application(siternd & "55trsitetitle")%></title>
    <link rel="shortcut icon" type="image/x-icon" href="<%=funpath%>favicon.ico"
    <%'headend此行代碼供安裝插件用勿刪改%>
</head>
<body>
    <%'body1此行代碼供安裝插件用勿刪改%>
    <%if application(siternd & "55tropenguestbook")=1 then%>
    <div class="alert alert-warning alert-dismissible trnotice1" role="alert">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>

        <%=application(siternd & "55trguestnotice")%>
    </div>
    <form id="form1" name="form1" method="post" action="usersave.asp" target="ifr1" onSubmit="return checkguest(this)">
        <%'body5此行代碼供安裝插件用勿刪改%>
        <table class="trsendtb">
        <tr>
        <td align="center" colspan="11"><textarea id="content" name="content" class="trgcontent trinput6"></textarea></td>
        </tr>
        <%'body6此行代碼供安裝插件用勿刪改%>
        <tr>
        <td align="left"><img id="codeimg" src="../core/Code.asp?rd=" style="cursor:hand; " title="點擊更換" onClick="javascript: this.src = '../core/Code.asp?rd=' + randomString(10) + ''" height="24" border="0" width="70"></td>
        <td align="right">
        <input type="submit" value="立即提交" name="submit1" id="submit1" class="trbt3 trmar1" />
        <input type="hidden" value="guest" name="action" />
        </td>
        </tr>
        <%'body7此行代碼供安裝插件用勿刪改%>
        </table>
        <%'body8此行代碼供安裝插件用勿刪改%>
    </form>
    <table align="center" border="0" cellpadding="3" cellspacing="1" id="mytable" class="trtable2">
    <% sql = "select id,username,content,addtime,homepage,asuser,answer,astime from tr_comment where types=2 and ispass=1 and isdel=0 order by addtime desc , id desc " page_size = 20 pagei = 0 n = (pageno -1) * page_size
    Call ctr_page.create_rs(sql, rs, conn, page_size, pageno) ' rs.open sql,conn,0,1
 If Not rs.EOF Then
    Do While Not rs.EOF ' and pagei
    <page_size If pagei>
    = page_size Then Exit Do
    pagei = pagei + 1 n = n + 1
    %>
    <p class="trp1">
    <span class="uname">
    <%if trim(rs("homepage"))<>"" then%>
    <%if isweburl(rs("homepage")) then%>
    <a href="#"><%=rs("username")%></a>
    <%else%>
    <%=rs("username")%>
    <%end if%>
    <%else%>
    <%=rs("username")%>
    <%end if%>
    </span> 說: <%=rs("content")%>
    </p>
    <div class="col-lg-3 <%=colbs3%> trrow1199 trlistright trovh" id="trlistright178888">
    <%'body3此行代碼供安裝插件用勿刪改%>
    </div>
    </div>
    <div class="trpublicline clearfix "> </div>
</body>
</html>

3、概要講解

image

這就是Web 1.0 時代蜕依,典型的就是ASP桅锄,在之前web開發(fā)中,也是獨領(lǐng)風(fēng)騷了一段時間样眠,適合小項目友瘤,不分前后端,大家一起開發(fā)頁面檐束,那個時候大家是按照頁面來分工的辫秧,寫好的頁面直接就可以跑,不需要編譯被丧,有點兒像PHP盟戏,服務(wù)端給什么瀏覽器就展現(xiàn)什么,展現(xiàn)的控制在 Web Server 層甥桂。

優(yōu)點:

1柿究、無需編譯,可在服務(wù)器端直接執(zhí)行黄选。

2蝇摸、容易編寫,可使用普通的文本編輯器編寫办陷,如記事本就可以完成

3貌夕、由腳本在服務(wù)器上而不是客戶端運行,用戶端的瀏覽器不需要提供任何別的支持民镜,這樣大大提高了用戶與服務(wù)器之間的交互速度啡专。

缺點:

1、代碼邏輯混亂制圈,難于管理:由于ASP是腳本語言混合html編程植旧,所以你很難看清代碼的邏輯關(guān)系,并且隨著程序的復(fù)雜性增加离唐,甚至超出一個程序員所能達(dá)到的管理能力病附,各種問題就出現(xiàn)了。

2亥鬓、代碼的可重用性差:由于是面向結(jié)構(gòu)的編程方式完沪,并且混合html,所以可能頁面原型修改一點,整個程序都需要修改覆积,更別提代碼重用了听皿。

3、弱類型造成潛在的出錯可能:只支持兩種非類型的語言:VBScript和JavaScript宽档,盡管弱數(shù)據(jù)類型的編程語言使用起來回方便一些尉姨,但相對于它所造成的出錯幾率是遠(yuǎn)遠(yuǎn)得不償失的。

4吗冤、缺乏完善的糾錯/調(diào)試功能又厉。

這個時期發(fā)展到了后端,真是苦不堪言椎瘟,為了讓前后端分工更合理高效覆致,提高代碼的可維護(hù)性,Asp.Net MVC框架就出現(xiàn)了肺蔚。

注:其實之后是aspx煌妈,也就是asp.net Webfrom開發(fā),第一次把前后端代碼摘開宣羊,這里就不詳細(xì)說了璧诵。

二、前后端開始分工的時代——MVC

1仇冯、背景

我是前端起家的腮猖,然后轉(zhuǎn)向后端的,當(dāng)2014年接觸MVC的時候赞枕,就深深的被吸引了澈缺,感覺這種整齊的,分工明確的感覺炕婶,讓我耳目一新姐赡,從此就開始了后端程序員之路。當(dāng)時開發(fā)的是公司的一個企業(yè)內(nèi)部管理系統(tǒng)柠掂,是一個中型的項目项滑,地址就不說了。

2涯贞、源代碼就不粘貼了

image

注意:這里我要說一下枪狂,我曾經(jīng)看到一個朋友自己寫公司框架,是把ControllerViews放到了兩個層里邊宋渔,嗯州疾,就好像把Model層提出了一樣,這三個都提出來了皇拣,這也是一個思路严蓖。

3薄嫡、概要講解

image

優(yōu)點:

1、較好的解決了單頁面颗胡,或者單純的Code behind的aspx開發(fā)中所出現(xiàn)的問題

2毫深、代碼可維護(hù)性得到明顯好轉(zhuǎn),每個部分都有自己的應(yīng)該負(fù)責(zé)的職能毒姨。

3哑蔫、為了讓 View 層更簡單強大,還可以選擇aspx或者Razor模板弧呐,甚至可以在里邊書寫C#代碼闸迷。

缺點:

1、前端開發(fā)重度依賴開發(fā)環(huán)境泉懦。在這種模式下稿黍,前端寫 demo疹瘦,寫好后崩哩,讓后端去套模板,有可能套錯言沐,套完后還需要前端確定邓嘹,來回溝通調(diào)整的成本比較大。有時候為了一個前端樣式险胰,需要后端去重新編譯( eg.由后端動態(tài)生成前端樣式的情況 )汹押。

2、整個開發(fā)過程中起便,不僅僅是前端和后端相互依賴棚贾,后端控制器和model的糾纏不清,各種剪不斷理還亂榆综,有時候為了處理邏輯而修改model妙痹,有時候修了model還要多處多次修改controller,我的天鼻疮,想想都累心喲怯伊,不過我們卻都是這么做的 [哭笑]。

注:當(dāng)然說的有些夸張判沟,目前MVC模式還是很好的一種框架模式耿芹。

三、異步出現(xiàn)挪哄,單頁面應(yīng)用時代——AJAX吧秕,前端小時代

1、背景

還記得第一次使用異步編程是在2015年迹炼,當(dāng)時使用的時候寇甸,真是整個人都開心壞了,頁面不用再刷新,點擊跳轉(zhuǎn)拿霉,點擊提交吟秩,點擊分頁,點擊任何地方绽淘,都是局部加載涵防,感覺整個人都很輕松,這個時候我也由一個完完全全的后端沪铭,開始慢慢接觸前端壮池,開始寫HTML代碼,開始寫CSS杀怠,還是用Jquery來寫各種接口請求椰憋,各種拼接頁面DOM,各種頁面交互動作等等赔退。開始往前端邁進(jìn)橙依。

2、代碼硕旗,簡單的一個窗骑,基于面向?qū)ο蟮膶懛?/strong>

 function(options) {
        options = .extend({ odd: 'odd', even: 'even', selected: 'selected' }, options); ('tbody>tr:odd', this).addClass(options.odd);
        ('tbody>tr:even', this).addClass(options.even); ('tbody>tr', this).click(function () { var hasSelected = (this).hasClass(options.selected); (this)hasSelected ? 'removeClass' : 'addClass' .find(':checkbox').attr('checked', !hasSelected)
        })

        $('tbody>tr:has(:checked)', this).addClass(options.selected); return this //返回this , 使方法可鏈
 }

})
}) (jQuery);
    $(function () { // $('.red').color('blue');
 $('#table2').alertBgColor({ odd: '', even: 'even', selected: 'selected' }).find('th').css('color', 'green')

    })

3、概要講解

image

優(yōu)點

1漆枚、前后端的分工非常清晰创译,前后端的關(guān)鍵協(xié)作點是 Ajax 接口

2、前端可以自由的開發(fā)了墙基,不受后端開發(fā)環(huán)境的過分約束

缺點

1软族、前端過分依賴接口開發(fā)。如果后端的接口不規(guī)范残制,亂寫立砸,業(yè)務(wù)邏輯不穩(wěn)定,那么前端開發(fā)會很痛苦痘拆。為了解決這個問題仰禽,RESTful接口規(guī)范就出現(xiàn)了,還記得么纺蛆,咱們在.Net Core api框架中使用的吐葵。有了和后端一起沉淀的接口規(guī)則,還可以用來模擬數(shù)據(jù)桥氏,使得前后端可以在約定接口后實現(xiàn)高效并行開發(fā)温峭。相信這一塊會越做越好。

2字支、前端開發(fā)的復(fù)雜度控制凤藏。這個我深有體會奸忽,在這兩年,我有時候開發(fā)接口揖庄,有時候做前端頁面渲染栗菜,有時候還要增加特效,過分的操作DOM蹄梢,真是讓人力不從心疙筹,幾乎每一個頁面依賴的JS代碼都有上千行代,前端頁面渲染越來越慢禁炒,越來越笨重而咆,還記得上次面試的時候,被問到了如何前端優(yōu)化幕袱,嗯~~~都是淚暴备。

四、前后端分離——Node(目前很爭議们豌,我還沒有切身感受到)

1涯捻、背景

今天,全棧這個時代正在到來玛痊,或者已經(jīng)日益成熟汰瘫,只不過很遺憾的是狂打,我還沒有來的及開發(fā)過這種真正的前后端框架(還好的是我負(fù)責(zé)過公司的幾個微信小程序項目)擂煞,因此只能自己動手了,一方面滿足自己的需要趴乡,另一方面也幫助一部分和我一樣學(xué)習(xí)的对省,或者從后端轉(zhuǎn)前端的小可愛們。

不過還是有很多人不喜歡晾捏,或者不想弄懂這個前后端分離技術(shù)

2蒿涎、代碼

是一種全新的體驗,沒有合適的代碼可以概括

3惦辛、概要說明

image

優(yōu)點

1劳秋、分層開發(fā),職責(zé)劃分更清晰胖齐,nodejs作為前端服務(wù)器玻淑,由前端開發(fā)人員負(fù)責(zé),前端開發(fā)人員不需要知道C#后臺是如何實現(xiàn)的呀伙,也不需要知道API接口是如何實現(xiàn)的补履,我們只需要關(guān)心我們前端的開發(fā)工作,并且管理好nodejs前端服務(wù)器剿另,而后臺開發(fā)人員也不需要考慮如何前端是如何部署的箫锤,他只需要做好自己擅長的部分贬蛙,提供好API接口就可以;

2谚攒、獨特的異步阳准、非阻塞I/O的特點,這也就意味著他特別適合I/O密集型操作馏臭,在處理并發(fā)量比較大的請求上能力比較強溺职,因此,利用它來充當(dāng)前端服務(wù)器位喂,向客戶端提供靜態(tài)文件以及響應(yīng)客戶端的請求浪耘,我覺得這是一個很不錯的選擇。

缺點和挑戰(zhàn)也還是很多

這里我先留下空白塑崖,咱們這一系列講完我再添加七冲,希望那個時候大家都很清晰這個什么是前后端分離:

五、結(jié)語

今天呢规婆,沒有講到代碼澜躺,主要交代了下,未來一段時間我們的講解方向和中心抒蚜,然后簡單說了下web開發(fā)的幾個階段掘鄙,我雖然都親身經(jīng)歷過,不過還是由很多錯誤的認(rèn)知嗡髓,和不通順的想法操漠,希望大家多批評指正,明天正式開始咱們的Vue開篇饿这,Js高級概述浊伙。

六、CODE

https://github.com/anjoy8/Blog.Core 2.1版本

https://gitee.com/laozhangIsPhi/Blog.Core

Blog.Core2.0版本 不更新

https://github.com/anjoy8/Blog.Core2.0

QQ群:
867095512 (blod.core)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末长捧,一起剝皮案震驚了整個濱河市嚣鄙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌串结,老刑警劉巖哑子,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肌割,居然都是意外死亡卧蜓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門声功,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烦却,“玉大人,你說我怎么就攤上這事先巴∑渚簦” “怎么了冒冬?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長摩渺。 經(jīng)常有香客問我简烤,道長,這世上最難降的妖魔是什么摇幻? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任横侦,我火速辦了婚禮,結(jié)果婚禮上绰姻,老公的妹妹穿的比我還像新娘枉侧。我一直安慰自己,他們只是感情好狂芋,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布榨馁。 她就那樣靜靜地躺著,像睡著了一般帜矾。 火紅的嫁衣襯著肌膚如雪翼虫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天屡萤,我揣著相機與錄音珍剑,去河邊找鬼。 笑死死陆,一個胖子當(dāng)著我的面吹牛招拙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翔曲,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼迫像,長吁一口氣:“原來是場噩夢啊……” “哼劈愚!你這毒婦竟也來了瞳遍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤菌羽,失蹤者是張志新(化名)和其女友劉穎掠械,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體注祖,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡猾蒂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了是晨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肚菠。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖罩缴,靈堂內(nèi)的尸體忽然破棺而出蚊逢,到底是詐尸還是另有隱情层扶,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布烙荷,位于F島的核電站镜会,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏终抽。R本人自食惡果不足惜戳表,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昼伴。 院中可真熱鬧匾旭,春花似錦、人聲如沸圃郊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽描沟。三九已至飒泻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吏廉,已是汗流浹背泞遗。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留席覆,地道東北人史辙。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像佩伤,于是被迫代替她去往敵國和親聊倔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容