摘要:首先,它允許我們能夠編寫一個(gè)分離的文件作為模板,這樣子我們就能在編輯的時(shí)候看到正確的語法高亮,這也是很多開發(fā)者喜歡的原因注我覺得這是因?yàn)楝F(xiàn)在的人越來越懶,越來越依賴的原因。
這篇文章是翻譯的Vue.js的官方blog,最后加了些自己的理解。
原文地址:Why Vue.js doesn"t support templateURL
很多Vue的新手,特別是使用過Angular的都會(huì)問“我能不能用 templateURL”,由于回答了太多次了,所以作者決定記下來。
Angular的世界里,templateURL 或者 ng-include 允許使用者在運(yùn)行時(shí)動(dòng)態(tài)的加載遠(yuǎn)程模板文件,這個(gè)看起來很方便,作為一個(gè)自帶功能,但是讓我們來重新審視下這個(gè)功能。
首先,它允許我們能夠編寫一個(gè)分離的html文件作為模板,這樣子我們就能在編輯的時(shí)候看到正確的語法高亮,這也是很多開發(fā)者喜歡的原因(注:我覺得這是因?yàn)楝F(xiàn)在的人越來越懶,越來越依賴IDE的原因)。但是分離你的js和html代碼真的是個(gè)好主意么?在Vue.js的組件中,js和html天然緊耦合,事實(shí)上,這些代碼在一個(gè)文件更簡單易懂。在2個(gè)文件中來回切換上下文邏輯實(shí)際上讓開發(fā)者更不爽。在vue的概念里,組件才是vue.js的基本構(gòu)建單位,并不是模板文件。每一個(gè)vue.js的模板都伴隨著他的好基友js,分離他們太過于殘忍了。
其次,因?yàn)?strong>templateURL是在運(yùn)行時(shí)通過ajax的方式加載模板,不需要構(gòu)建步驟為了你分離的文件。開發(fā)的時(shí)候,這很爽,但是上線部署的時(shí)候,你就麻煩了。在HTTP2.0沒有大面積支持前,HTTP的請(qǐng)求數(shù)仍然是頁面加載的最關(guān)鍵因素。想象一下,在你的網(wǎng)站中,每個(gè)組件都是用templateURL,那么頁面出來前,你可能需要加載幾十個(gè)HTTP請(qǐng)求??赡苣悴⒉恢?,大多數(shù)的瀏覽器是限制同一域名的并發(fā)請(qǐng)求數(shù)量的。當(dāng)你超過這個(gè)限額的時(shí)候,你頁面的初始渲染時(shí)間就得等待每次請(qǐng)求的返回。當(dāng)然,有工具可以幫助你提前注冊(cè)你所有的模板,但是這就多了一個(gè)構(gòu)建步驟,事實(shí)上,這就是大型網(wǎng)站的必然趨勢(shì)。
那么,在沒有templateURL的情況下,我們?cè)趺刺幚黹_發(fā)環(huán)境問題呢?
在js里面拼接字符串是很爛的做法,使用 這種偽模板也不咋樣。那么,現(xiàn)在是時(shí)候提升技能,使用像Webpack或者Browserify這種流行的模塊構(gòu)建器了。如果以前沒有使用過,可能有點(diǎn)望而卻步,但是相信我,這會(huì)有一個(gè)質(zhì)的飛躍。對(duì)于大型網(wǎng)站和系統(tǒng)來說,適當(dāng)?shù)哪K化很必要。更重要的是,你可以編寫Vue組件在一個(gè)文件中,再加上語法高亮,自定義的預(yù)處理器,熱加載,ES6,內(nèi)置css,自動(dòng)前置??梢宰岄_發(fā)者提高10倍效率。
最后,Vue還能懶加載你的組件,加上使用wabpack非常容易,盡管這是為了解決一個(gè)問---構(gòu)建頁面文件過于龐大,初始化比較慢,所以你最好還是分割開來比較好。
拋棄template,擁抱組件世界吧?。?/p>
以上是原文的翻譯,并非完全直譯,有很多自己的語言,大概意思相同,原諒我的文采不行。
個(gè)人覺得,Vue的組件思想跟React相似,把很多東西放在了js(這里是.vue文件)中,這種做法是把很多緊耦合的東西集中在一起管理,把原來分割開的css,html,js合成在一起,這個(gè)很像很多年的做法,所以很同意玉伯說的,看起來前端是在原地打轉(zhuǎn)了一圈,開發(fā)模式回到了從前的樣子,但是已經(jīng)螺旋上升了哦,一切都在升級(jí)。
通過最近的使用來看,這種component的方式很方便,天然幫你做了解耦的分離,當(dāng)然你需要轉(zhuǎn)化自己的思維模式,不能在用jquery的操作DOM方式,同時(shí)和Angular也有很多區(qū)別,Vue并非一個(gè)框架,而是更像一個(gè)類庫,這樣很靈活,當(dāng)然也會(huì)有人使用非常hack的方式來編寫代碼,可能會(huì)很蛋疼,這就需要自己注意了,對(duì)于團(tuán)隊(duì)而言,可以很好的積累各種組件,同時(shí)功能切分,合作起來更加容易,就看團(tuán)隊(duì)對(duì)Vue的理解程度了。
歡迎大家交流相關(guān)技術(shù), 如果對(duì)Vue感興趣,可以加QQ群: 364912432
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78344.html
摘要:中文官網(wǎng)英文官網(wǎng)組織發(fā)出一個(gè)問題之后,不要暫時(shí)的離開電腦,如果沒有把握先不要提問。珍惜每一次提問,感恩每一次反饋,每個(gè)人工作還是業(yè)余之外抽出的時(shí)間有限,充分準(zhǔn)備好應(yīng)有的資源之后再發(fā)問,有利于問題能夠高效質(zhì)量地得到解決。 Vue.js資源分享 更多資源請(qǐng)Star:https://github.com/maidishike... 文章轉(zhuǎn)自:https://github.com/maid...
摘要:來源于社區(qū),時(shí)至今日已經(jīng)基本成為的標(biāo)配了。部分很簡單,要根據(jù)傳入的執(zhí)行不同的操作。當(dāng)性能遇到瓶頸時(shí)基本不會(huì)遇到,可以更改,保證傳入數(shù)據(jù)來提升性能。當(dāng)不再能滿足程序開發(fā)的要求時(shí),可以嘗試使用進(jìn)行函數(shù)式編程。 Immutable & Redux in Angular Way 寫在前面 AngularJS 1.x版本作為上一代MVVM的框架取得了巨大的成功,現(xiàn)在一提到Angular,哪怕是已...
摘要:使用開發(fā),很重要的一步是需要開發(fā)自定義的指令。接下來分幾個(gè)步驟記錄如何開發(fā)一個(gè)自定義的指令。對(duì)這個(gè)元素及其子元素進(jìn)行變形之類的操作是安全的。鏈接函數(shù)鏈接函數(shù)負(fù)責(zé)注冊(cè)事件和更新。說明和是指令的關(guān)鍵部分,留在下一章中詳細(xì)討論。 使用Angularjs開發(fā),很重要的一步是需要開發(fā)自定義的指令(custom directives)。接下來分幾個(gè)步驟記錄如何開發(fā)一個(gè)自定義的指令。 目錄: 指令...
摘要:官方支持微軟出品,是的超集,是的強(qiáng)類型版本作為首選編程語言,使得開發(fā)腳本語言的一些問題可以更早更方便的找到。第一個(gè)組件那么我們來為我們的增加一個(gè)吧,在命令行窗口輸入。引導(dǎo)過程通過在中引導(dǎo)來啟動(dòng)應(yīng)用。它們的核心就是。 第一節(jié):Angular 2.0 從0到1 (一)第二節(jié):Angular 2.0 從0到1 (二)第三節(jié):Angular 2.0 從0到1 (三) 第一章:認(rèn)識(shí)Angular...
摘要:控制器顯示與隱藏時(shí)的動(dòng)畫,使用中的服務(wù)到此,導(dǎo)航和一個(gè)功能演示的頁面就已經(jīng)實(shí)現(xiàn)了。由于大部分是靜態(tài)的,沒有動(dòng)態(tài),所以只需要將官方的演示照搬即可。更希望能得到您的幫助與指正。 引子 自從開通了sf的文章專欄,總想在這個(gè)專欄里寫些自己的東西。不久前,微信推出了自己的一套UI,我看有很多開發(fā)者將其套用在了一些前端框架中,比如react、vue。最近自己在學(xué)習(xí)Angularjs,所以,也想把這...
閱讀 3386·2021-11-10 11:36
閱讀 3278·2021-10-08 10:21
閱讀 2907·2021-09-29 09:35
閱讀 2455·2021-09-22 16:06
閱讀 4035·2021-09-09 09:33
閱讀 1359·2019-08-30 15:44
閱讀 3203·2019-08-30 10:59
閱讀 3015·2019-08-29 15:32