您好,登錄后才能下訂單哦!
在開發(fā)環(huán)境寫了很多console.log/info/debug,在生產(chǎn)環(huán)境需要去掉這些console。
如果手動刪除未免也太累了,再說以后想再開發(fā)還得重新寫console。
事實上webpack提供了刪除console的插件,在vue-cli3里面是這樣用的:
首先安裝terser-webpack-plugin
npm install terser-webpack-plugin -D
然后在vue.config.js文件里寫插件的配置:
module.exports = { configureWebpack: (config)=>{ if(process.env.NODE_ENV === 'production'){ config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true } } }
2020.1.14補充:
上面的寫法是直接修改webpack的配置,vue官方文檔里說也可以返回一個將會被合并的對象,寫法如下:
const TerserPlugin = require('terser-webpack-plugin') module.exports = { configureWebpack: (config)=>{ if(process.env.NODE_ENV === 'production'){ // 返回一個將會被合并的對象 return { optimization:{ minimizer: [ new TerserPlugin({ sourceMap:false, terserOptions:{ compress:{ drop_console : true } } }) ] } } } } }
2020.4.22補充:
最近在做react項目的時候發(fā)現(xiàn)它的webpack的配置,也可以使用terser去掉console.log。
webpack.config.prod.js:
module.exports = { optimization:{ minimizer: [ new TerserPlugin({ sourceMap:false, terserOptions:{ compress:{ drop_console : true } } }) ] } }
補充知識:vue中遇到數(shù)據(jù)更新但是頁面沒有更新的情況
今天在項目中遇到了一個需求,點擊改變數(shù)據(jù),之后在頁面上立即看到更改后的數(shù)據(jù)。
首先,如上圖的黃色按鈕是通過v-for 循環(huán)產(chǎn)生的,data()里只有數(shù)據(jù)cards:[ … ],cards的值是通過調(diào)用后臺接口拿到的。
data(){ return { cards:[] } }
<div v-for="card in cards" :key="card.id"> <img src="xxx" /> <div v-if="card.isShow" @click="cacelHandler(card)"> <img src="xxxx" /> </div> </div>
這個頭像下方的黃色按鈕,是根據(jù)card.isShow的truthy 決定顯示或不顯示。
當我點擊按鈕的時候,把card.isShow 的值變?yōu)?false。
可是頁面上的黃色按鈕還在,并沒有如我期望的那樣消失。
通過查詢資料得知,使用this.$forceUpdate()可以重新渲染組件,這樣就可以得到想要的效果。
cacelHandler(card){ card.isShow = false; this.$forceUpdate(); }
vue官方對$forceUpdate的解釋是:
$forceUpdate可以迫使 Vue 實例重新渲染。它僅僅影響實例本身和插入插槽內(nèi)容的子組件,而不是所有子組件。
以上這篇vue或react項目生產(chǎn)環(huán)境去掉console.log的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。