从零开始为Web项目定制构建系统(四)——Hello XXXX的SPA版(上)
- 第一,项目功能 是 一个简单的动态交互页;
- 第二,构建系统丰富了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改造
理论和工作前提就说这么多,下一节开始本课正题——多页网站改造为单页应用。