鍍金池/ 問答/ HTML問答
骨殘心 回答
<tr v-for="item in dataArr" @contextmenu="contextmenuFunc(item)">
      {{item.a}} {{item.b}} ...
 </tr>

在右鍵點擊的時候?qū)斍皌r循環(huán)的傳進去,右鍵菜單中的值使用model動態(tài)修改就好了

貓館 回答

前言

問題解決了,特來反哺社區(qū)

先總結(jié)一下。HashedModuleIdsPlugin用于穩(wěn)定 ModuleId 的,我問的問題核心是 生成穩(wěn)定的ChunkId,這兩者是不一樣的。

如何生成穩(wěn)定ModuleId

表現(xiàn):

只修改了 home/index.js 的代碼,但在最終的構(gòu)建結(jié)果中,vendor.js 的文件指紋也被修改了

原因有兩個:

  1. webpack runtime (運行時) 中包含 chunks ID 及其對應(yīng) chunkhash 的對象,但 runtime 被集成到 vendor.js 中。
  2. entry 內(nèi)容修改后,由于 webpack 的依賴收集規(guī)則導(dǎo)致構(gòu)建產(chǎn)生的 entry chunk 對應(yīng)的 ID 發(fā)生變化,webpack runtime 也因此被改變。

解決辦法:

  1. 使用CommonsChunkPlugin 繼續(xù)將webpack runtime抽離出來
    image
  2. 使用HashedModuleIdsPlugin代替原有的ModuleId根據(jù)依賴的收集順序遞增的正整數(shù)生成規(guī)則。

順便一提,生成穩(wěn)定的ModuleId在官方文檔 - 緩存中有提及

早前經(jīng)過合理的配置(可以參考用 webpack 實現(xiàn)持久化緩存,實現(xiàn)了其他模塊變動后,vendor.js的文件指紋不會發(fā)生變化的效果)

效果如下:

其他模塊發(fā)生變動時,抽離的公共代碼vendor.js不會發(fā)生變化

如何生成穩(wěn)定的ChunkId

很多文章都只介紹到如何生成穩(wěn)定的ModuleId,沒有提到生成穩(wěn)定的ChunkId

后來經(jīng)過 @dahoshaw的提醒

可以看下Webpack的源碼,Webpack是根據(jù)模塊的順序遞增chunkid,源代碼中的applyChunkIds函數(shù),所以官方有提供NamedChunksPlugin插件來根據(jù)文件名來穩(wěn)定你的chunkid

webpackJsonp有三個參數(shù),每次有新的entry加入說明資源數(shù)增加了,Chunk數(shù)量也會跟著增加。ChunkId也會遞增

這有點類似ModuleId遞增變動導(dǎo)致的文件指紋變化而導(dǎo)致的長效緩存失效

他推薦的文章 Predictable long term caching with Webpack確實寫的不錯!

解決辦法:

在生產(chǎn)環(huán)境中的Webpack配置添加plugin: NamedChunksPlugin

// 使用模塊名稱作為chunkid,替換掉原本的使用遞增id來作為chunkid導(dǎo)致的[新增entry模塊,其他模塊的hash發(fā)生抖動,導(dǎo)致客戶端長效緩存失效]
config.plugins.push(new webpack.NamedChunksPlugin((chunk) => {
  // 解決異步模塊打包的問題
  if (chunk.name) {
    return chunk.name;
  }
  return chunk.modules.map(m => path.relative(m.context, m.request)).join("_");
}));

最后驗證一下,我們先打包一下項目,打包結(jié)果結(jié)構(gòu)如下:

dist
├── home
│?? ├── haha.dc494f13ed558999751e.js
│?? ├── index.2266d24e04004acaa5a6.css
│?? └── index.2b15fbd2daa6c833f5d5.js
├── manifest.json
├── runtime.1de86da7006780a96879.js
├── static
│?? └── images
│??     ├── logo-ea7f33f9bddceac362c1d7f378043187.png
│??     └── share-icon-881a5a400142ab60684b3cec860611b4.png
├── sub-home
│?? ├── haha.141284e7095f605726ac.js
│?? ├── index.7039775e1ba458814d14.js
│?? └── index.efd6d51187ec8a058fe6.css
└── vendor.dee373a1cd36f461d200.js

4 directories, 11 files

假設(shè)我們打算新增sub-sub-home模塊。新增這個模塊后打包結(jié)果結(jié)構(gòu)如下:

