基于vue-cli和vux的webpack配置

基于vue-cli配置
然后使用vux的webpack配置

npm i vue-cli -g // 如果還沒(méi)安裝
vue init airyland/vux2 projectPath

cd projectPath
npm i

配置目的

  1. 利用手淘flexible布局澡屡,字體需要根據(jù)dpr看來(lái)改變大小
  2. 利用postcss-px2rem自動(dòng)轉(zhuǎn)換頁(yè)面中的rem咐旧,但是字體不轉(zhuǎn)換,border利用1px方案解決也不轉(zhuǎn)換
  3. 自動(dòng)添加瀏覽器兼容前綴
  4. 利用fastclick解決點(diǎn)擊延遲問(wèn)題
  5. 安裝postcss和scss還有l(wèi)ess室埋,不是我神經(jīng)病,是引用插件和個(gè)人習(xí)慣姚淆。
  6. 轉(zhuǎn)換vux的px為PX腌逢,因?yàn)閣eUI沒(méi)有使用rem,使用的是em和px搏讶,但是又不能把它的px給轉(zhuǎn)換成rem,而且vux還有一個(gè)1px.less腋颠,也不能把它的px轉(zhuǎn)換成大寫(xiě)吓笙。但是瀏覽器不管px是大小寫(xiě),都能按照px解析絮蒿。

解決問(wèn)題1

npm i lib-flexible -S

然后在main.js使用

import 'lib-flexible'

到這里只是調(diào)用叁鉴,剩下的使用方法下面解決。

解決問(wèn)題2

首先運(yùn)行以下命令

npm i postcss-loader postcss-px2rem -D

因?yàn)閱?wèn)題3也是postcss的插件但壮,所以一起解決常侣。(如果你按照vux的webpack按照的,問(wèn)題3可省略)
再安裝

npm i autoprefixer -D

關(guān)于autoprefixer的配置自己查溯祸,可以查看如下文章
autoprefixer配置

然后在build的vue-loader.conf.js配置postcss

postcss: [
    require('autoprefixer')({
      browsers: ['iOS >= 7', 'Android >= 4.1']
    }),require('postcss-px2rem')({
      rootValue: 75, // 這里對(duì)應(yīng)的是750的設(shè)計(jì)圖尺寸
      selectorBlackList: ['html'],
      mediaQuery: true,
      propBlackList: ['border-radius','border'] // 如果要保持font-size不轉(zhuǎn)換焦辅,替換為 ['font-size']
    })
  ]

這里我的配置是基于手淘布局方案的椿胯,自己可以有自己的適配方案。

然后手淘方案有字體根據(jù)dpr動(dòng)態(tài)改變压状,所以書(shū)寫(xiě)CSS的時(shí)候要在后面加上注釋跟继,如下:

.selector {
    width: 150px;
    height: 64px; /*px*/
    font-size: 28px; /*px*/
    border: 1px solid #ddd; /*no*/
}
.selector {
    width: 2rem;
    border: 1px solid #ddd;
}
[data-dpr="1"] .selector {
    height: 32px;
    font-size: 14px;
}
[data-dpr="2"] .selector {
    height: 64px;
    font-size: 28px;
}
[data-dpr="3"] .selector {
    height: 96px;
    font-size: 42px;
}

因?yàn)槲遗渲昧薭order不轉(zhuǎn)換舔糖,所以/*no*/莺匠,可以不用加,加了也不頂用摇庙。但是字體一定要使用/*px*/這個(gè)注釋遥缕。這樣才能根據(jù)dpr改變字體大小。chrome的移動(dòng)端調(diào)試工具不支持dpr改變夕凝,所以可以手動(dòng)改變dpr查看效果户秤。

解決問(wèn)題4

如果你是按照上面一步步來(lái)的,問(wèn)題4已經(jīng)解決了转砖,如果不是按照來(lái)了鲸伴,應(yīng)該如下方法解決。
在main.js里面引入

import FastClick from 'fastclick'
FastClick.attach(document.body)

引入之前要安裝礁竞,我就不寫(xiě)了杉辙,如果你忘了還找不到錯(cuò)誤捶朵,真真的不適合這行。

解決問(wèn)題5

