安装慢
安装文件版本不一致的bug
出现错误继续安装,警告易丢失
速度快:并行安装,离线安装(以前安装过,直接从缓存中获取)
安装版本统一
输出信息简洁
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RMeWqByB-1663571584645)(imgs\npm-yarn命令区别.jpg)]
npm i -g yarn
yarn config get registry
传递结果输出:https://registry.yarnpkg.com
yarn config set registry http://registry.npm.taobao.org/
yarn create react-app my-app
yarn start
public/index.html模板文件
src放要打包的文件
src/index.js入口文件,挂载根组件
src/index.css全局css样式
src/App.js根组件,App.css根组件样式
一个js文件就是一个组件
yarn remove react react-dom
yarn add [email protected] [email protected]
git add .
git commit -am 'x'
yarn eject
简化css写法。less / sass是css的扩展语言。
easy less
将less
编译成同名css
,导入编译后的css文件即可。
安装less包 yarn add less-loader less // 安装到生产环境
暴露webpack yarn eject
webpack.config.js顶部新增
const lessRegex = /\.less$/
const lessModuleRegex = /\.module\.less$/
复制一份scss配置(根据test名称),并在oneof下新增即可
less
中用@
,sass
中用$
:
@fontSize: 18px;
.Login {
font-size: @fontSize - 3;
height: 300px;
line-height: 100px;
}
无返回值的混入:相当于封装样式,使用时直接调用。
.bordered();
或#d();
选择器混入:标签相同的选择器、样式,都封装到函数中。
.bordered() {
border-top: dotted 1px black;
border-bottom: solid 2px black;
// &通常用在伪类选择器,代表元素自身。
&:hover {
background-color: darksalmon;
color: bisque;
}
}
a {
.bordered();
}
命名空间混入:同时封装多个公共选择器样式,需要什么打点调什么。函数内不再是类名,而是选择器模块名称。
#mode {
.bgc {
backgroundColor: skyblue
}
}
p {
#mode .bgc();
}
.Regist {
> h3 {
// > 父子
font-size: @fontSize + 14;
}
> h3 + span {
// + 紧跟在后面的兄弟元素
color: blue;
font-weight: bolder;
}
> h3 ~ a {
// ~ 排在后面的兄弟元素
background-color: lightblue;
}
span {
// 后代
font-size: @fontSize;
}
}
calc()
:可以进行变量的计算,普通数学表达式无法识别。sass也是css的扩展语言,功能和less类似。
传统的sass使用缩进语法来表达标签之间的关系,没有{}语法。
scss是sass的升级版,支持css语法结构,有{}语法。建议使用scss。
React都支持。
是否使用?
能找到一个很好的短名字来描述这些属性修饰的样式。
todo-------------------------6-16sass—Cart---------------
yarn add -D sass-loader sass webpack
放什么?
放一些静态资源,不被webpack打包。直接被复制到构建文件夹dist中。
如:第三方文件(但一般是用yarn安装,用import导入)
自动根据环境变化选择不同环境,.env文件:
REACT_APP_DEVELOPMENT_API = "http://dev.baidu.com" // 开发
REACT_APP_PRODUCTION_API = "http://prod.baidu.com" // 生产
%REACT_APP_DEV_NAME%
%REACT_APP_PROD_NAME%
src/utils/ajax.js:ajax接口。判断环境变量,切换环境,打印api查看
export default function ajax() {
// 通过process.env获取当前项目中使用的环境变量
// NODE_ENV 是安装node.js时内置的环境变量。可以得到当前项目环境时生产环境还是开发环境。
let isProduction = process.env.NODE_ENV;
let api =
isProduction === "production"
? process.env.REACT_APP_PRODUCTION_API
: process.env.REACT_APP_DEVELOPMENT_API;
console.log("---", api);
}
process.env.NODE_ENV
%REACT_APP_DEV_NAME%
%REACT_APP_PROD_NAME%
针对很多组件都要使用这个方法或属性,为了避免在每个组件中频繁的导入,可以挂载到全局的原型对象
上。
在index.js中,引用ajax:
import ajax from "./utils/ajax";
全局挂载类组件内部的通用属性和方法,挂载到全局的原型对象上。
React.Component.prototype.$ajax = ajax;
子类可以通过this.$ajax();
使用此方法,如在jsx文件中使用:
componentDidMount() {
this.$ajax();
}
函数组件无法使用。
安装包
yarn add http-proxy-middleware // 和node.js中代理服务器使用的包一样
在src目录下新建文件setupProxy.js
const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = (app) => {
app.use(
"/lqb", // 前缀
createProxyMiddleware({
target: "https://www.lanqb.com", // 代理目标:放接口地址
changeOrigin: true,
pathRewrite: {
pathRewrite: {
"^/lqb": "", // 删除前缀
},
},
})
);
};