nodejs模块化开发问题总结

近日使用nodejs搭建了一个小程序的后端程序架构,在拆分架构模块的时候遇到一些问题,稍微就做一下总结吧

什么是模块化开发?

就我个人对于模块化开发的理解而言,大概可以分为以下几点

  1. 重用 尽可能把我们重复的操作提炼封装出来一个公用的,好处无非就是减少代码量,方便管理维护,若逻辑有变化,只需要更改公共代码就可以了。
  2. 易读性 个人认为模块开发更是一种思想,例如比起在一个函数内写一大堆面条式的代码,将一个方法合理的拆分成多个方法,然后通过调用方法传参组装成完整的逻辑,无论是在易读性还是后期维护上都要更好一些,这也可以理解为是模块化开发的一种。
  3. 项目组成结构清晰 我始终认为一个项目架构搭建好不好,不仅仅体现在我们开发过程中是否会更有效率,是否更加利于维护,代码容错率等等。。。一个项目的架构组成体系是否足够清晰,也十分重要,如何将项目的公共代码,逻辑代码,工具代码,视图代码,数据存储代码,插件。。。等等这些合理的设计、拆分就需要对模块化开发有一定的理解

模块化可以说的东西太多了,像vue的组件化开发,和模块化开发在思想上我认为是差不多的,而vue的组件化开发又在移动端的开发上体现的更多,我就不再赘述了,希望大家还是要有自己的理解,切勿太过依赖网上刻板式的解释

exports建议以函数导出模块

A.js

var getName = {
  showName(){
    console.log("My Name")
  }
}
exports = getName

B.js

var showName = bName.showName()
exports = showName

C.js

var A = require("A")
var B = require("B")
global.bName = A.getName
console.log(B.showName)

我首先是把两个模块都引入进来,然后将A.getName设置为全局属性,这样在所有地方就都可以访问到,即B.js中也可以访问到,

但运行后会报错,说在B.js中找不到bName,经测试后发现,实际上在我引入B.js时,其内部代码就已经被编译执行了,后查阅资料发现require引入方式,与import不同的地方在于,require是拷贝,而import是只读引用地址,如果是拷贝的话,就不难理解为什么会报错了。

虽然说只需要把 global.bName = A.getName 放在 var B = require(“B”) 之前就可以解决问题,但是我更倾向另一种
修改B.js

var showName = function(){
     return bName.showName()
}
exports = showName

所以与其调整顺序 不如在导出模块时,就采用这种函数式的导出

require与import的不同

我简单说几点,require遵循CommonJS规范,import是es6中的语法,如果想在nodejs环境下使用import,就需要使用babel将es6语法转换为es5,我在知乎上看到过一篇关于这个问题的文章,写的很详细
require与import的不同

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值