這個(gè)問(wèn)題不重復(fù)品腹,難的是安裝scss红碑,用下面的方法

npm i node-sass sass-loader scss-loader -D

解決問(wèn)題6

這是最難的泡垃,也是最煩的羡鸥,weUI竟然沒(méi)使用rem布局,用的px加em存和。
然后通過(guò)查找衷旅,發(fā)現(xiàn)有人解決方案很雞賊,最近發(fā)現(xiàn)的雞賊方案比較多茄袖,比如靜音播放沒(méi)有聲音的音頻這個(gè)粗暴解決方案有空也可以嘮嘮嘁锯。

題外話
微信iOS收款到賬語(yǔ)音提醒開(kāi)發(fā)總結(jié)

貼具體代碼吧,如果你是按照vux的webpack安裝的品山,只需要打開(kāi)webpack.base.conf.js文件烤低,然后把最下面的module.exports修改為以下內(nèi)容

module.exports = vuxLoader.merge(webpackConfig, {
  plugins: ['vux-ui', 'progress-bar', 'duplicate-style',{
    name: 'after-less-parser',
    fn: function (source) {
      if (this.resourcePath.replace(/\\/g, '/').indexOf('/vux/src/components') > -1) {
        source = source.replace(/px/g, 'PX')
      }
      // 自定義的全局樣式大部分不需要轉(zhuǎn)換
      if (this.resourcePath.replace(/\\/g, '/').indexOf('App.vue') > -1) {
        source = source.replace(/px/g, 'PX').replace(/-1PX/g, '-1px')
      }
      return source
    }
  }, {
    name: 'style-parser',
    fn: function (source) {
      if (this.resourcePath.replace(/\\/g, '/').indexOf('/vux/src/components') > -1) {
        source = source.replace(/px/g, 'PX')
      }
      // 避免轉(zhuǎn)換1PX.less文件路徑
      if (source.indexOf('1PX.less') > -1) {
        source = source.replace(/1PX.less/g, '1px.less')
      }
      return source
    }
  }]
})

如果不是扑馁,那就這樣改涯呻,把module.exports的內(nèi)容改成以上內(nèi)容。

const vuxLoader = require('vux-loader')
const webpackConfig = originalConfig // 原來(lái)的 module.exports 代碼賦值給變量 webpackConfig

module.exports = vuxLoader.merge(webpackConfig, {
  plugins: ['vux-ui']
})

參考文檔

  1. vux文檔
  2. npm網(wǎng)站
  3. 大漠的手淘布局方案flexible
  4. vux的github
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腻要,一起剝皮案震驚了整個(gè)濱河市复罐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雄家,老刑警劉巖效诅,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異趟济,居然都是意外死亡乱投,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)顷编,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人媳纬,你說(shuō)我怎么就攤上這事双肤∈┨停” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵茅糜,是天一觀的道長(zhǎng)七芭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)限匣,這世上最難降的妖魔是什么抖苦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮米死,結(jié)果婚禮上锌历,老公的妹妹穿的比我還像新娘。我一直安慰自己峦筒,他們只是感情好究西,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著物喷,像睡著了一般卤材。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上峦失,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天扇丛,我揣著相機(jī)與錄音,去河邊找鬼尉辑。 笑死帆精,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的隧魄。 我是一名探鬼主播卓练,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼购啄!你這毒婦竟也來(lái)了襟企?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤狮含,失蹤者是張志新(化名)和其女友劉穎顽悼,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體几迄,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡表蝙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乓旗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡集索,死狀恐怖屿愚,靈堂內(nèi)的尸體忽然破棺而出汇跨,到底是詐尸還是另有隱情,我是刑警寧澤妆距,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布穷遂,位于F島的核電站,受9級(jí)特大地震影響娱据,放射性物質(zhì)發(fā)生泄漏蚪黑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一中剩、第九天 我趴在偏房一處隱蔽的房頂上張望忌穿。 院中可真熱鬧,春花似錦结啼、人聲如沸掠剑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)朴译。三九已至,卻和暖如春属铁,著一層夾襖步出監(jiān)牢的瞬間眠寿,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工焦蘑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盯拱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓喇肋,卻偏偏與公主長(zhǎng)得像坟乾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蝶防,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容