前端的形和神

59 阅读5分钟

一、概念解读

图片

​“形”指的是前端开发中的具体技术和工具,包括HTML、CSS、JavaScript,代码结构,目录等;而“神”则指的是前端开发中的抽象思维和设计能力,包括用户体验、页面交互、前端架构,编程思想,设计思想等。

可以效仿大地,包容万物,学而后思,先进行学习、接受知识和经验,然后进行深思熟虑,将所学的知识转化为自己的理解和思考即是神的转化过程。

二、指导思想

2.1立方向

编码得有思想(神)去指导产生形的代码结构,而不是反过来,首先方向得正确。

2.2化繁为简

看牛人代码也如此,不要去看代码结构的组成,生搬硬套拿来使用,这都是形,同一个思想可以产生不同形,只学形没用,太多了,很繁,要抓住神就学到了所有,神其实就是一个简单的思想,要懂得化繁(形)为简(神),如何抓住神,就是看为什么这样组织代码结构的思想。

三、形和神的区别

“形”和“神”在前端开发中的区别在于,前者是具体的技术和工具,可以通过学习和实践获得;而后者则是抽象的思维和设计能力,需要通过不断的实践和思考才能够领悟。

形和神的关系就像是身体和灵魂的关系一样,一个好的前端开发者需要同时具备形和神两方面的能力。

三、如何学习到神

学习到前端开发中的“神”需要不断的实践和思考,学而后思。

首先,需要了解用户的需求和心理,掌握用户体验设计的基本原则。

其次,需要了解前端开发中的常用设计模式和架构,掌握前端开发的基本思维方式。

最后,需要在实践中不断积累经验,不断思考和总结,提高自己的设计能力(这里的设计是广义的,可以是架构设计,编程设计,代码目录组织设计,用户体验设计等)。

四、举例说明

下边举一个没有学到代码“神”写出的面条代码(为了完成功能而完成),和封装良好学到“神”的可扩展、可维护、可复用的代码的区别。

首先,让我们看一个面条代码的例子:

function calculateArea(length, width) {
    if (length > 0 && width > 0) {
        if (length === width) {
            console.log("It's a square");
            return length * width;
        } else {
            console.log("It's a rectangle");
            return length * width;
        }
    } else {
        console.log("Invalid input");
        return null;
    }
}

上述代码用于计算矩形或正方形的面积。同样,这段代码存在一些问题:

  • 代码缺乏结构和组织,难以理解和维护。
  • 代码中的重复逻辑(判断正方形或矩形)造成了冗余。
  • 函数没有清晰的接口和抽象层,外部调用者需要了解内部的实现细节。

接下来,我们看一个封装良好的可扩展、可维护、可复用的代码的例子:

class Shape {
    constructor(length, width) {
        this.length = length;
        this.width = width;
    }

    calculateArea() {
        if (this.length > 0 && this.width > 0) {
            return this.length * this.width;
        } else {
            return null;
        }
    }

    isSquare() {
        return this.length === this.width;
    }
}

class Rectangle extends Shape {
    constructor(length, width) {
        super(length, width);
        this.shapeType = "Rectangle";
    }
}

class Square extends Shape {
    constructor(side) {
        super(side, side);
        this.shapeType = "Square";
    }
}

上述代码使用面向对象的方式进行了封装,具有以下优点:

  • 代码被组织成类,每个类负责特定的功能。Shape类负责一般的形状计算,Rectangle和Square类分别负责矩形和正方形的计算。
  • 类之间的继承关系和构造函数的重写提供了清晰的接口和抽象层,外部调用者只需要了解Shape、Rectangle和Square类的公共方法即可使用。
    代码具有良好的可扩展性和可复用性。如果需要添加其他形状的计算,只需创建新的类并继承Shape类即可。
  • 代码易于理解和维护,逻辑清晰,减少了重复的逻辑。

总结来说,封装良好的代码通过类和对象的组织,清晰的接口和抽象层,以及良好的结构设计,提供了可扩展、可维护、可复用的代码。与此相反,面条代码缺乏结构和组织,逻辑混乱,难以理解和维护。

这里代码的“神”指的就是:学到了可维护,可扩展,可复用的编程思想,以神来指导编程。

其中编码常用的“神”还有如下:

  • 模块化:代码被分解成小而独立的模块,每个模块负责特定的功能。这种模块化结构使得代码更易于理解和修改。
  • 单一职责原则:每个模块或类只负责一个特定的功能,遵循单一职责原则。这有助于代码的可维护性和可复用性。
    高内聚低耦合:模块之间的依赖关系尽量降低,模块内部的组件和功能紧密相关。这样可以减少代码的耦合度,提高代码的可维护性和可扩展性。
  • 清晰的接口和抽象:良好封装的代码会提供清晰的接口和抽象层,使得外部使用者能够简单地使用代码,而不需要了解内部的实现细节。
  • 代码复用:封装良好的代码可以被多个地方复用,避免了重复编写类似的代码,提高了开发效率。
  • 易于测试:良好封装的代码容易进行单元测试和集成测试,因为代码的功能被清晰地分割和组织。

最后,创作不易插播一则广告:

【「合图图」产品介绍】

  • 主要功能为:本地添加相册图片进行无限长图高清拼接,各种布局拼接等
  • 安全:无后台服务,全程设备本地运行,隐私100%安全;
  • 高效:自由布局+实时预览,效果所见即所得;
  • 高清:秒生高清拼图,一键保存相册。
  • 立即体验 →合图图 或微信小程序搜索「合图图」