程序员必备:掌握Node.js应用构建的七大技巧!

发表时间: 2017-06-28 21:31

Node.js快速超过了Java,Ruby,Python和.Net成为了新一代开发Web应用程序的首选语言。Node.js团队正在使JavaScript运行时更好、更快、更稳定。

随着应用程序的不断发展,越来越多的程序员选择学习Node.js。幸运的是,Node.js社区已经开始用框架和设计模式来解决大部分问题,这不仅解决了常见问题,而且还有助于构建应用程序。

框架通常是MVC(model-view-controller),MVVM(model-view-viewmodel),MVP(model-view-presenter)或MV。由于许多年轻的程序员和Node.js爱好者并不了解设计模式或OOP(面向对象编程)图如何映射到应用程序中的代码行或结构。他们还会告诉你模型、视图和控制器代码在哪,路由在哪里以及应该添加配置的位置。

虽然有框架,但还是有很多问题值得注意。以下是我在编写Node.js应用程序之前考虑的七个关键点:

1、正确的应用程序目录结构

在决定应用程序的目录结构时,应该考虑选择什么样的设计模式。这将有助于更快地插入、查找和隔离代码。我个人更喜欢使用MVC模式架构Node.js应用程序。它可以帮助程序员更快地开发,为同一数据创建多个视图提供了灵活性,并允许MVC组件之间的异步通信和隔离。


我喜欢遵循上面显示的目录结构,它基于Ruby on Rails和Express.js。

2、将E-R图映射到模型

如Techopedia所定义的,“实体关系图(ERD)是一种数据建模技术,图形化地说明了信息系统实体之间的关系。”E-R图概述了将参与系统的各种实体,并定义了他们之间的相互关系。

例如,如果您的实体是用户,则相应的模型将是具有属性的“用户”,如数据库中的first_name,last_name和address以及相应的表和列。

使用简单的数据架构,可以随时在创建新模式时跟踪数据库和文件增长。

3、使用MVP模式

实现MVC并不意味着只为控制器、视图和模型创建文件。您还需要根据MVC划分代码和逻辑,模型中的代码应严格限于数据库模式定义。程序员通常会忘记,模型还将具有执行CRUD操作的代码。此外,该模型中特定的函数或操作都应该存在于该文件中,与模型相关的大多数业务逻辑也应该在此文件中。

一个常见的错误是将所有业务逻辑转储到控制器中。控制器应该仅从模型或其他组件调用函数,在组件之间传输数据,并控制请求流程,而视图文件夹只应具有将对象转换为人类可读形式的代码。在视图中不应该有格式化数据或排序过滤的逻辑。保持视图清洁不仅可以提供更好的用户体验,还可以帮助程序员更改视图,而无需更改其他任何组件。

4、把逻辑分解成模块

作为程序员,我们总是被告知应该将代码组织成文件和模块,这并不意味着我们应该尝试将整个应用程序整合到一个文件中。基于逻辑和功能划分代码是最好的方法,将与单个实体或对象相关的功能分组到单个文件中,并且基于逻辑组织的目录结构具有许多优点。首先,当修复错误时,它将节省大量时间确定功能。 其次,它有助于解耦架构中的所有组件,便于替换离散功能,而无需修改其他任何代码行。第三,它也有助于编写测试用例。

5、测试用例的重要性

建立测试用例时,切入角度非常重要——测试是代码库的守护者。随着应用程序的逐步完成,编码时必须要覆盖所有场景变得更加困难。测试用例可以帮助程序员保持代码库的稳定。测试可节省开发时间和精力,帮助程序员确保新功能的无错误推送,它还通过在生产之前捕获错误来帮助提高代码质量。最重要的是,测试有助于灌输程序员代码不会崩溃的信心。

6、日志的重要性

日志对于调试和了解应用程序的状态很有用。它们为应用程序的行为提供了宝贵的见解,以下是利用日志记录时要牢记的事项列表:

  • 在记录时找到平衡点。拥有尽可能多的信息没有坏处,但过度记录只会使工作变得更加困难。另一方面,记录不良会导致调试或诊断信息太少。

  • 分配离线和在线日志,保存最新日志以进行快速检索和处理,而将较旧的日志存档或转储到文件。

  • 考虑日志的频率和持续时间,因为它会影响存储空间。大多数情况下,需要的存储空间应该与拥有的日志数量成正比。

请记住,请勿记录电子邮件ID,密码,信用卡信息和电话号码等敏感数据。这不仅是一个巨大的安全隐患,而且通常是非法的。

7、应用程序的可扩展性

最糟糕的应用程序开发方法是在获得流量后考虑如何扩展。相反,程序员应该建立一个能够从一开始就易于扩展的架构,以节省时间并提高生产力。

这并不意味着当负载增加时不应该产生新的服务器。首先,应该在当前资源内设置负载平衡,以处理增加的负载。当负载平衡无法有效地管理工作负载时,现在是开始水平扩展和产生新服务器的时候了。程序员可以通过独立的无状态进程或模块实现此目的,每个过程或模块将以独立的方式工作。这不仅有助于应用程序的高效扩展,而且还使系统具备容错能力并易于恢复。

构建Web应用程序的方式与选择正确的技术一样重要。如果应用程序的设计有缺陷,应用程序最终将崩溃或无法扩展,或者在某些情况下根本无法启动。如果没有适当的规划和架构,就不要急于开发新的功能或想法。糟糕的架构就像一个定时炸弹,某个时间总会爆炸。

广大Node.js程序员,还有要补充的吗?评论区唠唠嗑吧!