分为4块:
A : index.html壳子。    加载B  init-config.js,   加载D  header.html模板
B : init-config.js 个人信息+路由配置+权限+渲染单页。        加载C  navMenu.js
C: navMenu.js 处理头部+处理中间模板+总菜单。返回给B  init-config.js 
D: header.html模板。模板的作用,整个页面大部分除掉单页

A:Index.html:

一个空壳子,这个上面include进:header.html,   require.js,    init-config.js,

加进了所有的css,,,,配置了gulp打包的build,替换压缩后的文件,加入了百度统计

B:init-config.js

这个配置了:

Require.js的配置config
路由的map( 键 和 path路径+permission),

拿用户信息接口,返回了用户角色,姓名,权限码,存全局变量

Director.js的init方法,初始化路由

方法1,将路由map转化为对象,规则为:/aaa:function(){},键-方法,,键方法对,组合规则是directors的用法

方法2,即路由键对应的执行方法,当浏览器地址栏出现某/hash值的时候,获取此hash的路由map条目,拿到permission,

用户接口返回值判断是否登录-----》sso,

判断权限(permission与用户接口权限码,利用shiro-trie)------》403页,

去执行navMenujs拿到返回值-----》中间模板right。执行init方法(C模板介绍见后)

Ajax请求map的path路径的单页面,-------》渲染单页,根据right,是right.html(单页)或

CommonBus.html(单页),这个根据页面挖空的结构来。

C:navMenu。Js

配置所有工程的https://域名./

配置所有的菜单

清空container元素,移除所有监听

头部,登录,退出,用户名,游客的显示处理,监听登录/退出事件,-----》sso/首页

渲染头部模板,根据默认总菜单

渲染中间模板

渲染中间模板根据方法X

方法X:根据init传来的hash,window得来,拿到所有的一级菜单,二级菜单,三级菜单

D:header.html

所有二级菜单即各个工程,所有的页面,

整个页面(头部导航+中间模板(面包屑+左侧三级菜单等等))大部分都是这里拼的模板

架构

NavMenu.js所有工程公用,配置了总工程的菜单总表

单个工程如:investor的init-config.js只配置自己的map路由表

每个工程都有一个相同壳子A模块,每个工程有一个域名,每个工程有自己的路由表,每个工程有init-config。Js

即:A模块B模块各子工程具有自己的,

C模块D模块公用,放cdn。

C模块只作一个模块,define(‘C模块名’,【引用】,function(){});amd规范

D模块:公用,包括了各子工程的模板,nevMenu会根据哪个工程,渲染哪个工程的模板

头部导航几乎所有子工程可以公用模板。但是各子工程中间块设计不一样,所有有各自的中间模板。

directorjs和requirejs和artTemplate模板引擒建立的SPA框架的更多相关文章

  1. artTemplate模板引擎学习实战

    在我的一篇关于智能搜索框异步加载数据的文章中,有博友给我留言,认为我手写字符串拼接效率过低,容易出错.在经过一段时间的摸索和学习之后,发现现在拼接字符串的方法都不在是自己去书写了,而是使用Javasc ...

  2. artTemplate模板引擎

    artTemplate模板引擎         <li>索引 {{i + 1}} :{{value}}</li>     {{/each}} </ul> </ ...

  3. 一个简单的模板引(han)擎(shu)

    自制一个简单的模板引(han)擎(shu) 原理 说大了 实际上是模板函数 原理呢就是简单的字符串替换 第一版 var data = { username: 'Muhha' } str = '< ...

  4. 高性能前端 art-template 模板

    官网: https://aui.github.io/art-template/zh-cn/index.html nodejs 服务器端使用 第一步: 引入 art-template 的包 npm in ...

  5. django的小操作,查询效率up, 引用art-template模板+djangorestframework

    Part1: 提高查询效率newses = News.objects.select_related('category', 'author').get(id=1) # category和author字 ...

  6. thinkjs——art-template模板用法

    前言: 概述之前先附上此正式版介绍地址:https://github.com/aui/artTemplate  or http://www.jq22.com/jquery-info1097,可以再看下 ...

  7. ajax请求数据填充表格———使用art-template模板提高效率

    一.为什么要用art-template模板 在实习的一次项目中,因为需求中展示表格的字段有很多个,后端返回的也是json数据,这时候如果还是使用之前的字符串拼接,这样会开发得比较慢,而且容易出错,而且 ...

  8. nodejs中引入art-template模板

    使用Webstorm创建nodejs express应用时,默认使用的是jade或者ejs模板,对于不习惯这两种模板语法的人来说确实不是很方便.没关系,这里我们使用art-template模板引擎,使 ...

  9. koa art-template模板引擎的使用

    art-template 模板引擎介绍 art-template 是一个简约.超快的模板引擎. 它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行 性能,并且同 ...

随机推荐

  1. java部署ubuntu后中文显示问号问题

    1.首先先回忆自身项目的编码格式,即在本地进行编码时使用的编码格式.UTF-82.检测tomcat的设置问题,在web.xml和server中的设置:server.xml中: <Connecto ...

  2. 使用Selectivizr让你的 CSS3选择器 通吃IE6/7/8

    说到HTML5,总是会让人不自觉的想到CSS3,貌似他们就应该是成双成对.OK!前几天和大家分享了<使用html5shiv让HTML5通吃IE6/7/8>,那今天,便再和大家分享一个能让H ...

  3. 支付宝API接口开发相关文档以及实例

    支付宝实物即时到账接口,在下载该接口之前,请确定你已经签约了即时到账的服务协议,并且账号已经开通了即时到账的权限. 口常见错误问题搜集:http://union.alipay.com/alipay/z ...

  4. 第二百一十二节,jQuery EasyUI,Combo(自定义下拉框)组件

    jQuery EasyUI,Combo(自定义下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Combo(自定义下拉框)组件的使用方 ...

  5. 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。

    在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计.SQL语句.java等层面的解决方案. 解答: 1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 whe ...

  6. (转)QT中QWidget、QDialog及QMainWindow的区别

    QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...

  7. Django(模板语言-自定义filter和simple_tag)

    Django(模板语言-自定义filter和simple_tag)   filter过滤器的主要形式:变量|函数,意思是将变量交给函数处理,而自定义filter就是自己定义函数,因为用到已有的很少. ...

  8. CentOS7 minion安装图形化界面&远程桌面

    单用户管理 1.1 实验环境 [root@15b883 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@15b883 ~]# ...

  9. 编写高质量代码--改善python程序的建议(四)

    原文发表在我的博客主页,转载请注明出处! 建议十八:有节制的使用from...import语句 python提供了三种方式引入外部模块: import语句 from...import... __imp ...

  10. python之MySQL学习——输出指定条件的结果集

    # 引入pymysql模块 import pymysql as pm # 数据库连接 db = pm.connect(host=",database='task', charset='utf ...