react 路由、移動(dòng)端適配以及l(fā)ess配置

一. 路由設(shè)置

首先 react 配置路由需要引入 react-router-dom 依賴:

yarn add react-router-dom -S or npm i react-router-dom -S 

引入依賴之后显设,配置路由文件:

src下創(chuàng)建components文件夾以及Home.jsx和Login.jsx:

// App.js

import React, { Component } from 'react';
// 引入路由
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';

// 路由頁面
import Home from './components/Home';
import Login from './components/Login';

class App extends Component {
    constructor(props) {
        super(props);
        this.state = {  }
    }
    render() { 
        return (
            <Router>
                <ul className="topBar">
                    <li><Link to="/">Home</Link></li>
                    <li><Link to="/login">Login</Link></li>
                </ul>
                <Route exact path="/" component={Home}/>
                <Route path="/login" component={Login}/>
            </Router>
        );
    }
}
export default App;

最后寫好Home和Login頁面相關(guān)內(nèi)容剪返。

二. 移動(dòng)端適配

在 react 項(xiàng)目中做移動(dòng)端適配扁誓,也需先引入先關(guān)依賴:

yarn add lib-flexible -S
yarn add postcss-px2rem -S 

依賴安裝完成之后,需要使用 yarn eject 命令暴露項(xiàng)目相關(guān)的webpack配置文件尿瞭,找到webpack.config.js闽烙,并做修改:

首先在webpack.config.js中引入:

const px2rem = require('postcss-px2rem');

然后在一下代碼的位置,設(shè)置根目錄字體大锌昀濉:

options: {
          // Necessary for external CSS imports to work
          // https://github.com/facebook/create-react-app/issues/2677
          ident: 'postcss',
          plugins: () => [
            require('postcss-flexbugs-fixes'),
            require('postcss-preset-env')({
              autoprefixer: {
                flexbox: 'no-2009',
              },
              stage: 3,
            }),
            // Adds PostCSS Normalize as the reset css with default options,
            // so that it honors browserslist config in package.json
            // which in turn let's users customize the target behavior as per their needs.
            postcssNormalize(),
    
            // 移動(dòng)端適配
            px2rem({ remUnit: 37.5 })
          ],
          sourceMap: isEnvProduction && shouldUseSourceMap,
        },

然后鸣峭,在index.js文件中引入:

import 'lib-flexible';

最后宏所,重啟項(xiàng)目,在調(diào)試中看到 “將根據(jù)已有的meta標(biāo)簽來設(shè)置縮放比例” 字幕摊溶,即表示適配成功爬骤。

三. 引入less

同樣,首先引入less 和 less-loader 相關(guān)配置:

yarn add less less-loader -S

然后莫换,在webpack.config.js 文件中找到 style files regexes 這個(gè)位置霞玄, 并配置 less 相關(guān)規(guī)則:

const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
// 引入less
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;

const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;

然后在getStyleLoaders方法處, 模仿cssOptions拉岁,引入lessOptions坷剧,并調(diào)用,如下:

const getStyleLoaders = (cssOptions, lessOptions, preProcessor) => {
    const loaders = [
      isEnvDevelopment && require.resolve('style-loader'),
      isEnvProduction && {
        loader: MiniCssExtractPlugin.loader,
        // css is located in `static/css`, use '../../' to locate index.html folder
        // in production `paths.publicUrlOrPath` can be a relative path
        options: paths.publicUrlOrPath.startsWith('.')
          ? { publicPath: '../../' }
          : {},
      },
      {
        loader: require.resolve('css-loader'),
        options: cssOptions,
      },
      {
        loader: require.resolve('less-loader'),
        options: lessOptions,
      },
      ... // 省略以下代碼
}

最后在大概440行處喊暖,模仿cssRegex和cssModuleRegex惫企,引入lessRegex和lessModuleRegex,如下:

            {
              test: cssRegex,
              exclude: cssModuleRegex,
              use: getStyleLoaders({
                importLoaders: 1,
                sourceMap: isEnvProduction && shouldUseSourceMap,
              }),
              // Don't consider CSS imports dead code even if the
              // containing package claims to have no side effects.
              // Remove this when webpack adds a warning or an error for this.
              // See https://github.com/webpack/webpack/issues/6571
              sideEffects: true,
            },
            // Adds support for CSS Modules (https://github.com/css-modules/css-modules)
            // using the extension .module.css
            {
              test: cssModuleRegex,
              use: getStyleLoaders({
                importLoaders: 1,
                sourceMap: isEnvProduction && shouldUseSourceMap,
                modules: {
                  getLocalIdent: getCSSModuleLocalIdent,
                },
              }),
            },

            // 引入less
            {
              test: lessRegex,
              exclude: lessModuleRegex,
              use: getStyleLoaders({
                importLoaders: 1,
                sourceMap: isEnvProduction && shouldUseSourceMap,
              }),
              sideEffects: true,
            },
            {
              test: lessModuleRegex,
              use: getStyleLoaders({
                importLoaders: 1,
                sourceMap: isEnvProduction && shouldUseSourceMap,
                modules: {
                  getLocalIdent: getCSSModuleLocalIdent,
                },
              }),
            },

最后陵叽,重啟項(xiàng)目狞尔,引入less文件,即可巩掺。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末偏序,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子胖替,更是在濱河造成了極大的恐慌研儒,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件独令,死亡現(xiàn)場離奇詭異端朵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)记焊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門逸月,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遍膜,你說我怎么就攤上這事碗硬。” “怎么了瓢颅?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵恩尾,是天一觀的道長。 經(jīng)常有香客問我挽懦,道長翰意,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮冀偶,結(jié)果婚禮上醒第,老公的妹妹穿的比我還像新娘。我一直安慰自己进鸠,他們只是感情好稠曼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著客年,像睡著了一般霞幅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上量瓜,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天司恳,我揣著相機(jī)與錄音,去河邊找鬼绍傲。 笑死扔傅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的唧取。 我是一名探鬼主播铅鲤,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼枫弟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鹏往,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤淡诗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后伊履,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體韩容,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年唐瀑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了群凶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哄辣,死狀恐怖请梢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情力穗,我是刑警寧澤毅弧,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站当窗,受9級(jí)特大地震影響够坐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一元咙、第九天 我趴在偏房一處隱蔽的房頂上張望梯影。 院中可真熱鬧,春花似錦庶香、人聲如沸光酣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽救军。三九已至,卻和暖如春倘零,著一層夾襖步出監(jiān)牢的瞬間唱遭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工呈驶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拷泽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓袖瞻,卻偏偏與公主長得像司致,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子聋迎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355