构建现有JS代码的框架

Pau*_*aul 5 javascript oop refactoring frameworks

我有一些我为开源应用程序编写的程序性javascript代码,我想将它重构为OOP,因为我对javascript框架的经验很少,所以我很难找到一个适合我需求的代码,尽管我没有我还没试过任何东西,我刚刚读到了AngularJS,Backbone.js和Knockout.

我想构建代码,因为,目前,有一堆乱七八糟的全局变量和函数.

我必须提到所有业务逻辑都在服务器级别处理,因此客户端代码使用它接收的数据或来自服务器的请求来处理UI.

代码可以在这里找到:https: //github.com/paullik/webchat/blob/asp.net/webchat/Static/Js/chat.js

你有什么建议吗?

Jac*_*one 5

面向对象的JavaScript不一定是您所有问题的答案.

我的建议是要谨慎选择这个主题.

实际上,OO-JS可以为代码添加更多复杂性,以便更像传统的面向对象语言.您可能知道,JS是独一无二的.

重要的是要知道有一些设计模式可以构建您的代码并保持实现轻松灵活.

设计模式,我看到构建高级JS实现,而不是OO.用Axel Rauchmeyer的话来说 - "面向对象的方法不适合基本的JavaScript语法,它是一个扭曲和扭曲的实现,JS更具表现力."

这个分析的根源归结为JS没有类.本质上,由于一切都是对象,因此您已经拥有面向对象的变量和函数.因此,问题与编译语言(C/Java)中的问题略有不同.

JavaScript有哪些设计模式?

一个很好的检查资源是Addy O'Somani和Essential Design Patterns. 他用JavaScript编写了这本关于设计模式的书.

但还有更多......更多.

A. require.js - 有一种以令人印象深刻的方式加载JS代码模块的方法.这些通常被称为模块加载器,并且被广泛认为是加载js文件的未来,因为它们在运行时优化了性能.yepnope和其他人存在.如果要加载多个js文件,请记住这一点.(根据要求移至顶部).

B. MVC - 有许多模型视图控制器框架可以帮助您构建代码.这是一种模式,但对于您的目的可能是不合理的.你提到了骨干,淘汰赛和角球......是的.这些可以帮到你,但我会担心它们可能是1)高学习曲线,2)你的环境有点过分.

C.命名空间或模块模式.对您的需求而言可能是最重要的. 要解决全局变量,只需将它们包装在命名空间中并引用它即可.这些是非常好的模式,可以产生模块加载器.

D.关闭 - 你提到了OO JS.关于这个有用的部分是封闭的概念,为自己提供......私人成员.起初这是一个神秘的想法,但在你认识到这种模式之后,这是一种微不足道的做法.

E.自定义事件 - 不在对象之间使用硬引用变得非常重要.示例:AnotherObject.member;这是因为它会将两个对象紧密耦合在一起,使两个对象都无法更改.要解决此问题,请触发并聆听事件.在传统的设计模式中,这是观察者.在JS中,它被称为PubSub.

F.回调 - 回调模式是启用AJAX的,它正在改变Window 8,Firefox OS和Node.js方面的开发 - 因为有一些叫做non-blocking-io.很重要.

不要害怕.这是长期和高级JavaScript实现的方向.

一旦你认出了这些图案,就会从那里下山.

希望这可以帮助.