模块化方式构建Node.js应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块化方式构建Node.js应用程序相关的知识,希望对你有一定的参考价值。

如今,几乎所有的Web服务或集成都是在Node.js运行时上完成的。Node.js是一个具有很多社区支持的灵活平台。我们甚至可以直接从Node.js创建xlsx,docx或pdf文档。所有主流云平台都可以使用Node.js作为其1级语言。

技术分享图片

模块化

Node.js通过设计,可以使用node_modules结构来实现模块化。所有必需的模块都存储在node_modules目录中,并且我们可以在代码中的任何地方调用这些模块。

而现在,我们将在应用程序代码中使用这种模块化的方式。我看到的大多数应用程序都包含一个lib文件夹,其中存储了所有的JS文件。这些js文件使用相对路径导入所需区域。

const db = require("../db/")
const logging = require ("../../logging")

这种方法的主要问题是当我们改变服务文件的路径时,到DB的路径也应该改变。此外,格式是不可读的。我们将对文件的真实性感到困惑。

解决方案

一个更好的方法是将应用程序设计为模块,例如DB,日志记录,错误等。假设你的应用程序名称为cms,那么使用scope可以更容易地表示模块。

require("@cms/db")

你可以单独开发模块,并将它们发布到任何NPM服务器(公共/私有),并像任何其他模块一样使用它们。

如果你的应用程序需要日志记录模块:

npm install --save @cms/logging

如果你不想将应用程序分成几个部分,那么还有另一种方法。

更优的方式

将所需的模块保存在一个单独的文件夹中。假设有“@cms”。为每个模块使用单独的文件夹,让模块有一个单独的package.json。这样就可以成为一个有效的Node模块。

技术分享图片

技术分享图片

技术分享图片

模块的package.json将如下所示

{
  "name": "@cms/db",
  "version": "1.0.1",
  "description": "db module for CMS Application",
  "main": "index.js",
  "dependencies":{
"mysql" : "latest"
  }
}

模块准备好了之后,就可以做一些脚本了。在“scripts”文件夹中添加install.js。

let fs = require(‘fs‘)
console.log(‘Creating symlinks ...‘)
if (fs.existsSync(‘node_modules/@cms‘)) {
    console.log(‘link exists already ‘)
} else {
    let source = ‘../@cms‘
    console.log(`creating link for ${source}`)
    fs.symlinkSync(source, ‘node_modules/@cms‘, ‘junction‘)
    console.log(‘done‘)
}

将此脚本添加到main package.json。

{
  "name": "CMSApplication",
  "version": "1.0.1",
  "description": "Sample CMS Application",
  "main": "index.js",
  "scripts": {
    "install": "node scripts/install.js",
    "start": "node index.js"
  },
  "dependencies":{
"express" : "latest"
  }
}

每当你执行npm安装时都会执行该脚本。因此,一旦所有其他节点模块被定义并且依赖关系被安装好了之后,它将创建从@cms文件夹外部到@cms文件夹内部node_modules的链接。所以你对外部@cms文件夹所做的任何更改都将反映到文件夹内部的node_modules。

技术分享图片

你可以看到我们对@cms安装了符号链接。这不是一个快捷文件,不是在Linux中使用“ln”创建的硬链接。

在@cms内部,你可以看到我们在外部@cms文件夹中定义的模块。

这样你就实现了模块化。“@cms”文件夹是你源代码的一部分。然后你可以按正常方式导入所需的模块。

const {logger} = require("@cms/logging")
logger.info("Welcome to CMS Application")

当你希望应用程序执行时,运行“npm install”,然后运行“npm start”。

这种方法有助于使应用程序更加模块化和可扩展。欢迎在评论中讲述你的看法。

http://wfhuamei.com/
http://yong-elec.com/
http://tlwhcy.com/
http://ipumei.com/
http://qzcgyy.net/
http://cqtgzc.com/
http://myjjcn.com/
http://booioo.net/
http://gdlsly.com/
http://chinasstk.com/
http://metdmr.com/
http://syqixun.com/
http://shkuju.com/
http://rongju55.com/
http://yn698.com/
http://huabaoshicai.cn/
http://hshyin.com/
http://midea.ha.cn/
http://71cf.cn/
http://kmlbzs.com/

 



















以上是关于模块化方式构建Node.js应用程序的主要内容,如果未能解决你的问题,请参考以下文章

02-Node.js的包管理工具

node.js,错误:找不到模块'express'

什么是Node.js?[概念总结]

「Node学习笔记」Node.js的模块实现及编译

node js - 如何创建用于商业用途的构建?

构建基于 Node.js 的条形码识别程序