<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        吐槽一下vue-loader_html/css

        來源:懂視網 責編:小采 時間:2020-11-27 16:39:11
        文檔

        吐槽一下vue-loader_html/css

        吐槽一下vue-loader_html/css_WEB-ITnose:前幾天在 如何創建一個webpack loader中提到我要吐槽一下vue-loader,于是今天我就來吐槽了 先來看一段webpack官網的定義: do only a single taskLoaders can be chained. Create loaders for every step, inste
        推薦度:
        導讀吐槽一下vue-loader_html/css_WEB-ITnose:前幾天在 如何創建一個webpack loader中提到我要吐槽一下vue-loader,于是今天我就來吐槽了 先來看一段webpack官網的定義: do only a single taskLoaders can be chained. Create loaders for every step, inste

        前幾天在 如何創建一個webpack loader中提到我要吐槽一下vue-loader,于是今天我就來吐槽了

        先來看一段webpack官網的定義:

        do only a single taskLoaders can be chained. Create loaders for every step, instead of a loader that does everything at once.

        This also means they should not convert to JavaScript if not necessary.

        Example: Render HTML from a template file by applying the query parameters

        I could write a loader that compiles the template from source, execute it and return a module that exports a string containing the HTML code. This is bad.

        啥意思?就是官方推薦一個loader應該只做一件事情,如果對于一個文件有多次處理,可以把這些處理放在不同的loader里面進行鏈式調用。比如我們如果要寫less,那么我們的webpack配置文件中應該會出現 style!css!less這代表我們對于一個less文件,首先要將less處理成css,然后再有css-loader進行一些處理成js可用的css,最后通過style-loader統一拋出去。

        分工明確吧?這樣的好處就是style-loader和css-loader可以復用,sass,stylus都可以這么用。

        那么vue-loader做了什么呢?代碼我就不貼了,直接說原理吧

        首先vue-loader要做的是loader一個.vue文件,這個文件中會包含html,js,css三個部分,最終的處理結果應該是css處理通過style-loader拋出去的方式,html處理成字符串,js處理成一個vue-component并require之前的html當做自己的模板,所以最終一個.vue文件最終會變成三個module

        越是尤大神就在vue-loader里面做了這么一件事,vue-loader的最終產出如下:

        require("!!vue-style-loader!css-loader?sourceMap!./../node_modules/vue-loader/lib/style-rewriter.js!sass!./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./button.vue")__vue_script__ = require("!!babel-loader?presets[]=es2015&plugins[]=transform-runtime&comments=false!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./button.vue")if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] example/button.vue: named exports in *.vue files are ignored.")}__vue_template__ = require("!!vue-html-loader!./../node_modules/vue-loader/lib/selector.js?type=template&index=0!./button.vue")module.exports = __vue_script__ || {}if (module.exports.__esModule) module.exports = module.exports.defaultif (__vue_template__) {(typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__}if (module.hot) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), true) if (!hotAPI.compatible) return var id = "/Users/Jokcy/workspace/office/x-vue/example/button.vue"

        其中有三個require,這幾個require里面的內容前面各不相同,但是最后卻有一些類似:

        !./../node_modules/vue-loader/lib/selector.js?type=style&index=0!./button.vue!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./button.vue!./../node_modules/vue-loader/lib/selector.js?type=script&index=0!./button.vue

        是的,都是通過vue-loader里面的一個selector.js去loader同一個.vue文件,也就是vue-loader正在loader的文件

        所以:vue-loader根本沒有處理.vue文件里面的內容!!!根本沒有!他只是告訴你應該尤其他的方式來loader來處理這個文件,而且一次來還是三個(你考慮過.vue文件的感受么!!!)

        可能到這里你們還沒覺得這有什么不對。那我就來扯一扯

        首先這個之前webpack官方的建議就不一致,vue-loader不能進行鏈式調用,因為他不接受在vue-loader之前處理過的內容(因為最終selector.js還是會重新去讀一遍源文件),同時你也不能再vue-loader之后去修改一些內容(因為他暴露出來的內容跟原內容沒半毛錢關系)。所以vue-loader是一個獨立的個體,我們無法對其進行擴展,這導致我們失去了很多具有想象力的做法(比如我要做的就是對特定的.vue文件進行一些處理,自動生成文檔),這樣的做法讓vue-loader顯得有點hack,同時我們也要考慮這樣的做法對未來是否真的做好了準備。

        最近這半年進場看到尤大推廣他的vue,并經常跟react比較,甚至從某些方面給人感覺vue相較react還有挺大的優越性。其實沒必要這樣做,現在的vue跟react根本沒有可比性,vue目前的生態和react的生態相比簡直就跟清朝人民見了美帝的軍艦一樣,這不是你一個人在四處游說vue的好處能抵消的。我并不是說vue不好,我現在在用vue做項目,目前一個vue的組件庫也正在建立中,可能馬上回開源,但目前來說,vue真的沒有react好。

        但不管怎樣,希望尤大繼續努力,可能多發展一下社區的力量,壯大一下vue的生態圈,生態圈壯大了,才能有vue更好的發展。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        吐槽一下vue-loader_html/css

        吐槽一下vue-loader_html/css_WEB-ITnose:前幾天在 如何創建一個webpack loader中提到我要吐槽一下vue-loader,于是今天我就來吐槽了 先來看一段webpack官網的定義: do only a single taskLoaders can be chained. Create loaders for every step, inste
        推薦度:
        標簽: VUE lo html
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲中文字幕无码爆乳app| 亚洲AV日韩AV天堂一区二区三区| 亚洲国产av高清无码| 久久午夜羞羞影院免费观看| 国产成人亚洲精品青草天美| 久久免费精品视频| 亚洲av色福利天堂| 91福利视频免费| 亚洲午夜久久久精品电影院| 国产精品入口麻豆免费观看| 亚洲国产精品线观看不卡 | 手机看片国产免费永久| 精品亚洲成α人无码成α在线观看| 日韩毛片免费一二三| 亚洲人成色77777在线观看大| 精品无码国产污污污免费网站国产| 亚洲欧洲日产国码av系列天堂| 成人久久免费网站| 亚洲制服中文字幕第一区| 成人女人A级毛片免费软件 | 成人免费夜片在线观看| 亚洲色偷拍另类无码专区| 日韩在线永久免费播放| 亚洲AV综合色区无码二区爱AV| 全免费A级毛片免费看网站| 九九全国免费视频| 亚洲高清视频免费| 国产性生交xxxxx免费| a级成人免费毛片完整版| 亚洲最新在线视频| 亚洲成a人片在线观看老师| a级午夜毛片免费一区二区| 国产成人亚洲合集青青草原精品 | 亚洲毛片αv无线播放一区| 国产精品久久永久免费| 日韩免费高清一级毛片| 亚洲av不卡一区二区三区| 免费黄色网址入口| 免费A级毛片无码A∨| 亚洲av乱码一区二区三区按摩 | 久久免费美女视频|