一个react项目的从无到有——脚手架搭建(基础)

公司官网,小项目,耗时短,为了更好的说明各部分需要注意的地方,也因为篇幅过长,影响阅读体验,请允许在下的多情,就按实际的开发过程,拆分成了“脚手架搭建(基础)”、“router4.0配置(多页面结构)”、“页面效果实现”、“添加百度地图(自定义)”、“打包发布(结束)”这几个部分,分篇发布。

首先node环境是必须的,如果已安装就忽略

不作赘述: Node.js 安装配置菜鸟教程
建议安装8.0以上版本,安装指定版本方法:
npm install -g n
n v8.6.0

react一顿操作,我采用官方给出的create-react-app方法

1.脚手架下载
npm install -g create-react-app
或使用淘宝镜像 npm install -g create-react-app --registry https://registry.npm.taobao.org

2.进入指定路径,建立react项目
create-react-app webname

生成的项目最好不要用驼峰式命名,否则后面生成文件提示也会让你改。

3.静待片刻,给文件的生成一点时间,然后进入目录并启动项目
cd webname
npm run start
这时候浏览器已经打开了这个react项目,我们也就可以开始进行开发啦~

到这里,其实脚手架这部分已经结束了,但是!!!我们还需要antd和webpack,既然用了轮子,那还矜持个什么劲,好用就继续用喽╮(╯▽╰)╭

4.安装antd
不推荐yarn安装,因为以后其他的依赖都要yarn安装才不会报错,强迫症犯了不好治。
npm install antd --save

然后问题来了,既然你看到了这篇,想必也是迷茫狗一只,我就多费些笔墨,说下antd组件如果不按需加载的问题,如图:
在这里插入图片描述
就是这样,每个页面的css文件上面都要引入一遍antd.css,麻烦不?且不提性能方面的影响,程序员最怕麻烦了,所以,接下来继续操作:

5.引入 react-app-rewired 并修改 package.json 里的启动配置
npm i react-app-rewired -D

修改package.json文件里的scripts:

"scripts": {
  	"start": "react-app-rewired start",
  	"build": "react-app-rewired build",
  	"test": "react-app-rewired test",
} 

然后在项目根目录创建一个 config-overrides.js 文件,用于后面的修改默认配置。

6.使用babel-plugin-import, 一个用于按需加载组件代码和样式的babel插件
npm i babel-plugin-import -D

修改之前创建的 config-overrides.js 文件,把下面的代码拷进去:

const { injectBabelPlugin } = require('react-app-rewired');
module.exports = function override(config, env) {
   config = injectBabelPlugin(
     ['import', { libraryName: 'antd', libraryDirectory: 'es', style: 'css' }],
     config,
   );
    return config;
};

OK啦,import { Button } from ‘antd’; 无需另外引入antd.css了哦~ 哦~好嗨呦……

嗯……是这样的,页面的实现离不开css样式的支持,经常会因为设计稿的需求,手写或修改antd组件的样式,为了满足className的傲娇个性,我经常翻阅辞海,给它们起一些类似于“乌拉那拉氏”这样的名字,后来,我知道了less和sass,看着美丽的树结构,才明白曾经的自己有多傻呢,这个项目我用的是less

7.引入 react-app-rewire 的 less 插件 react-app-rewire-less 来帮助加载 less 样式
npm i --save react-app-rewire-less

修改 config-overrides.js:

const { injectBabelPlugin } = require('react-app-rewired');
const rewireLess = require('react-app-rewire-less');
module.exports = function override(config, env) {
   config = injectBabelPlugin(
     ['import', { libraryName: 'antd', libraryDirectory: 'es', style: true }],
     config,
   );
   config = rewireLess.withLoaderOptions({
     modifyVars: { "@primary-color": "#1DA57A" },
     javascriptEnabled: true,
   })(config, env);
    return config;
};

修改后重新运行npm run start,就可以加载less文件了。

多说一点,因为使用了react-app-rewired,这样想暴露所有webpack配置就稍微有些麻烦,在下为了规避webpack配置,从而达到less仅对引用的当前组件有效,也就是,不同的组件内如果有相同的className,但互相不会影响,就在外层使用了动态命名,配合:local(){}:

//about.js
import styles from './about.less';

<div className={styles.aboutbj}>
   <div className="about">
    	<div className="title">公司介绍</div>
   </div>
   <div className="title">关于我们</div>
 </div>
 
 //about.less
 :local(.aboutbj) {
    .about {
      .title {
        color: #000;
      }
    }
    .title {
        color: #999;
      }
  }
 @media screen and (max-width:496px) {
  :local(.aboutbj) {
    .about {
      .title {
        color: #999;
      }
    }
    .title {
        color: #000;
      }
  	}
  }
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值