基于类/命名空间的代码组织在JavaScript/Node.js中是否相关?
免责声明:我是Node.js新手 有许多基于类的语言,您可以/必须使用名称空间来组织代码,例如:Java、PHP、ActionScript 3……对于其中的一些语言,如果您选择/必须使用名称空间,则通常有一组管理项目组织的常用做法和约定:基于类/命名空间的代码组织在JavaScript/Node.js中是否相关?,javascript,node.js,ecmascript-6,project-organization,Javascript,Node.js,Ecmascript 6,Project Organization,免责声明:我是Node.js新手 有许多基于类的语言,您可以/必须使用名称空间来组织代码,例如:Java、PHP、ActionScript 3……对于其中的一些语言,如果您选择/必须使用名称空间,则通常有一组管理项目组织的常用做法和约定: 类构成基本的代码单元,职责分布在多个类中 类文件层次结构位于单个顶级目录中(大多数情况下:src/或lib/) 每个源文件只包含一个类定义,没有其他内容 每个类驻留在命名空间(或包)层次结构的特定级别,该层次结构反映了文件系统;例如: 在Java中:cla
- 类构成基本的代码单元,职责分布在多个类中
- 类文件层次结构位于单个顶级目录中(大多数情况下:
或src/
)lib/
- 每个源文件只包含一个类定义,没有其他内容
- 每个类驻留在命名空间(或包)层次结构的特定级别,该层次结构反映了文件系统;例如:
- 在Java中:class
可以在com.badlogic.gdx.Application
文件中找到src/com/badlogic/gdx/Application.Java
- 在PHP中(使用PSR-0):类
可以在Symfony\Component\HttpKernel\Kernel
文件中找到src/Symfony/Component/HttpKernel/Kernel.PHP
- 在Java中:class
- 可以通过特定语句将外部类符号导入当前范围:
- 在Java中:
import com.badlogic.gdx.Application代码>
- 在PHP中:
使用Symfony\Component\HttpKernel\Kernel代码>
- 在Java中:
- 在JavaScript/Node.js中,考虑“仅类”方面的责任分配(使用传统的构造函数+原型组合方法或新的
速记)是否相关李>类
- 在Node.js项目的上下文中,上述项目组织类型是否可能
/src/org/xml/XMLDocument.js
并且有一个与流行的OOP语言非常相似的类:
// imports
const fs = require('fs');
const XMLNode = require('./XMLNode');
// class def
class XMLDocument extends XMLNode {
// constructor
constructor(filePath){
...
}
// property getter
get filePath(){
...
}
// method
function getElementsByName(name){
...
}
}
// export class to outer world
module.exports = XMLDocument;
使用该类
// import
const XMLDocument = require('./org/xml/XMLDocument');
// create an instance
const doc = new XMLDocument('./mydoc.xml');
所以,是的,当你用面向对象的方法解决问题时,遵循面向对象的结构是相关的。还有其他的方法
另一种面向“创建者”的自定义样式:
function createXMLDocument(filePath){
const doc = {};
doc._type = "XMLDocument";
... // make the object have XMLDocument features
return doc;
}
function createDXMLDocument(filePath){
const doc = cerateXMLDocument(filePath);
doc._type = "DXMLDocument";
... // modify parent object with DXML features
return doc;
}
您知道,开发人员遵循一些模式,并以这种风格编写所有项目代码
在Node.js项目的上下文中,上述项目组织类型是否可能
由于某些特性,Node.js项目可以具有任何类型的代码组织:
当然,没有“规则”本身强制执行“一个文件一个类”的习惯用法,但在许多基于类/名称空间的语言中,这是一个公认的惯例。我的问题是,是否有可能在Node.js中«模仿»该约定+名称空间。也许我的问题不够清楚/具体,我已经编辑过了。在代码中提到名称空间也是值得的,不仅仅是在文件名中(例如)。非常感谢这个令人敬畏的完整答案,这正是我想要的。