我应该学习什么样的体系结构来制作好基于JavaScript的软件?

我应该学习什么样的体系结构来制作好基于JavaScript的软件?,javascript,html,Javascript,Html,我非常了解模型-视图-控制器,多年来一直了解它,并在使用PHP等语言进行服务器端开发时使用它 然而,我现在正在使用JavaScript,并利用SVG、Canvas以及现代浏览器支持的其他强大功能构建一个大型应用程序。这个项目很大,因此,它背后的架构一定不会脆弱 JavaScript和MVC并不像着火的房子一样,因为JavaScript是由大自然驱动的事件。那么,我是否应该学习、理解和实现任何体系结构或其他东西 软件必须处理数据。它已经利用了本地存储和web SQL数据库。我需要一个模特,对吗?有

我非常了解模型-视图-控制器,多年来一直了解它,并在使用PHP等语言进行服务器端开发时使用它

然而,我现在正在使用JavaScript,并利用SVG、Canvas以及现代浏览器支持的其他强大功能构建一个大型应用程序。这个项目很大,因此,它背后的架构一定不会脆弱

JavaScript和MVC并不像着火的房子一样,因为JavaScript是由大自然驱动的事件。那么,我是否应该学习、理解和实现任何体系结构或其他东西

软件必须处理数据。它已经利用了本地存储和web SQL数据库。我需要一个模特,对吗?有一个UI,所以我有视图?但是,我有控制器吗?活动呢?我如何组织一切


建筑,建筑,建筑,这就是我感兴趣的。我对自己选择的语言很满意。

在我看来,MVC仍然是一条路要走。如果您正在寻找一个好的框架来帮助您轻松地实现这一点,我会看看,它有模型、视图、控制器、单元测试、jQuery支持等等。

您应该了解客户端JavaScript基于事件的本质,以及它如何与基于MVC的服务器端应用程序相融合

您还应该学习如何在基于原型的Javascript继承结构中正确编程


这两种功能都允许您编写JavaScript,使其与服务器端应用程序框架相匹配,并且具有可扩展性和可重用性。

在多年的JavaScript编程过程中,我学到的一件事是编写不引人注目的Javascripting,这基本上意味着尽可能多地分离结构(HTML)和样式(CSS)来自行为(JAVASCRIPT)

尽管不是一个原始的javascript解决方案,但看看MVC的jQuery架构

CorMVC是一个jQuery驱动的 模型-视图-控制器(MVC)框架 这有助于发展 单页、基于web的应用程序。 CorMVC仅代表客户要求 设计了模型-视图控制器 成为可能的最低进入点 学习单页应用程序 建筑学这并不是预设的 任何服务器端技术或web 任何类型的服务器,并且不需要 不仅仅是一个网络浏览器 跑步


首先,我是JavaScriptMVC的作者,所以我在很多方面都极有偏见。首先,在JS应用程序中有6件事是你永远不会做的:

  • 加载脚本
  • 响应用户事件
  • 更新DOM
  • 从服务器请求数据
  • 将该数据转换为对JavaScript有用的内容
  • 组织前端业务逻辑
  • 您对体系结构的选择可能取决于您想要/需要什么工具

    对于一般架构,我确实认为分离关注点很重要

    我强烈建议您找到一些进行依赖关系管理和客户端模板的方法。他们会让你的生活轻松很多

    JavaScriptMVC使用分层MVC方法,该方法主要基于自定义UI事件和OpenAjax事件

    我使用构建底层小部件的方式与构建jQuery小部件的方式类似。最大的区别在于,这些小部件生成了顶级控制器可以监听的非ui事件。例如,tabs小部件可能会产生“tab.activate”事件,如:

    $('.tab').trigger('tab.activated')
    
    然后,我的高阶控制器可能会侦听tab.activated事件,并对模型进行修改以更新选项卡内容,如:

    ".flickr tab.activated" : function(tabEl, ev){
      Flickr.findAll({type : "rainbows"}, function(images){
        tabEl.html("//path/to/view", images );
      }
    }
    
    findAll本质上是对Flickr消息进行查询,然后返回一个图像列表。用模型包装服务/ajax功能可以使它们更加可重用

    您会注意到,在回调中,我使用视图中呈现的内容更新了tab元素的html。这可能不是最好的方法,但我想举个简单的例子。更好的方法是将渲染输出传递给tabs控制器,以便它可以使用它来做任何事情。这样,如果您的选项卡希望有一天淡入内容,它将能够淡入,并且您的主控制器不必知道选项卡的实现

    最重要的是将你的应用程序分解成最小的部分。让它们可以单独测试(且灵活),并在您开发应用程序时将小部分组合成大部分。

    看一看。它有一个干净的体系结构,非常适合高度复杂的javascript应用程序

    数据处理和服务器通信通过存储完成。数据呈现是通过网格(使用单元内编辑器)和表单(使用一组丰富的表单控件)完成的,两者都可以与存储进行通信。还有一组布局类用于抽象CSS定位(边框布局、框布局、表布局、表单布局等)


    然而,它不是典型意义上的MVC。该库鼓励一种编程风格,避免过多处理HTML和CSS,让您(主要)生活在纯JavaScript的环境中。您最终会考虑组件和数据,而不是单个dom元素和样式规则。如果您不喜欢这种方法,请注意,您不会喜欢这个库。

    如果您想要一个现成的参考体系结构,将soem行业领先的JS库与一些好的JS设计模式结合起来进行大规模开发,请看:

    我是这本书的主要作者,我想分享一下我们在开发了几款大规模javascript产品后获得的知识。它解决了以下主要问题:

    • 解决方案结构
    • 创建复杂的模块层次结构
    • 自包含的UI组件
    • 基于事件的模块间通信
    • 路由、历史记录、书签
    • 单元测试
    • 本地化