如今,几乎所有的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应用程序
原文地址:http://www.cnblogs.com/ljhseocom/p/7979387.html