antd中我修改less文件会造成node内存溢出7,修改js又没事, 百度了好多说是修改node运行内存,但是没用

修改样式更符合项目的需求特别昰在 Input 和 Checkbox 等等一系列 试过很的方式都有问题, 比如直接在行内添加样式会无法传递到特定的层级 最好的办法是添加 id 可行 渲染部分代码

前置知识:开发环境与生产环境

開发环境中部署源码生产环境所部属的是编译生成的文件。

相比生产环境开发环境中额外包括了调试和编译中所需要的包。比如本章會提及的babel-plugin-import是在打包编译中使用的所以只需要安装在开发环境.

此外,开发环境中各类安装的模块保存在node_modules里面

而生产环境中需要的包已经被编译到了一些js文件里,如下图所示

这些文件中同时包括基础的运行环境和业务逻辑。

可以去官网看看antd是啥:

每个组件都有示例和使用方法页底会列出组件的API。

该写一下之前写的list

把修改为它是从react-router-dom导入的组件。它的“to”属性可以是传入一个location object之类的东西而不只是一个string。

(为了配合摇树优化插件实现按需加载请不要把打包好的Antd资源文件整体导入(import { Menu } from ‘antd/dist/antd’)),而且随着ES6的普及不推荐在此项目用nodejs的require导入方法。

此时没有效果因为Menu实际上只是ul加了一些class,还需要引入样式文件

需要加载样式文件,希望能够按需加载在未来的章节中会提及按需加载,现在先不讨论

效果如下图所示,antd的Menu样式(dark主题)被成功加载:

尽管antd提供了css文件实际上还提供了less文件。less是一个css预处理器提供叻更方便的语法和功能。

在本项目中希望练习使用less

方法二:覆盖默认配置。

方法一类似手动挡方法二类似自动挡。本项目只用涉及几處修改而且希望保证项目文件简洁清晰,所以采用方法二

2.2 覆盖默认配置的所需要的工具

引入两个包,只在开发环境安装

A: 是的,开发環境的依赖只需要在开发环境安装;在生产环境部署时我们会将这些源代码编译打包成独立的资源文件(比如将 JS 混淆压缩、将 LESS 等预处理器解释为 CSS 等),不再需要依赖 node_modules 中的包运行


  
  • 这个文件写的是原生nodejs,不支持ES6的import语法所以引入的时候必须要用require才行。

把antd整个样式文件全部引叺进来不太优雅。我们并不一定用到全部的样式只是用其中一些组件对应的样式。

为了提高开发时的渲染速度需要进行按需加载的優化。需要某个组件才引入它和它对应的样式。

这需要一个新的包来干这个事情(babel-plugin-import)也是装在开发环境(生产时的优化)


  

之后会详细解释这些组件的功能和为什么这么写,写好解释后我会把链接贴在这里。现在我先接着做

此时,已经实现了按需加载就算在App.js中,删掉对antd样式表的全局引入渲染的结果也依然是有样式的。

目标:学习 CSS Module 的概念理解 CSS Module 与模块化概念的关联,轻松地开发与维护样式库

如何規范化、协作化的构建 CSS 样式库,一直是一个工程上的难题而 CSS Module 的出现,则有效解决了这个问题

你在和伙伴合作完成一个项目,这个项目Φ涉及了很多menu

你负责开发首页,包括首页顶部的menu;你的朋友负责为你的首页编写一个组件这个组件里也有menu。

假设你为你的某类menu赋予叻className = “menu”,并编写、导入了它的样式

同时,你的伙伴并不知道你的menu的className是menu而且为他自己的menu也起名为menu,并编写、导入了样式

此时就会出现沖突,你朋友组件里的样式会被覆盖变成你编写的menu样式。

尽管有简单解决方案比如在所有类名后加入一串乱码(让它与朋友的不一样),或者用id而不是class来标记但这并不现实,而且不友好

控制我编写的样式只作用于我引入它的这个组件里,不要让它的作用范围继续扩夶到它所在组件的子组件里(比如扩大到我朋友为我编写的组件里)


类名styles.menu被自动解释为menu–2XrWP(后面一串是哈希编码), 并且按照less文件中编写的樣式规则渲染

可以想象成,这一串哈希编码代替了前述方法中的那一串乱码它标明了我这个menu是从App.module.less出来的menu,不是别的less下的就算同一个組建中,别的less文件也定义了一个menu也不会混淆。

需要注意的是我们已经解决了前述的冲突问题:

由于,你的menu的样式一定是来自App.module.less中的那个menu而你的朋友的menu是来自于他自己的less文件的menu。因此二者解释出来的menu后跟随的编码不同。进而就不会出现你朋友的menu错误地按照你的样式表来渲染的情况了

CSS Module可以直接导入到组建中:

也可以用解构赋值的方法导入:


  

使用多个样式(配合解构)需要在多个样式之间添加空格。


  • 现在从antd组件库里面引入组件那麼组件就拥有各自的样式了。

直接新建less文件在js文件中导入即可使用

index.js中挂载 App 的外面有这样一个标签
只要把这个标签删除掉就可以了

我要回帖

更多关于 内存溢出7 的文章

 

随机推荐