免责声明:我是Node.js新手。
有许多基于类的语言可以/必须使用名称空间来组织代码,例如: Java、PHP、ActionScript 3…。对于许多这样的语言,如果您选择/必须使用名称空间,那么通常有一组管理项目组织的通用实践和约定:
src/或lib/)。com.badlogic.gdx.Application可以在src/com/badlogic/gdx/Application.java文件中找到Symfony\Component\HttpKernel\Kernel可以在src/Symfony/Component/HttpKernel/Kernel.php文件中找到。
import com.badlogic.gdx.Application;use Symfony\Component\HttpKernel\Kernel;
我已经习惯了这种类型的项目组织,但我意识到它是特定于基于类/命名空间的语言的,而且它可能与JavaScript/Node.js通常的习惯用法不匹配。如果我正确理解Node.js模块的概念,那就是1源文件=1模块,但从我在许多NPM包中看到的情况来看,一个模块通常导出多个符号,而且这些导出通常是函数而不是类/构造函数,因此它与上面描述的约定非常不同。
因此,我有以下问题:
class速记)来考虑责任分配是否相关?发布于 2017-01-27 06:31:39
在JavaScript/Node.js中,只考虑类(或仅限于原型)来考虑责任的分配是否相关?
在Javascript中,这是一种选择,而不是授权。您可以完全OOP,甚至文件结构明智。或者只是将模块编写为纯函数。我建议您坚持对其他人来说更容易遵循的结构,他们可能想了解您的代码。例如,OOP样式:
让命名空间成为src下的路径。
/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');因此,是的,在以面向对象的方式处理问题时,遵循OOP结构是相关的。也有其他的方法。
另一种面向“创建者”的定制风格:
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项目可以具有任何类型的代码组织:
发布于 2017-01-25 13:37:44
在JavaScript/Node.js中,只考虑类(或仅限于原型)来考虑责任的分配是否相关?
老实说,我不太明白这个问题。如果使用类,则应该遵循OOP原则,但如果不这样做,则仍然需要在函数之间找到衔接,并在此基础上将它们组织在模块和文件夹中。
在Node.js项目的上下文中,上面描述的代码组织的类型是通常的还是相关的,它在技术上是否可以在没有太多麻烦的情况下实现?
Javascript模块没有名称空间,这使事情变得简单一些(请记住,C#和c++项目通常有一个与名称空间完全不同的文件夹结构)。使用文件夹作为名称空间,您会没事的。没有这样的规则,即每个源文件只能有一个类。我通常开始在单个文件中编写类和函数,并在文件变大时将其重新组织为多个文件。JavaScript的模块系统非常灵活,您可以随意组织代码。
如果不是,在Node.js项目中处理责任重新划分和代码重用的传统方法是什么?
和其他地方一样。
https://stackoverflow.com/questions/41852627
复制相似问题