代码之家  ›  专栏  ›  技术社区  ›  Erin Stanfill

为多个开发人员构建大型Web应用程序

  •  3
  • Erin Stanfill  · 技术社区  · 17 年前

    我已经有几个开发人员准备开始开发基于jQuery的Web应用程序的前端。我们如何构造应用程序,使多个开发人员可以同时在UI上工作。用户的最终结果将只是一个Web“页面”,但我并不是所有的客户机开发都发生在一个文件中。已经有另一个团队在后端工作。

    7 回复  |  直到 13 年前
        1
  •  3
  •   Dillie-O    17 年前

    如果您完全从头开始,可以将其分解为标准的3层体系结构。

    让一个人处理数据库结构并创建适当的数据访问库。

    让一个人在业务/工作流层上工作,设置所有数据交互。

    让第三个人用jquery完成所有前端工作。

    我敢肯定,遵循这一点,将会有最小的冲突,并且每一个都可以使用一些模拟数据/方法,直到官方资料上线。

        2
  •  1
  •   jonnii    17 年前

    如果你要让多个人处理同一个文件,你的供应链管理人员应该能够为你管理。

    但是,如果你想让事情变得简单,你可以将你的javascript文件分解成多个部分,你可以动态地或者在你的构建/部署阶段将它们组合起来,然后缩小。

        3
  •  1
  •   David Alpert    17 年前

    将目标页面标记的各个部分分解成服务器端包含的或其他可组合的部分,每个部分用一个唯一的ID包装在一个DIV(或其他适当的标记)中,然后为CSS样式添加单独的CSS和JS引用,并为每个部分添加样式和动画的jquery位。

    虽然css规则确实是级联的,jquery查询可能会发生冲突(因为它们是基于css选择器的),但谨慎地使用id和类可以在最终页面上创建粗糙的“沙盒”,其中每个前端开发人员都可以相对独立地工作。

    同时(或者当各个部分开始稳定时),您可以投入一些精力来开发一个用于部署的集成策略,包括将单独的CSS和JS文件连接到单个资源(如果可能)以及gzipping、minifying等。

    您将需要注意由于固有的级联而连接CSS文件的顺序,但是如果通过将所有样式选择器限制在每个块的给定id'd标记内,从而很好地隔离了它们,那么您就可以了。

        4
  •  1
  •   Damir Zekić    17 年前

    试着为这个问题建模一个面向对象的方法,这样一组开发人员就可以在对象内部编写必要的功能代码,而其他开发人员则建立在对象将提供的特性之上。

    Javascript非常适合这种方法:基于约定的对象接口构建的开发人员可以开发简单的模型原型,当 真实的 对象被写入。

    当然,正如Jonnii所说,您应该依赖一些SCM来管理对代码库的并发更改。即使任务是拆分的,开发人员也可能需要更改其他人的代码。如果你在Windows下,我会推荐Git或Svn(因为它有Tortoissesvn,如果你刚开始使用SCM的话,这非常好)。

        5
  •  0
  •   Praesagus    16 年前

    听起来您已经知道了您希望哪些开发人员在产品的哪个部分工作,并且已经计划了工作负载以防止重叠。类似的东西 subversion 将允许您跟踪谁在何时将项目添加到文档中,以及撤消不需要的更改或合并以前覆盖的项目等。它是免费的,而且是一个救生员。):

        6
  •  0
  •   eduncan911    16 年前

    我知道这可能不是一个选择,但这是MVC或MVP架构的亮点。它删除了网站开发中的“网页”方法,并使用“方法”调用所需的逻辑,转向强类型的模型代码设计。换句话说,MVC中不存在“物理页”,只有对象上的方法。

    (注:我不是Java开发人员,实际上是C,但是你可以理解这个想法。

    网址:

        /products/532
    

    通过重新编写URL,它将是一个“网页”及其编译的“代码”,如:

    /products/showproduct.jsp?productid=532
    /products/showproduct.java (code behind)
    

    但对于MVC中的页面,它将是:

    /Controllers/ProductController.java <- ProductController.ViewProduct(int id)
    /Models/ViewModels/Product.java <- Product() class
    /Views/Product/Index.html <- very simple display of html.
    

    productController查找并获取product()的viewModel,连接索引视图,替换任何要显示的变量,最后productController将完成的HTML返回给客户机。

    这种方法将网页逻辑抽象为可在源存储库中管理、版本控制、合并、分支等的代码。

        7
  •  0
  •   Erin Stanfill    13 年前

    我们最终在这个项目中使用了Dojo(1.3),因为它有一个编写模块化javascript(dojo.require)的机制,我们在jquery中找不到对应的机制。现在,有几个AMD(异步模块定义)库,例如RequireJS或curl.js,可以与jQuery一起使用。如果我现在开始这个项目(而不是2008年),我的问题的答案将涉及使用一些AMD库,可能还有一个JavaScriptMVC框架。Dojo仍然拥有所有这些,我们仍在使用它。