精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

国产亚洲欧美日韩精品一区二区三区| www.成人免费视频| 日韩免费一区| 日韩精品专区在线影院重磅| cao在线观看| 国产中文字幕在线看| 麻豆精品新av中文字幕| 欧美精品手机在线| 色欲av无码一区二区三区| 亚洲天堂1区| 亚洲国产色一区| 三级三级久久三级久久18| 精品久久久久成人码免费动漫| 国产精品久久久久9999高清| www.亚洲免费视频| 变态另类丨国产精品| 日韩午夜视频在线| 婷婷开心激情综合| 美女在线免费视频| 国产视频网站在线| 成人精品鲁一区一区二区| 国产精品久久久久久久久借妻| 久久久综合久久| 欧美成免费一区二区视频| 亚洲国产一区二区三区四区| 加勒比av中文字幕| 毛片无码国产| 精品magnet| 久久综合亚洲精品| 色网站免费在线观看| 久久在线观看免费| 国产精品久久7| 国产情侣自拍小视频| 丝袜脚交一区二区| 2019中文字幕在线免费观看| 青娱乐国产在线| 色婷婷色综合| 夜夜嗨av色综合久久久综合网| 扒开伸进免费视频| 深夜福利一区| 91精品在线免费观看| 少妇人妻互换不带套| 激情视频网站在线播放色| 亚洲精品成人少妇| 99亚洲精品视频| 免费黄色电影在线观看| 欧美国产综合一区二区| 欧美三日本三级少妇三99| 日本在线一二三| 91丝袜美腿高跟国产极品老师 | 日本大胆人体视频| 麻豆传媒在线免费看| 国产精品美女一区二区| 日韩高清dvd| 激情福利在线| 国产欧美综合色| 日韩在线第一区| 超碰免费97在线观看| 国产女主播一区| 亚洲巨乳在线观看| 黄色网址在线免费| 亚洲精品日韩一| 欧美亚洲色图视频| 操人在线观看| 欧美性xxxx极品hd欧美风情| 亚洲国产精品久久久久婷蜜芽| 英国三级经典在线观看| 日韩欧美一区二区三区久久| 大香煮伊手机一区| 日韩成人综合网| 欧美一区二区三区啪啪| 成人免费播放视频| 精品福利一区| 亚洲色图13p| 特黄一区二区三区| 欧美一区二区| 亚州成人av在线| 激情五月婷婷网| 精品系列免费在线观看| 96久久精品| 天天干天天做天天操| 久久精品在这里| 天堂v在线视频| 成年网站在线视频网站| 欧美性生交大片免费| 一级片视频免费观看| 一区二区三区四区视频免费观看| 亚洲成人黄色网| 黄免费在线观看| 在线观看免费一区二区| 久久久久久久久久婷婷| 黄色av一级片| 国产盗摄视频一区二区三区| 久久99精品久久久久久青青日本| av在线第一页| 亚洲午夜国产一区99re久久| 熟女少妇精品一区二区| 激情视频亚洲| 亚洲深夜福利在线| 精品99久久久久成人网站免费| av成人国产| 成人av色在线观看| 色就是色亚洲色图| 亚洲色图欧美在线| 四虎永久在线精品无码视频| 精品视频91| 亚洲人成免费电影| 久久黄色免费网站| 美日韩一级片在线观看| 国产在线精品一区二区中文| 日本在线人成| 色婷婷综合久久久| 91精产国品一二三| 欧美国产一级| 国产精品久久久91| 色吊丝在线永久观看最新版本| 亚洲视频一二三区| 美女网站免费观看视频| 久久大胆人体视频| 九九热精品视频国产| 国产精品露脸视频| 久久久久久一二三区| 亚洲国产精品无码av| 日韩一区二区三区四区五区| 亚洲欧美另类国产| 日本午夜精品理论片a级app发布| 国内精品在线播放| 色噜噜一区二区| 欧美xxx性| 亚洲精品wwww| 伊人国产在线观看| 国产精品一区二区黑丝| 中文字幕久精品免| 福利一区二区三区视频在线观看| 亚洲欧美国产精品专区久久| 91看片在线播放| 国产99久久久国产精品| 欧美 国产 精品| 色综合.com| 日韩中文字幕在线免费观看| 免费观看日批视频| 久久久亚洲综合| 黄色免费视频大全| 日韩丝袜视频| 琪琪亚洲精品午夜在线| 五月天婷婷视频| 大桥未久av一区二区三区| 日本三级日本三级日本三级极| 欧美一区二区三区另类| www国产亚洲精品| 日本乱理伦在线| 欧美大片一区二区| 精品无码黑人又粗又大又长| 国产91丝袜在线播放0| 欧美视频在线第一页| 五月亚洲婷婷| 高清在线视频日韩欧美| 日韩中文字幕观看| 欧美视频在线免费看| 国产手机在线观看| 日本aⅴ免费视频一区二区三区 | 羞羞答答成人影院www| 成人h猎奇视频网站| 免费日本一区二区三区视频| 日韩一卡二卡三卡四卡| 久久免费小视频| www.亚洲国产| 精品久久久久久无码国产| 成人高清av| 亚洲最大成人在线| av漫画网站在线观看| 亚洲免费伊人电影在线观看av| 在线免费观看国产精品| 国产精品久久久久一区 | 91精品国产色综合久久不卡粉嫩| 美女少妇精品视频| 天堂av资源在线| 欧洲精品在线观看| 欧美日韩午夜视频| av不卡免费在线观看| 熟妇人妻无乱码中文字幕真矢织江| 波多野结衣一区| av免费观看久久| 国产精品专区免费| 久久精品精品电影网| 四虎精品一区二区三区| 在线观看一区二区视频| 老妇女50岁三级| 久久免费视频一区| 91性高潮久久久久久久| 午夜亚洲影视| 欧美a级黄色大片| 亚洲婷婷伊人| 999视频在线观看| 欧亚一区二区| 97婷婷大伊香蕉精品视频| lutube成人福利在线观看| 精品精品欲导航| 国产精品成人无码| 亚洲成在人线在线播放| 99国产精品无码| 99re免费视频精品全部| 在线免费看污网站| 新67194成人永久网站| 五月天在线免费视频| 精品一区在线| 国产伦精品一区二区三区照片91| 国产福利91精品一区二区| 97欧美精品一区二区三区| 在线日本中文字幕| 亚洲精品国产精品乱码不99按摩| 这里只有精品9| 欧美午夜片在线免费观看| 69av视频在线| 国产精品国产三级国产三级人妇| 一级国产黄色片| 国产成人免费视频| 手机av在线免费| 日韩av一级电影| 岳毛多又紧做起爽| 激情五月***国产精品| 免费看av软件| 日韩精品中文字幕第1页| 久久久久久久免费| 国产精品nxnn| 99国精产品一二二线| 亚洲日本中文| 国产一区二中文字幕在线看| 婷婷激情一区| 欧美在线激情视频| 高清视频在线观看三级| 精品中文字幕在线| 91高清在线观看视频| 久久久999国产| 日韩黄色影院| 色婷婷**av毛片一区| 在线观看av的网站| 中文字幕在线精品| av女优在线| 一区二区三区视频观看| 毛片在线免费| 亚洲欧美资源在线| 黄色影院在线播放| 亚洲天堂影视av| 国产区视频在线播放| 国产亚洲一级高清| 国产福利电影在线| 在线观看欧美成人| 91精彩视频在线观看| 国产亚洲一区精品| 尤物在线视频| 久久精品国产清自在天天线 | 亚洲日本乱码在线观看| 暗呦丨小u女国产精品| 亚洲免费毛片网站| 久草资源在线视频| 亚洲成人av资源| 六月丁香激情综合| 欧美午夜不卡视频| 国产乱人乱偷精品视频| 欧美日韩日日摸| 国产片在线播放| 亚洲第一区在线| 欧美日韩在线精品一区二区三区激情综 | 午夜精品中文字幕| 国产一区二区三区久久久| 黑人巨大猛交丰满少妇| 不卡电影一区二区三区| 亚洲第一黄色网址| 日本一区二区免费在线 | 欧美91福利在线观看| 黄色一级片黄色| 亚洲欧美日本国产专区一区| 丝袜制服一区二区三区| 韩国一区二区三区| 色嗨嗨av一区二区三区| 三级在线观看免费大全| 亚洲综合图片区| 亚洲欧美偷拍一区| 69久久夜色精品国产69蝌蚪网| 亚洲国产精品久久人人爱潘金莲| 亚洲精品二三区| 日本a在线播放| 韩国精品久久久999| 日韩精品99| 成人在线观看视频网站| 伦理一区二区| 一区二区三区四区欧美日韩| 亚洲午夜精品久久久久久app| 凹凸日日摸日日碰夜夜爽1| 韩国一区二区视频| 国产特级黄色录像| 依依成人综合视频| 国产成人无码一区二区在线播放| 91精品免费观看| 日韩福利一区二区| 久久999免费视频| 日韩中文视频| 国产高清一区视频| 色狮一区二区三区四区视频| 日本一道本久久| 国产一区三区三区| 夜夜春很很躁夜夜躁| 九七电影院97理论片久久tvb| 欧美黑人xxxx| 天然素人一区二区视频| 国产精品一区二区三区不卡| 久久中文视频| 日本在线观看a| 成人午夜av影视| 成人在线观看小视频| 欧洲精品中文字幕| 五月激情丁香婷婷| 欧美高清第一页| 亚洲日本中文| 四虎一区二区| 香蕉久久a毛片| 中国黄色片视频| 一区二区三区在线视频观看58 | 日本不卡在线播放| 国产日韩专区| 亚洲欧美日韩色| 亚洲一区免费观看| 国产不卡精品视频| 精品激情国产视频| 国产精品诱惑| 亚洲欧美久久234| 日本va欧美va精品| 免费观看a级片| 91九色最新地址| 久久精品a一级国产免视看成人 | 91另类视频| 日本一区二区三区四区在线观看| 国产欧美丝祙| 国产男男chinese网站| 婷婷激情综合网| 婷婷综合激情网| 538国产精品视频一区二区| 欧美大片网址| 波多野结衣家庭教师在线播放| 成人动漫av在线| 日韩男人的天堂| 日韩高清免费在线| 美女网站在线看| 免费99视频| 日韩 欧美一区二区三区| 精品人伦一区二区| 欧美三级在线看| 国内精品久久久久久野外| 成人免费看吃奶视频网站| 久久久9色精品国产一区二区三区| 在线免费黄色网| 一区二区三区精品视频在线| 懂色av一区二区三区四区| 久久久久中文字幕| 欧美人与动xxxxz0oz| 久久精品国产精品亚洲色婷婷| 久久久国际精品| 在线观看中文字幕网站| 久热爱精品视频线路一| 影音先锋欧美激情| 天天夜碰日日摸日日澡性色av| 91蜜桃视频在线| 亚洲一区二区人妻| 久久色精品视频| eeuss鲁片一区二区三区| 人人妻人人添人人爽欧美一区| www国产成人免费观看视频 深夜成人网| 中文字幕激情小说| 一区二区在线免费视频| 玖玖精品在线| 国产精品69久久久| 久久品道一品道久久精品| 五月激情丁香网| 久久国产精品影片| 欧美激情网址| www.99r| 亚洲成人在线观看视频| 久久久资源网| 亚洲一区精品电影| 国产视频欧美| www.xx日本| 亚洲国内高清视频| 精品176极品一区| 人人妻人人做人人爽| 中文字幕的久久| 隣の若妻さん波多野结衣| 国产成人在线精品| 欧美日韩亚洲三区| 美女被到爽高潮视频| 欧美一级国产精品| 三上悠亚激情av一区二区三区| 天天综合中文字幕| wwww国产精品欧美| 性一交一乱一乱一视频| 国产成人久久久| 一区二区亚洲| 三上悠亚在线观看视频| 亚洲美女av电影| theporn国产在线精品|