摘要:一個中使用的。比如在項目中的引入它們在中加入以下代碼修改項目中的后記完結(jié)撒花本文簡單研究了一下如何搭建解決方案,如有錯誤歡迎指出。
create-react-app搭建vw-layout解決方案
前言:我第一次接觸到vw適配移動端的方案是在大漠先生的博客里(如何在Vue項目中使用vw實現(xiàn)移動端適配),強烈建議沒看過的朋友先去看一下這篇博客。vw解決方案早有耳聞,我也很想上手嘗試一下,所以想要自己上手配置一個CRA腳手架的解決方案。在自己動手之前也先查了一些資料,其中Ghan的這篇博客很有幫助:使用create-react-app腳手架搭建vw-layout解決方案。和Ghan的方案不同,我研究了下決定借助react-app-rewired來搭建。下面把我的配置過程寫在這里,有什么不對的地方歡迎批評,小白第一次配,求輕拍。
先上一些背景資料。主要用到以下幾個工具:
react-app-rewired:一個CRA再配置的工具,源自React社區(qū),可以在不eject的情況下自定義配置CRA腳手架創(chuàng)建的app。原理很簡單,在項目根目錄下新建一個配置文件(config-overrides.js),把webpack的配置作為一個config對象傳入react-app-rewired,再用config-overrides中的配置對其做修改,然后用修改后的config對象對項目打包。
react-app-rewire-postcss:一個react-app-rewired中使用的postcss-loader。通過在config-overrides.js中加載這個loader并自定義配置,從而實現(xiàn)修改CRA默認(rèn)配置的目的。
除此之外還要用到幾個常規(guī)插件:
cssnano-preset-advanced
postcss-aspect-ratio-mini
postcss-px-to-viewport
postcss-write-svg
cssnano
postcss-viewport-units
postcss-flexbugs-fixes
postcss-preset-env
其中,postcss-flexbugs-fixes、postcss-preset-env是目前版本CRA的默認(rèn)配置,就不做過多的解釋了;由于cssnano的配置中使用了preset: "advanced"配置,需要安裝cssnano-preset-advanced包;zhipostcss-aspect-ratio-mini、postcss-px-to-viewport、postcss-write-svg、cssnano、postcss-viewport-units這幾個插件是這個方案的核心,大漠先生已經(jīng)做了非常詳細的解釋,強烈建議大家去看大漠的這篇文章。
開始 構(gòu)建create-react-app vwpage安裝依賴
yarn add postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-viewport-units cssnano cssnano-preset-advanced react-app-rewired postcss-preset-env --dev //使用yarn作為包管理工具,習(xí)慣npm的朋友也可以用npm
這里簡單說明一下,大漠先生的教程中提到的postcss-cssnext已經(jīng)停止維護了,整合進了postcss-preset-env這個項目中,因此不需要再安裝postcss-cssnext了,具體信息參見該項目github。
react-app-rewired配置在項目根目錄下新建config-overrides.js文件。內(nèi)容如下:
module.exports = function override(config, env) { //do stuff with the webpack config... return config; }安裝react-app-rewire-postcss Loaders
yarn add react-app-rewire-postcss --dev配置config-overrides.js
module.exports = function override(config, env) { require("react-app-rewire-postcss")(config, { plugins: loader => [ require("postcss-flexbugs-fixes"), require("postcss-preset-env")({ autoprefixer: { flexbox: "no-2009", }, stage: 3, }), require("postcss-aspect-ratio-mini")({}), require("postcss-px-to-viewport")({ viewportWidth: 750, // (Number) The width of the viewport. viewportHeight: 1334, // (Number) The height of the viewport. unitPrecision: 3, // (Number) The decimal numbers to allow the REM units to grow to. viewportUnit: "vw", // (String) Expected units. selectorBlackList: [".ignore", ".hairlines"], // (Array) The selectors to ignore and leave as px. minPixelValue: 1, // (Number) Set the minimum pixel value to replace. mediaQuery: false // (Boolean) Allow px to be converted in media queries. }), require("postcss-write-svg")({ utf8: false }), require("postcss-viewport-units")({}), require("cssnano")({ preset: "advanced", autoprefixer: false, "postcss-zindex": false }) ] }); return config; }兼容方案
大漠老師在博客中提到了Viewport Units Buggyfill作為兼容工具,我簡單看了下這個項目的gitHub介紹,這是一個buggyfill,主要是修復(fù)某些瀏覽器中關(guān)于viewport實現(xiàn)的bug,而不是作為polyfill在完全不支持viewport的瀏覽器中來實現(xiàn)它。
1.引入JavaScript文件:
viewport-units-buggyfill主要有兩個JavaScript文件:viewport-units-buggyfill.js和viewport-units-buggyfill.hacks.js。你只需要在你的HTML文件中引入這兩個文件。比如在react項目中的index.html引入它們:
2.在body中加入以下代碼:
One more thing
修改項目package.json中的npm scripts:
/* package.json */ "scripts": { - "start": "react-scripts start", + "start": "react-app-rewired start", - "build": "react-scripts build", + "build": "react-app-rewired build", - "test": "react-scripts test --env=jsdom", + "test": "react-app-rewired test --env=jsdom" }
后記:完結(jié)撒花~本文簡單研究了一下如何搭建viewport解決方案,如有錯誤歡迎指出。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/98646.html
摘要:通過文件可以對圖標(biāo)名稱等信息進行配置。注意,注冊的只在生產(chǎn)環(huán)境中生效,并且該功能只有在下才能有效果該文件是過濾文件配置該文件是描述文件定義了項目所需要的各種模塊,以及項目的配置信息比如名稱版本許可證等元數(shù)據(jù)。 一、 快速開始: 全局安裝腳手架: $ npm install -g create-react-app 通過腳手架搭建項目: $ create-react-app 開始項目: ...
摘要:通過文件可以對圖標(biāo)名稱等信息進行配置。注意,注冊的只在生產(chǎn)環(huán)境中生效,并且該功能只有在下才能有效果該文件是過濾文件配置該文件是描述文件定義了項目所需要的各種模塊,以及項目的配置信息比如名稱版本許可證等元數(shù)據(jù)。 一、 快速開始: 全局安裝腳手架: $ npm install -g create-react-app 通過腳手架搭建項目: $ create-react-app 開始項目: ...
摘要:說明官方腳手架工具用于快速創(chuàng)建應(yīng)用,但依舊有局限性,我們根據(jù)項目需求需要對的配置進行修改。這里針對引入的兩種配置方式進行配置。方案一一個對進行自定義配置的社區(qū)解決方案。安裝修改啟動項在項目根目錄創(chuàng)建一個用于修改默認(rèn)配置。 說明 React官方腳手架工具Create-react-app 用于快速創(chuàng)建React應(yīng)用,但依舊有局限性,我們根據(jù)項目需求需要對Create-react-app的配...
摘要:簡稱已經(jīng)更新之版本也更新至版本裝飾器語法雖然還不是標(biāo)準(zhǔn)但是借助于也能在項目里愉快的玩耍時代如何啟用裝飾器語法呢我們依舊采用的是通過劫持對象達到修改的目的修改安裝裝飾器語法所需的插件也可以順帶升級在項目 create-react-app(簡稱cra)已經(jīng)更新之2.0.3版本, babel也更新至7.x版本, JavaScript裝飾器語法雖然還不是標(biāo)準(zhǔn), 但是借助于babel, 也能在項...
摘要:使用官方的的另外一種版本和一起使用自動配置了一個項目支持。需要的依賴都在文件中。帶靜態(tài)類型檢驗,現(xiàn)在的第三方包基本上源碼都是,方便查看調(diào)試。大型項目首選和結(jié)合,代碼調(diào)試維護起來極其方便。 showImg(https://segmentfault.com/img/bVbrTKz?w=1400&h=930); 阿特伍德定律,指的是any application that can be wr...
閱讀 3704·2021-11-12 10:36
閱讀 3843·2021-09-22 15:48
閱讀 3551·2019-08-30 15:54
閱讀 2606·2019-08-29 16:44
閱讀 2374·2019-08-29 16:08
閱讀 2421·2019-08-29 16:06
閱讀 1295·2019-08-29 15:21
閱讀 3179·2019-08-29 12:39