dist
├── home
│?? ├── haha.dc494f13ed558999751e.js
│?? ├── index.2266d24e04004acaa5a6.css
│?? └── index.2b15fbd2daa6c833f5d5.js
├── manifest.json
├── runtime.1de86da7006780a96879.js
├── static
│?? └── images
│??     ├── logo-ea7f33f9bddceac362c1d7f378043187.png
│??     └── share-icon-881a5a400142ab60684b3cec860611b4.png
├── sub-home
│?? ├── haha.141284e7095f605726ac.js
│?? ├── index.7039775e1ba458814d14.js
│?? └── index.efd6d51187ec8a058fe6.css
├── sub-sub-home
│?? ├── haha.6501ce2d3a138709282b.js
│?? ├── index.c367ca84bd261f36f050.js
│?? └── index.efd6d51187ec8a058fe6.css
└── vendor.dee373a1cd36f461d200.js

5 directories, 14 files

至此,通過Webpack實現(xiàn)長效緩存實踐完美收官。

參考

知乎 - webpack 每次打包公用vendor 每次hash都會變化,有辦法解決嗎?

用 webpack 實現(xiàn)持久化緩存

Predictable long term caching with Webpack

官方文檔 - 緩存

絯孑氣 回答

路徑換下這個,試下?

app: ['./node_modules/babel-polyfill/dist/polyfill.js','./src/main.js']
小眼睛 回答

html2canvas好像只能保存可視范圍內(nèi)的圖片

孤島 回答

json也可以帶參數(shù)傳文件啊。

{
name:'',
birthday:'',
photo: BAS64
}

你的瞳 回答

var s = '12.34567';
var num = Number(s.match(/^d+(?:.d{0,2})?/))
alert(num);//12.34

四舍五入的話:
var s = 12.34567
alert(s.toFixed(2));//12.35

柚稚 回答

500明顯不是前端的鍋,服務(wù)器那邊代碼的設(shè)置問題
header('Access-Control-Allow-Origin:*');
加這個允許其他域名訪問

巷尾 回答

那你可以在用vuex進行控制,登錄組件引入在app.vue 中,如果有l(wèi)ayout就引入在layout中

大濕胸 回答
dispaly:inline-block;

改為

display:inline-block;
維他命 回答

解決方法:
1.開始---運行DCOMCNFG在"組件服務(wù)"對話框中,依次展開"組件服務(wù)","計算機""我的電腦",在"我的電腦"右鍵屬性對話框中單擊"COM安全"選項卡,在"啟動和激活權(quán)限"下,單擊"編輯限制",在"啟動權(quán)限"對話框中,將你要訪問的用戶或組添加到"組或用戶名稱"列表中。在"啟動權(quán)限"對話框中,在"組或用戶名稱"框架內(nèi)選擇您的用戶和組。在"用戶權(quán)限"下的"允許"欄中,選擇"遠程啟動",然后單擊“確定”
2.開始---運行,到達dos命令行狀態(tài),輸入netsh firewall set Service RemoteAdmin enable(disable為不可用)
輸入完以后會提示“確定”代表執(zhí)行動作生效

3.打開“控制面板”---“管理工具”,點擊“本地安全策略”,選擇“本地策略”---“安全選項”,選擇中間的“網(wǎng)絡(luò)訪問:本地賬戶的共享和安全模式”把它的值設(shè)為“經(jīng)典--本地用戶以自己的身份驗證”,然后再回到dos命令行下,輸入以下命令:

wmic /node:[機器IP] /user:[管理員賬戶名] /password:[密碼] process where (name='qq.exe') call terminate
以上這句話可以把遠程控制的機器上的qq進行關(guān)閉
其中name='qq.exe'也可以寫成別的進程名,看自己有什么樣的需求; 如:name='winword'等等

尕筱澄 回答

你在組件外憑什么能直接拿到你 test 組件內(nèi) input 的 ref 嘛。
兩種方法:
1、test 組件內(nèi):直接拿 input 的 ref。

        show(event,item){
            this.$emit('show',event,item);
            console.log(this.$refs[item.text1]);
            this.$nextTick(() => {
              this.$refs[item.text1].focus()
            })
        }

2、外部組件:先拿到 test 組件的 ref,再拿 input 的 ref。

        show(event,item){
          console.log(this.$refs)
            item.show_input = true;
            this.$nextTick(() => {
              // 
              this.$refs[`test-${item.text1}`][0].$refs['input'].focus()
            })
        }
夏木 回答

32位為1行,這樣子排好對齊,長度也一目了然

旖襯 回答

看下是不是你的服務(wù)器內(nèi)存太小了

無標題 回答

+event.target.value會把小數(shù)點過濾掉,所以必須把+去掉

handleChange(event) {
    this.setState({value: event.target.value});
}
雅痞 回答

你這種錯誤 還要別人自己去運行 才能解決,誰有那種閑工夫 還得在開發(fā)者工具里 建個小程序項目去幫你?
先提出自己如何處理的,在嘗試失敗后,是如何做的 這樣 別人才能有效的幫助你,也能節(jié)約時間。