微前端等新型架构
优势
- 技术栈无关
- 主框架不限制介入应用的技术栈,微应用具备完全自主权
- 独立开发、独立部署
- 增量升级
- 微前端是一种非常好的实现渐进式重构的手段和策略
- 微应用仓库独立,前后端可独立开发,主框架自动完成同步更新
- 独立运行
- 每个微应用之间状态隔离,运行时状态不共享
劣势
- 接入难度较高
- 应用场景移动端少,管理端多
软件设计原则
单一职责原则
不管是封装方法还是分装类,一个方法或是一个类只实现一个功能,比如说验证数字和验证身份证号是完全独立的两个类。
开放封闭原则
对于开放封闭原则,笔者原来的理解不是很清晰,也借着这篇文章来理清楚。开放封闭原则这个面向对象设计思想,是由 Bertrand Meyer 最先进行描述的,他讲到“软件实体(如类、模块、函数等)应该对扩展开放,对修改封闭”。
解读其中心思想大致为,我们应努力达到每一次需求变动产生时,不必通过修改代码的方式就能满足的效果。对于不同的上下文环境,如何实现这个效果的方式是有差别的,而这个上下文环境通常是指编程语言。
其实,通俗的讲就是用继承或者新增的方式去扩展一个类,而不是直接去修改一个类。这种方式在应对需求变更是比较有效的,比如说原来的需求是计算一个矩形的面积,那么原来的方法只要定义两个参数:长和款。
function Rectangle(width, height) {
this.width = width
this.height = height
}
在计算面积的时候可以用其他的类来实现,相当于对Rectangle类的扩展,但不会对Rectangle类污染。比如说现在要计算一系列的矩形的面积,那么这时就需要通过另外的方法来解决。
function AreaCalculator() {
this.area = function (shapes) {
let area = 0
for (let shape of shapes) {
if (shape instanceof Rectangle) {
area += shape.width * shape.height
}
}
return area
}
}
这样的好处就是不需要对原来的类变更,引起其他方面的问题,坏处就是代码的开发量比较大,增加开发时长。
最少知识原则
通俗的说就是高类聚,低耦合。单一职责原则指导我们把对象划分成较小的粒度,这可以提高对象的可复用性。但越来越多的对象之间可能会产生错综复杂的联系,如果修改了其中一个对象,很可能会影响到跟它相互引用的其他对象。对象和对象耦合在一起,有可能会降低它们的可复用性。在程序中,对象的“朋友”太多并不是一件好事,“城门失火,殃及池鱼”和“一人犯法,株连九族”的故事时有发生。
最少知识原则要求我们在设计程序时,应当尽量减少对象之间的交互。如果两个对象之间不必彼此直接信,那么这两个对象就不要发生直接的相互联系。常见的做法是引入一个第三者对象,来承担这些对象之间的通信作用。如果一些对象需要向另一些对象发起请求,可以通过第三者对象来转发这些请求。
应用在前端领域的话,就是要封装单一功能的组件,然后在其他功能上复用这些组件。在改动组件功能的时候,改一个就能改掉全部。
封装的另一个好处是减少冲突,限制了变量的作用域。比如在一个类中定义变量a,就不会单行其他地方再定义一个变量a,因为作用域隔离。