fix一個陪伴我過年的issue

過年之前,debug一個Web頁面,發現怎么弄都是效果不好,組件之間零間距,這太...太親密了。
效果如下:

組件之間無距離

查看樣式,果然如此:
Box邊框

由于對于樣式的問題,不太懂。就惡補查閱資料,一點點啃。
期間也順帶學習了CSS課程,補課過程中,發現其中提到了關鍵一句:

內聯元素之間是有一個間距問題。

上面沒說答案,經過調查,發現如果加入空格或者換行是可以恢復這個內聯樣式的默認間距的。

手動調整樣式

手動調整樣式

在html中,<span>、<a>、<label>、 <strong> 和<em>就是典型的內聯元素(行內元素)(inline)元素。

到此為止,頁面顯示問題的原因定位到了,那怎么解決呢?
終于知道改怎么對這個問題進行提問了,更貼切的描述應該為:display: inline-block 布局時, 間距為何會消失?

由于本頁面是用Vue CLI3腳手架生成的,所以開始我想著通過vue loader下css loader入手分析。翻來覆去好幾天,開始想著是版本上的差異,試來試去,沒有章法,也沒有結果。

實在是不明白,順便也熟悉了一下webpack的打包原理。時間啊,又過去幾天了。github上很多都是Vue CLI2的源碼,一堆webpack.conf.js的配置文件。由于VueCLI3的配置方式改變挺大的,所以都沒有辦法找到相對直接一些的答案。

但是有一點在研究過程中是肯定的,可以肯定是webpack的loader過程中出的問題。自動調整的格式不對。從網上找了一個VueCLI2的項目編譯了一下,分析一下webpack打包的結果:


關鍵空格

在webpack build結果chunck-*.js文件中,手動加入t.v(" "),執行一把命令測試一下:

serve -s dist

果然就好了。

那具體在vue.config.js中怎樣配置?還是先求助官方文檔,繼續查閱資料:

如果 Vue CLI 提供的內建沒有滿足你的需求,或者你樂于從零開始創建你自己的 webpack 配置,那么請繼續閱讀這篇指南:https://vue-loader.vuejs.org/zh/guide/#%E6%89%8B%E5%8A%A8%E8%AE%BE%E7%BD%AE

在章節“服務端渲染的依賴排除”中找到了如下關鍵信息:

compilerOptions

進一步查看其中細節

  • preserveWhitespace
    默認為 true。這意味著編譯好的渲染函數會保留所有 HTML 標簽之間的空格。如果設置為 false,則標簽之間的空格會被忽略。這能夠略微提升一點性能但是可能會影響到內聯元素的布局。

文檔上寫的默認是true,也就是說標簽之間的空格不會被忽略?!!!

還是不甘心,既然已經查到這里了,debug一下不費勁,再手動設置一下試試:

// vue.config.js
module.exports = {
//...
  // 如果你不需要生產環境的 source map,可以將其設置為 false 以加速生產環境構建。
  productionSourceMap: false,
//...
  configureWebpack: {
//...
  chainWebpack: config => {
//...
    config.module
      .rule('vue')
      .use('vue-loader')
      .loader('vue-loader')
      .tap(options => {
        // modify the options...
        options.compilerOptions.preserveWhitespace = true
        return options
      })
//...
  }
}

奇跡出現了,之前難看的布局fix了。


按鈕、表格內容Tag布局終于OK

此刻只想找個角落一個人靜靜。。。話說上午,還在想要不要代碼全部回退,老老實實地配置webpack.conf.js,一個個loader一個個配置。期間一度感覺山窮水盡了。

所以,過年期間也在抓緊這個事情之余,也順便完成了如下幾件事情:
1)陪伴爺爺過年在西安轉轉。
2)仰首是春,俯首是秋,牽掛中,親情更暖。
3)祝愿孩子健康快樂成長。
4)拜年:長輩有恩,無以為報。
5)跟好友聚聚。

當然,有得就有失:老家的小伙伴們,也祝福你們新的一年,家庭事業穩步向前,大吉大利!

生活是具體的,很不起眼的小事,是牽絆掛念,也是勇氣之源。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 基于Vue的一些資料 內容 UI組件 開發框架 實用庫 服務端 輔助工具 應用實例 Demo示例 element★...
    嘗了又嘗閱讀 1,175評論 0 1
  • UI組件 element - 餓了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的組件庫...
    流過閱讀 3,366評論 1 35
  • 相關概念 混合開發和前后端分離 混合開發(服務器端渲染) 前后端分離后端提供接口,前端開發界面效果(專注于用戶的交...
    他愛在黑暗中漫游閱讀 2,850評論 4 45
  • ## 框架和庫的區別?> 框架(framework):一套完整的軟件設計架構和**解決方案**。> > 庫(lib...
    Rui_bdad閱讀 2,971評論 1 4
  • 一直以為長大最重要的過程之一就是接受那些讓人失望的現實:政治制度不完善,經濟制度不合理,永遠學不會到院子里方...
    熱干面1985閱讀 317評論 0 0