17

从零开始为Web项目定制构建系统(四)——Hello XXXX的SPA版(上)

 4 years ago
source link: http://nakeman.cn/engineering/webprogramming/customize-build-system-from-bottom-up-3-basic-spa1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

截至上一版本的项目实验,我们实例项目(a-wgp)的项目功能、构建系统和版本跟踪系统 都有了基本的构造,包括:

  • 第一,项目功能 是 一个简单的动态交互页;
  • 第二,构建系统丰富了build和start 构建任务的功能;
  • 第三,理顺了版本跟踪流程,包括本地私有分支、公共分支和远程库分支的管理;

这些基础功能构造,足以满足一个 由多人协作的中小型动态网站项目 的开发。接着这一版本我们将它转换SPA,一种最基础的SPA程序构造。

Table of Contents

多页网站与单页应用

上一版本可称为「简单交互页」,功能虽然简单,但在技术上反映了 「前单页应用( pre SPA)」的一些基本的重要特征:

  • 第一,无明显的JS程序结构;
  • 第二,以网页为单元的多页结构;网站的形式明显;
  • 第三,JS原初“胶水”用途,JS函数在全局,且分散;
  • 第四,操作DOM很繁琐;

若动态网站功能少,代码规模不大,手动维护如此项目尚可,当程序的「智能」和「功能」不断增加,「程序的结构形态组织技术 」必须改变,这就是SPA时代。

单页应用是Web应用程序的一种

「多页动态网站」的工作模式是比较直观的:以请求网页文件的方式实现;而与多页网站不同,「单页应用」程序在形式(虽然对用户来还是通过浏览器)和结构有了质的不同。

最主要的不同在两点:

第一,SPA要在前端实现 会话路由;Web应用程序 [注] 一般都有一层会话(Session)结构,提供较复杂且有用的事务处理功能,会话之下才是“一张张”的交互页面,在要会话中游走,必要有一个会话的路由的功能;多页网站的 会话路由 主要在服务端实现 ,单页应用必在前端实现;

第二,SPA在前端实现动态渲染View [注] ;交互页面的界面都需要 渲染,实现交互功能,多页网站的界面渲染主要在服务端;单页应用的交互界面必在前端渲染;

注: SPA是一种Web Program,再是一种GP,再是一种交互应用,是一种人事务集中的应用程序。

注:渲染可看成一种高级的计算输出。

更多单页应用程序理论看这里。

工作环境

在开始分析和实作改造之前,我们先回顾一下目前的工作环境(接前一版本)。

./a-wgp 集成多个系统

首先,我们是通过一个实例项目(a-wgp)来试验构建系统的定制,./a-wgp 是我们的实验的数据目录;

其次,./a-wgp 是集成多个「开发系统」的数据宿主,包括a-wgp程序源码,其配套定制的构建系统(wgp-build),和git系统;

第三,我们有多重的身份或角色来使用这些系统,包括:

  • 开发者编程(开发a-wgp的新功能),使用wgp-build构建a-wgp ,包括 编译,调试,部署等;
  • 构建系统设计者,使用node技术(npm script),调整wgp-build的构建功能;
  • 项目管理者,使用git系统,跟踪版本历史,辅助项目进度与规划(git版本任务有计划的意义);
  • 还有一些一次性的基础工作可以需要维护,例如node环境维护,git分布式系统维护,前文已经完成

工作文档

第四,任何角色的工作都要了解自己的工作环境,包括进度在哪,向哪个方向发展,和可使用什么工具或操作,这些环境(尤其是脑力工作者)严重依赖文档,有了文档你转手项目,从别人处转入,或历时维护项目才会比较容易;

第五,开发者编程(编程和构建)的文档,「项目功能」是看设计案,「构建」看手册(a-wgp buildtool 还没有此文档,只能看技术源码 package.json);

第六,构建系统设计者「调整构建功能」前的文档,也不存在,只能看技术源码 package.json;

第七,项目管理者「版本跟踪」操作前,需要了解版本状态,文档也不存,只能看技术源码 package.json;

开发者文档

编程文档 」 是项目程序的构造设计案,此项目目前没有此文档;「 构建文档 」 可看package.json,或运行$ npm run

[keminlau@localhost a-wgp]$ npm run
Lifecycle scripts included in a-wgp:
  test
    echo "Error: no test specified" && exit 1
  start
    run-p httpserver livereload

available via `npm run-script`:
  livereload
    livereload src -w 1000 -d
  httpserver
    http-server src -c-1 -o
  build
    mkdir build && cp src/* build
  prebuild
    rmdir build

构建系统设计者文档

未知

项目管理者文档

「git分支编制文档」是项目程序的构造设计案;git 分支设计案,此项目目前没有这些文档;跟踪文档 可相看分支状况:

[keminlau@localhost a-wgp]$ git branch 
  dev
* fea-basic-SPA
  fea-simple-UI-page
  master

MPA的SPA改造

理论和工作前提就说这么多,下一节开始本课正题——多页网站改造为单页应用。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK