应用程序架构

概观

skylark.js应用程序的架构可以用下图来描述:

构成元素

skylark.js应用程序的构成元素如下.

框架端

  1. 应用程序
    应用程序是用于skylark单页应用程序的类型,框架自动声明应用程序变量作为应用程序的实例。
    应用程序类型可通过skylarkjs.spa.Application获得.

  2. 页面用于封装主机HTML。
    页面类型在skylarkjs.spa.Page上公开。
  3. Route
    Route represents a viewport of the application page, and that is identified and navigated through a path.
    The route type is exposed on skyalrkjs.spa.Route.
  4. Plugin
    Plugin provides a mechanism to implement common logic not belonging to a single route view ,such as navigation menu processing.
    The plugin type is exposed on spa.Plugin.

Only when necessary, developper can extends these types to customize the framework functionality.

Application-side

  1. index.html
    index.html is the host HTML where the application runs, and the name can be freely defined.
    The index.html can be an empty HTML file, the developer can also directly define the basic layout of the application in this file.
  2. Controller
    Controllers are the active parts of a skylark single page application. They define how the user can interact with the skylark application.
    1. Route Controller
      Each route consists of the route config and exactly one route controller. route events are sent to the corresponding routing controller for processing.
    2. Plugin Controller
      Each plugin consists of the plugin config and exactly one route controller. global events are sent to the corresponding routing controller for processing.
  3. slax-config.json
    The slax-config.json file defines the entire composition of a skylark slax application, such as:
    • name and title
    • library depended
    • route define
      • pathto
      • controller
    • plugin define
      • hookers
      • controller

Front controller pattern

前端控制器设计模式意味着应用程序中的所有请求或事件将由单个处理程序处理,然后分派到适用于该类型的请求或事件的处理程序。 Skylark应用程序遵循前端控制器设计模式,在框架中应用类型用作前端控制器。 在Application对象中处理的事件仅与路由和其他应用程序级事件相关联,不包括鼠标,键盘和其他UI事件。 UI事件属于路由视图的实现范围,开发人员可以集成jquery-ui,bootstrap,骨干等UI框架来开发skylark路由视图

Routing

在平台层面,skylark.js为slax应用程序的路由处理提供了支持:

  • 作为桌面应用程序运行
    使用内置引擎
  • 作为Web应用程序运行
    使用Html5 history api 引擎,并且skylark-node-server解析slax-config.json文件以自动实现服务器端路由。

因此,slax应用程序可以部署到Web服务器的任何上下文路径,而无需开发人员进行任何处理。

开发人员只需要专注于应用程序的内部路径设计,当需要定位脚本,图像和其他文件时,开发人员只需要指定相对于应用程序根目录的相对路径。