精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

研究了一下 Webpack 打包原理,順手掙了個 AirPods Pro

開發(fā) 項目管理
Webpack 功能非常強大,底層邏輯比這里說的復(fù)雜多了,我也沒有繼續(xù)深入研究。或許下次碰到問題時又是一次契機呢。

[[383922]]

這些年,Webpack 基本成了前端項目打包構(gòu)建的標(biāo)配。關(guān)于它的原理和用法的文章在網(wǎng)上汗牛充棟,大家或多或少都看過一些。我也一樣,大概了解過它的構(gòu)建過程以及常用 loader 和 plugin 的配置、性能優(yōu)化方法等等,僅限于“面試夠用”的程度。在實際工作中,往往是配置好后就放一邊了,沒有遇到問題是不會再碰它的。

我一直有個習(xí)慣(或者叫毛病),就是不太愿意花時間去研究暫時用不上的技術(shù)。我稱其為“屠龍之技”:學(xué)會了屠龍的技術(shù),可是找不到龍啊。這樣的技術(shù)沒有實際應(yīng)用來強化,過不了多久就會荒廢的。也因為這個,之前面試吃過很多虧,畢竟由于平臺所限,工作中根本接觸不到某些方面的技術(shù)。不過話又說回來,為了面試也要去學(xué),硬著頭皮的那種。

扯遠(yuǎn)了,說回正題。前不久,網(wǎng)上有個哥們通過我的一篇博客找到我,讓我?guī)退鉀Q一個問題。這篇博客是關(guān)于如何在現(xiàn)有 Vue.js 項目里快速實現(xiàn)多語言切換的。他的項目也遇到同樣的問題,但是他不懂代碼,想付費求助。

 

 

按照我的方法,應(yīng)該能很快完成需求。我大概估算了下工作量,報了個價。但是后面了解到的情況讓我大跌眼鏡:他的項目是打包好的,沒有源碼!說原來的開發(fā)不在了,也聯(lián)系不上,找不到源碼。要在沒有源碼的已有項目上加功能,寫代碼這么多年,還是第一次碰到。

我那篇文章的方案,是重寫 Vue.prototype.__patch__ 方法,攔截 DOM 渲染過程,將翻譯后的文本替換上去。面對一坨可讀性極差的壓縮代碼,還怎么寫下去?當(dāng)時他還沒付款,我本打算放棄了。直到晚上睡覺前,這個問題一直盤旋在腦海里,揮之不去。難道我的方案有這么大的局限性?很不服氣啊!

沒想到第二天,突然開竅了。這個問題的核心,不就是從壓縮代碼里找到 Vue 的引用嗎?剩下的邏輯,都可以通過注入自己的 JS 代碼來完成。

明確了這個思路,就開始了壓縮代碼挖掘之旅。我們都知道,Vue 項目在打包構(gòu)建后,會在 HTML 文件里注入幾個 JS 文件,大概像這樣:

 

其中的 vendor.xxx.js 就包含了 Vue.js 框架代碼。但我們知道,這樣構(gòu)建出來的代碼肯定是用了閉包,各個模塊都被作用域屏蔽了,window下是訪問不到這些模塊的。可以試試在控制臺輸入 Vue ,會提示Uncaught ReferenceError: Vue is not defined。

這個時候就需要研究 Webpack 是怎么打包的了。這里的關(guān)鍵在 manifest.js 文件,它是 Webpack 的運行時代碼,定義了一個webpackJsonp函數(shù),代碼簡化后是這樣的:

  1. (function(modules) { 
  2.   window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) { 
  3.     var moduleId, result; 
  4.     for (moduleId in moreModules) { 
  5.       if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { 
  6.         modules[moduleId] = moreModules[moduleId]; 
  7.       } 
  8.     } 
  9.     if (executeModules) { 
  10.       for (i = 0; i < executeModules.length; i++) { 
  11.         result = __webpack_require__(executeModules[i]); 
  12.       } 
  13.     } 
  14.     return result; 
  15.   }; 
  16.   var installedModules = {}; 
  17.  
  18.   function __webpack_require__(moduleId) { 
  19.     if (installedModules[moduleId]) { 
  20.       return installedModules[moduleId].exports; 
  21.     } 
  22.     var module = installedModules[moduleId] = { 
  23.       exports: {} 
  24.     }; 
  25.     modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 
  26.     return module.exports; 
  27.   } 
  28. })([]); 

