javascript - 如何在我的应用程序架构中确保有效的依赖关系图
问题描述
tl;博士:
是否可以加强/保证(使用库或其他东西).js 文件只能访问特定的模块子集?
例如:如果 .js 文件位于文件夹中/controllers
,则仅允许访问特定的全局模块(例如:)express
并从特定文件夹(例如:)导入../repositories
。不允许在此列表之外的任何内容
背后的理由:
在有许多开发人员的大型项目中,几乎不可避免地有人会侵入层。例如:在 MVC 控制器的操作中,通过db driver / SQL 访问数据库,而无需通过存储库或更复杂的抽象。
const express = require('express');
const router = express.Router();
const pg = require('pg');
const path = require('path');
const connectionString = process.env.DATABASE_URL;
router.get('/api/v1/todos', (req, res, next) => {
const results = [];
pg.connect(connectionString, (err, client, done) => {
const query = client.query('SELECT * FROM items ORDER BY id ASC;');
query.on('row', (row) => { results.push(row); });
query.on('end', () => {
done();
return res.json(results);
});
});
});
这个非常基本的例子,只是为了说明问题。事实上,在多层/多模块系统中,事情实际上有点复杂,随着项目的发展,出现无效的依赖关系图是很常见的。
我知道通过团队培训可以解决部分问题,但我想知道是否有任何方法可以系统地加强这一点。也许在 ESLint 上接近无限制导入或无限制模块。
编辑:
- ESLint 参考。
解决方案
推荐阅读
- .net - 如何读取 OAuthAuthorizationServerProvider 中生成的 refresh_token
- asp.net-core - Dapper 兼容性 .Net Core 3.1
- python - 试图将两个链表添加在一起但得到一个 AttributeError
- amazon-web-services - 为什么我在使用 Ansible playbook 创建 EC2 实例时收到“当前不支持请求的配置”?
- java - 什么控制 WebLogic 中的时区到 GMT 偏移映射?
- android - 可以将使用 Android Studio 制作的应用发布到 iOS 平台吗?
- c# - 如何从 WPF c# 中的 ListBox 中的 TextBox 获取所有值?
- java - 空对象引用上的 Model.Result.getFormatted_address()'
- xamarin - 将组件添加到每个视图
- python - 如何解决 ImportError: dlopen(): Symbol not found:.... Expected in: flat namespace