Vue.js为何不支持templateUrl形式

这篇文章是翻译的Vue.js的官方blog,末了加了些本身的明白。

原文地点:Why Vue.js doesn’t support templateURL

许多Vue的新手,特别是运用过Angular的都邑问“我能不能用 templateURL”,由于回复了太屡次了,所以作者决议记下来。

Angular的天下里,templateURL 或许 ng-include 许可运用者在运行时动态的加载长途模板文件,这个看起来很轻易,作为一个自带功用,然则让我们来从新审阅下这个功用。

起首,它许可我们能够编写一个星散的html文件作为模板,这模样我们就能够在编辑的时刻看到准确的语法高亮,这也是许多开辟者喜好的缘由(注:我以为这是由于如今的人愈来愈懒,愈来愈依靠IDE的缘由)。然则星散你的js和html代码真的是个好主意么?在Vue.js的组件中,js和html自然紧耦合,事实上,这些代码在一个文件更简朴易懂。在2个文件中往返切换上下文逻辑实际上让开辟者更不爽。在vue的观点里,组件才是vue.js的基础构建单元,并不是模板文件。每一个vue.js的模板都伴随着他的好基友js,星散他们太过于残忍了。

其次,由于templateURL是在运行时经由过程ajax的体式格局加载模板,不须要构建步骤为了你星散的文件。开辟的时刻,这很爽,然则上线布置的时刻,你就麻烦了。在HTTP2.0没有大面积支撑前,HTTP的要求数仍然是页面加载的最关键因素。设想一下,在你的网站中,每一个组件都是用templateURL,那末页面出来前,你能够须要加载几十个HTTP要求。能够你并不知道,大多数的浏览器是限定统一域名的并发要求数目的。当你凌驾这个限额的时刻,你页面的初始衬着时候就得守候每次要求的返回。固然,有东西能够协助你提早注册你一切的模板,然则这就多了一个构建步骤,事实上,这就是大型网站的必然趋势。

那末,在没有templateURL的情况下,我们怎样处置惩罚开辟环境题目呢?
在js内里拼接字符串是很烂的做法,运用 <script type=”x/template”>这类伪模板也不咋样。那末,如今是时刻提拔妙技,运用像Webpack或许Browserify这类盛行的模块构建器了。假如之前没有运用过,能够有点望而生畏,然则置信我,这会有一个质的奔腾。关于大型网站和体系来讲,恰当的模块化很必要。更主要的是,你能够编写Vue组件在一个文件中,再加上语法高亮,自定义的预处置惩罚器,热加载,ES6,内置css,自动前置。能够让开辟者进步10倍效力。

末了,Vue还能懒加载你的组件,加上运用wabpack异常轻易,只管这是为了处理一个问—构建页面文件过于巨大,初始化比较慢,所以你最好照样支解开来比较好。

扬弃template,拥抱组件天下吧!!

以上是原文的翻译,并不是完整直译,有许多本身的言语,也许意义雷同,谅解我的文彩不可。

个人以为,Vue的组件头脑跟React类似,把许多东西放在了js(这里是.vue文件)中,这类做法是把许多紧耦合的东西集合在一起治理,把本来支解开的css,html,js合成在一起,这个很像许多年的做法,所以很赞同玉伯说的,看起来前端是在原地打转了一圈,开辟形式回到了夙昔的模样,然则已螺旋上升了哦,一切都在晋级。

经由过程近来的运用来看,这类component的体式格局很轻易,自然帮你做相识耦的星散,固然你须要转化本身的头脑形式,不能在用jquery的操纵DOM体式格局,同时和Angular也有许多区分,Vue并不是一个框架,而是更像一个类库,如许很天真,固然也会有人运用异常hack的体式格局来编写代码,能够会很蛋疼,这就须要本身注重了,关于团队而言,能够很好的积聚种种组件,同时功用切分,协作起来越发轻易,就看团队对Vue的明白程度了。

迎接人人交换相干手艺, 假如对Vue感兴趣,能够加QQ群: 364912432

    原文作者:乖小鬼YQ
    原文地址: https://segmentfault.com/a/1190000004174940
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