打包后就是通過這個函數(shù)來加載各個模塊的。因此,只要找到 Vue 這個模塊被打包后的 ID,就能通過它來獲取。再看看vendor.xxx.js這個文件內(nèi)容:

  1. webpackJsonp([38], { 
  2.     "+abY"function(t, e, n) { 
  3.         "use strict"
  4.         n("DmDj")("sup"function(t) { 
  5.             return function() { 
  6.                 return t(this, "sup"""""
  7.             } 
  8.         }) 
  9.     }, 
  10.     "+fX/"function(t, e, n) { 
  11.         var r = n("awYD"
  12.           , i = n("JE6n"
  13.           , o = n("0U5H")("match"); 
  14.         t.exports = function(t) { 
  15.             var e; 
  16.             return r(t) && (void 0 !== (e = t[o]) ? !!e : "RegExp" == i(t)) 
  17.         } 
  18.     }, 
  19.   "IvJb"function(t, e, n) { 
  20.       // 這就是 Vue 框架代碼 
  21.   } 

可以看到各個模塊就是一個個的function。通過 Vue 框架里的一些關(guān)鍵字搜索,找到了 Vue 打包后的 ID 是IvJb。因此只要調(diào)用webpackJsonp函數(shù)就能獲取 Vue變量:

  1. var vue = webpackJsonp([], {}, ['IvJb']); 
  2. var __patch__ = vue.default.prototype.__patch__; 
  3. vue.default.prototype.__patch__ = function () { 
  4. var elm = __patch__.apply(this, arguments); 
  5.   var lang = getUrlParam('lang'
  6.   if (lang) { 
  7.     //翻譯DOM里的文本 
  8.     translate(elm, lang); 
  9.   } 
  10.   return elm; 
  11. }; 

關(guān)鍵問題解決了!通過同樣的辦法,還可以獲取 axios ,把 axios 的baseUrl 改成了完整路徑方便本地調(diào)試。剩下的工作就簡單了,一是多語言文件文字翻譯,那都是體力活,就交給那哥們自己干了。二是加一個語言切換菜單,這個也不難,原生 DOM 操作而已,再稍微調(diào)下樣式就搞定了。

前前后后花了不到一天時間,完成了這個看似不可能的任務(wù)。由此可見,了解工具和框架的底層原理,對于解決特定問題有著決定性的作用。

當(dāng)然,Webpack 功能非常強大,底層邏輯比這里說的復(fù)雜多了,我也沒有繼續(xù)深入研究。或許下次碰到問題時又是一次契機呢。

本文轉(zhuǎn)載自微信公眾號「1024譯站」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系1024譯站公眾號。

 

責(zé)任編輯:武曉燕 來源: 1024譯站
相關(guān)推薦

2021-11-29 08:26:17

Android.OS線程

2021-10-09 18:26:59

二叉樹多叉樹搜索

2022-06-29 10:04:01

PiniaVuex

2021-07-06 07:21:16

Spring 安全平臺

2021-12-15 23:42:56

Webpack原理實踐

2020-06-11 18:06:03

電腦電路板元件

2016-04-15 17:45:59

HPE存儲閃存

2021-04-21 14:19:52

javaignalHandle接口

2020-03-01 13:55:15

datasetsear免費數(shù)據(jù)集2500萬

2023-11-09 16:20:32

Vue.jsReact前端

2017-09-25 09:17:52

美工程序員互聯(lián)網(wǎng)

2019-06-24 08:12:43

無線路由器WiFi芯片

2021-08-22 15:07:29

大數(shù)據(jù)信息安全隱私

2024-10-12 12:30:18

2025-11-17 08:43:00

OpenAI模型視覺

2022-01-17 14:25:14

索引數(shù)據(jù)庫搜索

2024-10-31 13:49:04

2025-06-26 01:25:00

2020-04-15 11:21:49

QQ騰訊

2019-01-15 13:14:03

機器人算法SAC
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品视频在线免费观看 | 国产激情999| 中国美女乱淫免费看视频| 黄毛片在线观看| 国产偷国产偷亚洲高清人白洁| 国产精品久久久久久av福利软件| 中文字幕电影av| 国产 日韩 欧美 综合 一区| 日韩欧美综合在线视频| 制服国产精品| 天天干天天草天天射| 日韩激情av在线| 欧美另类极品videosbest最新版本| 美女黄色一级视频| 欧美日韩卡一| 欧美日韩激情小视频| 亚洲欧美日韩精品久久久| 丰满人妻一区二区三区四区53 | 欧美亚洲国产日韩2020| 免费精品在线视频| 美女毛片一区二区三区四区| 欧美一区二区美女| 日韩视频在线免费看| 中日韩高清电影网| 亚洲国产成人午夜在线一区| 国产精品一区视频网站| 国产精品久久久久久免费免熟 | 国产丰满果冻videossex| 久久久国产亚洲精品| 欧美黑人巨大xxx极品| 超碰人人人人人人人| 亚洲欧洲美洲国产香蕉| 精品日韩在线观看| 九九九久久久久久久| 日韩久久一区二区三区| 精品久久在线播放| 欧美一级免费播放| 欧美性猛片xxxxx免费中国| 国产精品国产自产拍高清av王其| 蜜桃91精品入口| 免费看国产片在线观看| 国产精品66部| 成人在线中文字幕| 91成人在线免费| 免费一级片91| 国产精品av电影| 久久久久久久久久久影院| 国产一二三四在线| 3d动漫一区二区三区在线观看| 色婷婷亚洲婷婷| heyzo国产| 牛牛精品一区二区| 精品久久久久久中文字幕大豆网| cao在线观看| 成人在线高清免费| 亚洲国产aⅴ天堂久久| youjizz.com在线观看| 污污网站在线看| 亚洲综合色在线| 日本黄色片一级片| 岛国av在线网站| 一区二区三区蜜桃| 91亚洲精品国产| 大香伊人久久| 色天使色偷偷av一区二区| 日本激情视频在线| 欧美天堂在线| 91精品国产福利在线观看| 久久久久久久高清| 国产一区二区三区黄网站| 欧美一级视频精品观看| 色诱av手机版| 亲子伦视频一区二区三区| 日韩精品极品在线观看| 人人妻人人藻人人爽欧美一区| 久操精品在线| 中文字幕亚洲一区二区三区| 久久久久久有精品国产| 黄色国产精品视频| 欧美色片在线观看| 欧美日韩五月天| 天天色天天综合网| 加勒比色综合久久久久久久久| 亚洲国产私拍精品国模在线观看| 一级性生活毛片| 日本午夜一区| 欧美黄色免费网站| 成人在线免费看视频| 蜜臀va亚洲va欧美va天堂| 亚洲999一在线观看www| 天堂中文在线资源| 国产精品情趣视频| 青草青青在线视频| 亚洲www啪成人一区二区| 欧美高清视频一二三区| 欧美双性人妖o0| 清纯唯美日韩| 国外成人在线直播| 在线观看免费观看在线| av电影在线观看完整版一区二区| 日韩精品电影网站| jizz一区二区三区| 欧美日韩亚洲综合一区二区三区| 秘密基地免费观看完整版中文| 国产欧美高清视频在线| 欧美第一黄色网| 波多野结衣一二区| caoporn国产精品| 一本一本久久a久久精品综合妖精| 国产丝袜在线播放| 四虎影院观看视频在线观看 | 综合五月激情网| 国产精品毛片| 亚洲一区二区自拍| 国产在线一二三区| 亚洲福利视频导航| 九一精品久久久| 嫩草影视亚洲| 久久免费少妇高潮久久精品99| 中文字幕人成人乱码亚洲电影| av男人天堂一区| 国产一区二区三区在线免费| 深夜视频一区二区| 精品一区二区三区四区| 久久久久久久久久网站| 秋霞成人午夜伦在线观看| 精品九九九九| 欧美bbbxxxxx| 欧美一级理论片| 操她视频在线观看| 秋霞成人午夜伦在线观看| 蜜桃av噜噜一区二区三| h片在线观看下载| 日韩欧美精品三级| 精品自拍偷拍视频| 另类专区欧美蜜桃臀第一页| 日韩av影视| 伊人成综合网站| 亚洲精品国产免费| 国产精品热视频| 国产真人真事毛片| 国产精品综合av一区二区国产馆| 午夜一区二区三视频在线观看| 午夜影院在线观看国产主播| 亚洲成成品网站| 久久亚洲国产成人精品性色| 国产精品小仙女| 久久视频免费在线| 欧美9999| 欧美猛交免费看| 精品国产九九九| 亚洲乱码日产精品bd| 三级av免费看| 91精品啪在线观看国产18| 91久久精品一区| 黄色在线免费看| 日韩午夜激情视频| 久久久久久久中文字幕| 丁香婷婷综合色啪| 黄页免费在线观看视频| 欧美黄色影院| 日韩av123| 大地资源中文在线观看免费版| 欧美在线观看视频一区二区| 亚洲欧美va天堂人熟伦| 蜜臀av一区二区三区| 天天综合中文字幕| 日韩高清一区| 91精品国产91久久| 久草视频在线看| 欧美亚洲自拍偷拍| 亚洲人成无码网站久久99热国产 | 久久久999久久久| 国产欧美日韩不卡| 欧美性受xxxxxx黑人xyx性爽| 欧美有码视频| 精品国产一区二区三区四区vr| 日韩激情电影免费看| 亚洲性生活视频| 国产精品一区二区三区在线免费观看| 亚洲精品乱码久久久久久| 美女网站视频在线观看| 久久久久国产精品一区三寸| 亚洲一卡二卡| 91麻豆精品激情在线观看最新| 97超级碰碰碰久久久| 国产三级在线| 日韩亚洲欧美在线| 制服.丝袜.亚洲.中文.综合懂色| 国产视频一区在线观看 | 成人综合在线观看| 亚洲爆乳无码专区| 成人一级毛片| 国产乱码精品一区二区三区中文 | 色综合天天视频在线观看| 久久久精品成人| 福利视频网站一区二区三区| 爱福利视频一区二区| 欧美xxx黑人xxx水蜜桃| 美女国产精品| 日本一区免费观看| 亚洲一区网址| 国产精品色视频| 国产va在线视频| 久久精视频免费在线久久完整在线看 | 国语精品一区| 日本一区网站| 国产欧美三级电影| 成人动漫网站在线观看| 性欧美xxx69hd高清| 欧美成人午夜视频| www日韩tube| 亚洲精品狠狠操| 99久久婷婷国产一区二区三区| 一本久久综合亚洲鲁鲁五月天| 欧美爱爱免费视频| 国产婷婷色一区二区三区| 国产免费无码一区二区| 九色综合国产一区二区三区| 日韩网址在线观看| 亚洲性图久久| 黄色网zhan| 色777狠狠狠综合伊人| 久久久久资源| 极品尤物一区| 国产精品国产亚洲精品看不卡15| 国产高清亚洲| 国产精品亚洲自拍| 久久久一本精品| 欧美综合第一页| av免费在线视| 欧美高清性猛交| 中文字幕免费高清电视剧网站在线观看 | 亚洲h在线观看| 四虎免费在线视频| 亚洲人亚洲人成电影网站色| 9.1片黄在线观看| 国产三级久久久| 国产特级黄色录像| 91老司机福利 在线| 久久人人妻人人人人妻性色av| 国产99久久久国产精品潘金| 麻豆传媒在线看| 国产精品一区二区三区网站| 三级黄色片免费看| 国产综合色精品一区二区三区| 日本在线播放一区二区| 麻豆91小视频| 亚洲理论中文字幕| 久久99精品久久久久久| 视频免费1区二区三区| 国产在线不卡一区| 青娱乐国产精品视频| 国产盗摄视频一区二区三区| 国产亚洲色婷婷久久| 国产成人午夜精品5599| 岛国精品一区二区三区| 暴力调教一区二区三区| xxxx黄色片| 久久久久国产成人精品亚洲午夜| 黑人巨大精品欧美| 欧美国产精品一区二区| 日本在线观看网址| 亚洲色图一区二区三区| 久久99久久98精品免观看软件| 亚洲国产成人高清精品| 日本午夜小视频| 色悠悠久久综合| 在线免费av网| 日韩三级视频在线观看| 色屁屁草草影院ccyycom| 亚洲欧美日韩久久久久久| 97电影在线观看| 久久的精品视频| 爱看av在线| 国产999精品视频| 青青在线精品| 国产精品免费视频一区二区| 欧美人妖视频| 一区二区冒白浆视频| 欧美+日本+国产+在线a∨观看| 无码粉嫩虎白一线天在线观看| 欧美专区18| 一级黄色在线播放| 成人国产视频在线观看| 一区二区黄色片| 亚洲免费在线观看视频| 日韩欧美大片在线观看| 欧洲一区二区av| 亚洲成a人片在线| 亚洲欧洲在线观看| 中文在线一区二区三区| 精品国产精品国产偷麻豆| 天天综合中文字幕| 国产精品色网| 久久久久久国产精品日本| 99国产精品视频免费观看| 国产一区在线观看免费| 亚洲第一福利一区| 91精东传媒理伦片在线观看| 亚洲第一精品电影| 麻豆av免费在线观看| 91chinesevideo永久地址| 少妇高潮一区二区三区99| 国产自产精品| 中文字幕午夜精品一区二区三区| 日韩人妻精品无码一区二区三区| 国产一区二区伦理片| a毛片毛片av永久免费| 亚洲一区二区在线免费看| av首页在线观看| 亚洲国产美女久久久久| 国产三级在线播放| 国产精品 欧美在线| 盗摄系列偷拍视频精品tp| 在线视频一区观看| 日韩黄色一级片| 香蕉视频黄色在线观看| 亚洲制服丝袜在线| 亚洲综合精品在线| 国产亚洲欧美日韩精品| 2020国产在线| 成人网欧美在线视频| 青青草91久久久久久久久| 国产日韩一区二区在线| 不卡的电视剧免费网站有什么| 一级性生活免费视频| 欧美色倩网站大全免费| 男人的天堂在线| 2021久久精品国产99国产精品| 欧美一级大片在线视频| 伊人久久大香线蕉成人综合网| 久久亚洲风情| 久久精品国产亚洲av麻豆| 五月天精品一区二区三区| 性猛交xxxx乱大交孕妇印度| 久久久精品亚洲| 91成人小视频| 正在播放精油久久| 久久福利视频一区二区| 国产精品免费无码| 欧亚一区二区三区| 高清日韩av电影| 国产精品成久久久久三级| 国产一区二区精品久| 99re在线视频免费观看| 久久婷婷国产综合国色天香| 国产九色在线播放九色| 日韩成人在线免费观看| 桃色av一区二区| 欧美日韩视频在线一区二区观看视频 | 国产香蕉精品视频一区二区三区| 欧美gv在线观看| 久久久综合亚洲91久久98| 国产一区二区三区的电影| 女尊高h男高潮呻吟| 精品欧美一区二区三区| 你懂的视频在线| 国产精品久久久久免费a∨大胸| av亚洲免费| 亚洲欧美日韩精品一区| 亚洲欧美电影院| 丰满人妻一区二区三区免费视频| 国内精品中文字幕| 亚洲黄页网站| 奇米影音第四色| 亚洲日本护士毛茸茸| 高潮一区二区三区乱码| 97碰在线观看| 国产欧美日韩影院| 午夜剧场高清版免费观看| 亚洲美女屁股眼交3| 蜜桃av噜噜一区二区三区麻豆| 午夜精品久久久久久久99热浪潮| 少妇高潮一区二区三区| 宅男噜噜噜66国产免费观看| 成人欧美一区二区三区黑人麻豆| 精品久久久无码中文字幕| 69久久夜色精品国产7777 | 今天免费高清在线观看国语| 成熟亚洲日本毛茸茸凸凹| 欧美精品韩国精品| 日韩亚洲成人av在线| 北条麻妃一区二区三区在线观看 | 久久精品72免费观看| 国产1区2区3区4区| 亚洲国产精品成人av| 巨胸喷奶水www久久久免费动漫| 影音先锋男人的网站| a级高清视频欧美日韩| 国内av在线播放| 久久久久久久久久久免费 | 在线中文字幕日韩| 日韩免费成人| 欧美xxxxx在线视频| 亚洲视频一区在线观看| 青青草视频免费在线观看| 国产欧美日韩中文字幕| 国产欧美激情| 少妇人妻丰满做爰xxx|