ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

如何从基于对象的语言转移到服务器端Node.js大型项目的Javascript?

2019-06-10 14:23:50  阅读:161  来源: 互联网

标签:javascript oop node-js inheritance functional-programming


我已经决定习惯使用Javascript作为我的服务器端(我使用Node.js)语言来设置网络服务器,创建服务器守护程序等等.这是一个相当大的项目,这意味着我必须习惯语言并在实际开始之前为自己设置最佳设置,以避免开销和不必要的麻烦.

我一直在寻找可以解释大项目中函数式编程基础知识的资源.不幸的是,大多数消息来源只谈论基本的Javascript意味着浏览器中的简单技巧.

解释Javascript中对象创建如何工作的两个有用链接是http://howtonode.org/object-graphshttp://howtonode.org/object-graphs-2.

最后,创建一个像这样的对象似乎是最明智的:

function MyObject(constructorMemberOne, constructorMemberTwo) {
   this.constructorMemberOne = constructorMemberOne;
   this.constructorMemberTwo = constructorMembertwo;
   this.doSomething = function doSomething() {
       //
   }
}

现在,我正在寻找一个完整的Javascript语言参考.到目前为止,https://developer.mozilla.org/en/JavaScript/Reference似乎是最完整的.

Q1:这是推荐的ECMAScript语言参考吗?我主要是因为它是由一家主要在浏览器行业工作的公司采购的,但Javascript并不仅仅适用于浏览器 – 也许有一些我不知道的消息来源.

其次,我习惯为我创建的每个类创建一个新文件,其中文件名表示类的名称. Q2:这也是Javascript(V8,Node.js)推荐的做法吗?如何“导入”这门课程?

这种“导入”让我对Node.js的“require”感到困惑.我知道它不一样.需要基本上加载另一个文件然后拥有它自己的命名空间,这意味着它的变量超出了需要该文件的文件的范围.但是对于我的类,我希望这个类可以使用“导入”类的方法(引用,因为我不确定这是否可能).例如.:

var utils = require("utils/MainUtils.js");
utils.doSomething();

据我所知,这个doSomething()方法只有在设置如下时才可用:

function MainUtils() {
   exports.doSomething = function doSomething() {
      //
   }
}

问题3:这是正确的吗?这看起来不是很不正常吗?

问题4:是否有其他博客或资源有助于我的设置工作,例如howtonode.org?

最后,问题5:是否有任何努力使大型项目更容易实现所有这些继承,对象创建,项目结构,命名空间等?任何图书馆或用于此目的的东西?

希望我的问题很清楚.任何帮助表示赞赏.谢谢.

解决方法:

is this the recommended ECMAScript language reference?

那么官方的ECMAScript语言参考就是ECMA-262本身.但不幸的是,即使按标准文件的标准,这也是完全不可读的.

ECMA不生产针对最终程序员的任何材料,并且没有一个教程被认为是“最好的”.至少,MDC链接看起来不错. (大多数JavaScript教程都非常糟糕且充满了错误.这部分是JavaScript的错误,因为有这么多…古怪的…功能,但仍然.)

In the end, it seems most wise to create an object like:

遗憾的是,在JavaScript中没有广泛接受的“最佳”方法来实现类/实例系统.很多框架都有自己的系统,或者你可以酿造自己的系统.您的示例代码为每个对象实例创建每个方法的新实例,与JS的本机原型相比,您可能认为这个实例不是最理想的. (通常这种方法在闭包中使用var = this来避免回调代码中的这种绑定问题.)您还需要注意如何创建子类并在构造函数中初始化它们.

有关JS中类/实例的方法的讨论,请参见this question.

I’m used to creating a new file for every class I create

是的,那是你不应该带给JS的Java疣.

将源文件保存在可管理的相关类和函数块中.有时这将是每个文件的一个公共类,更常见的是它不会.

How would one “import” this class?

JS本身没有本机导入功能.在浏览器中,您可以通过插入< script>来实现.由XMLHttpRequest提取的标记或评估代码,并且必须手动将变量保存在单独的命名空间中.在Node.js和您使用CommonJS的其他地方,您使用模块和require().

Is that correct?

是.

Doesn’t that seem quite abnormal?

我不这么认为.它类似于其他脚本语言,它证明非常有用.只有Java才会强制您将编译单元包装到单个类中.

标签:javascript,oop,node-js,inheritance,functional-programming
来源: https://codeday.me/bug/20190610/1212445.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有