基于TypeScript的FineUIMvc组件式开发(开头篇)

了解FineUIMvc的都知道,FineUIMvc中采用了大量的IFrame框架,对于IFrame的优缺点网上也有很多的讨论,这里我要说它的一个优点“有助于隔离代码逻辑”,这也是FineUIMvc官网对它的描述。IFrame在网页上下文中是完全独立的,这样也就不存在了样式及脚本之间的冲突问题。但由于IFrame与上下文之间是隔离的,在交互上也给我们带来了一些不便。

在接下来的文章中,我将主要介绍如何使用TypeScript对FineUIMvc进行组件式开发,而这里的组件就是基于IFrame,同时用TypeScript的方式来解决IFrame交互方面的不便。

为了能够更好的了解,本教程将围绕一个示例展开,下面为示例的截图

示例中有2个窗口(采用IFrame框架)及3个组件(分别为组件A、组件B、组件C),组件A在窗口1中显示,组件B及组件C在窗口2中分别切换显示

组件A中可以单击“在窗口2中显示组件B”及“在窗口2中显示组件”来切换显示组件B及组件C,同时组件B及组件C中也可以单击“刷新窗口1中的组件A”来刷新窗口1

发送按钮可以发送文本框中的文本到对应的组件中,下面的文本框将会显示来自其它组件发送过来的文本

介绍完示例后,我来说明一下数据发送与接收的流程,首先当组件A往组件B发送数据时,它并不是通过JS直接发送给组件B,而先回发到服务器,经服务器处理后(在发送文本的后加上GUID),再传输到组件B中,其它的发送按钮也是一样的道理,都要经过服务器处理后再回传回来。可以通过显示及刷新按钮来重新加载组件,但这也不会影响它们之间的数据交互。

发送数据后的示例图

这个示例只演示了一个简单的数据交互,在现实场景中组件与组件之间会存在着大量的数据交互,同时组件中也会夹杂着其它的非FineUIMvc控件,这样我们又该如何处理呢?

下面为组件交互的核心代码(TypeScript代码),示例代码还在整理中,事后会放到网上供大家下载。

 1     private init() {
 2         UI.window1.onReady(() => {
 3             var aComponent = this.getAComponent();
 4             if (aComponent) {
 5                 aComponent.onSendToB((e, m) => {
 6                     var bComponent = this.getBComponent();
 7                     if (bComponent) {
 8                         bComponent.receiveAData(m);
 9                     }
10                 });
11
12                 aComponent.onSendToC((e, m) => {
13                     var cComponent = this.getCComponent();
14                     if (cComponent) {
15                         cComponent.receiveAData(m);
16                     }
17                 });
18
19                 aComponent.onShowBComponent(() => {
20                     BComponent.open(null, UI.window2);
21                 });
22
23                 aComponent.onShowCComponent(() => {
24                     CComponent.open(null, UI.window2);
25                 });
26             }
27         });
28
29         UI.window2.onReady(() => {
30             var bComponent = this.getBComponent();
31             if (bComponent) {
32                 bComponent.onSendToA((e, m) => {
33                     var aComponent = this.getAComponent();
34                     if (aComponent) {
35                         aComponent.receiveBData(m);
36                     }
37                 });
38
39                 bComponent.onRefreshAComponent(() => {
40                     AComponent.open(null, UI.window1);
41                 });
42             }
43
44             var cComponent = this.getCComponent();
45             if (cComponent) {
46                 cComponent.onSendToA((e, m) => {
47                     var aComponent = this.getAComponent();
48                     if (aComponent) {
49                         aComponent.receiveCData(m);
50                     }
51                 });
52
53                 cComponent.onRefreshAComponent(() => {
54                     AComponent.open(null, UI.window1);
55                 });
56             }
57         });
58     }
时间: 2024-10-24 10:10:20

基于TypeScript的FineUIMvc组件式开发(开头篇)的相关文章

基于TypeScript的FineUIMvc组件式开发(简介)

不熟悉FineUI的可以访问其官方网站(http://www.fineui.com),在这里我从我的个人角度说一下FineUI,FineUI有多个版本,但主要基于2种架构,一种是基于Asp.net WebForm,别一种是基于Asp.net Mvc. 在WebForm版本下,虽然FineUI是一个前端构架,但在一些常规简单项目中几乎不用写JS代码,除了首次请求页面,后续的操作都是基于Ajax的,而JS代码都是由服务器端动态生成,并放到客户端执行,这也是FineUI的一大特点.了解WebForm的

前端全栈架构,组件式开发,响应式开发,全栈工程师架构,用户界面架构,企业级架构项目实战

我本是一名文科专业半路出家的前端开发人员,从最初只会切图和写CSS.Html到现在会写点JS,一路坑坑洼洼,也是经历了很多,从2010年开始就用WordPress开设了自己的博客,虽然内容零零散散的并不多,但是多多少少也留下了时光的缩影,一直希望自己有一个自留地.用Node.js做服务端替换WordPress是去年的一个想法,由于一直腾不出时间,所以拖到了现在.当然了WordPress作为全球用户量最广的开源博客程序,易用性等诸多好处无可厚非,光自己的博客在过去几年就用了很多套模板,也用它做过很

基于NodeJS的全栈式开发

随着不同终端(Pad/Mobile/PC)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本.为了提升开发效率,前后端分离的需求越来越被重视,后端负责业务/数据接口,前端负责展现/交互逻辑,同一份数据接口,我们可以定制开发多个版本. 这个话题最近被讨论得比较多,阿里有些BU也在进行一些尝试.讨论了很久之后,我们团队决定探索一套基于NodeJS的前后端分离方案,过程中有一些不断变化的认识以及思考,记录在这里,也希望看到的同学参

注入式类的写法,解耦,组件式开发,沙箱

沙箱(网络编程虚拟执行环境) Sandboxie(又叫沙箱,沙盘)即是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或者其他应用. 因此运行会产生的变化可以随后删掉. 它创造了一个类似沙盒的独立作业环境,在其中内部运行并不会对硬盘产生永久的影响. 其为一个独立的 虚拟环境,可用以测试不受信任的应用程序或上网行为. 沙箱是一种按照安全策略限制程序行为的执行环境. 早期主要用于测试可疑软件等,比如黑客们为了试用某种病毒或者不安全产品,往往可以将它们在沙箱环境中运行. 经典的沙箱系统的实现途经一般是通

也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离)

随着不同终端(Pad/Mobile/PC)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本.为了提升开发效率,前后端分离的需求越来越被重视,后端负责业务/数据接口,前端负责展现/交互逻辑,同一份数据接口,我们可以定制开发多个版本. 这个话题最近被讨论得比较多,阿里有些BU也在进行一些尝试.讨论了很久之后,我们团队决定探索一套基于NodeJS的前后端分离方案,过程中有一些不断变化的认识以及思考,记录在这里,也希望看到的同学参

基于NodeJS的全栈式开发(基于NodeJS的前后端分离)

也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离) 前言 为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案都大同小异.痛定思痛,今天我们重新思考了“前后端”的定义,引入前端同学都熟悉的NodeJS,试图探索一条全新的前后端分离模式. 随着不同终端(Pad/Mobile/PC)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本.为了提升开发效率,前后端分离的需求越

PIE SDK组件式开发综合运用示例

1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发进行详细的讲解. 2. 功能实现 2.1.界面搭建 最终的界面如下图所示: 图1最终结果图 2.1.1 新建项目 选择“Window窗体应用程序”,设置程序的名称和保存路径即可.(新建完成后可以将程序的窗体名称右键重命名为“FormMain”,,将窗体界面的属性的Text设置名称为“PIE应用程序”

组件式开发 webapp全站之第一章

1-1课程介绍 略1-2课程安排 课程安排分为两个方面:开发流程和技术实现 1-2-1开发流程 为什么要说流程 每个流程要做什么 各个环节易出现什么问题 问题定责 1-2-2技术实现 技术规划,选型 设计易扩展的开发方案 开发各种图表组件1-3WEB项目开发流程介绍 1-3-1为什么要说开发流程 1.可以提升开发效率 2.防止背锅 1-3-2开发流程的环节划分 开发流程划分为三个环节:开发前,开发中,开发后 1)开发前 产品功能设计 产品经理 产出:产品需求文档 视觉/交互设计 美工 产出:视觉

Agile.Net 组件式开发平台 - 报表组件类库

Agile.Report.dll 文件为平台报表支持库,基于FasstReport.Net扩展重写,提供报表打印.报表预览.报表设计.自定义报表数据源等二次开发功能. 示例   //声明报表对象 var report = new Agile.Report.ReportLib(); //添加查询参数 report.AddParameter("Code", "1023"); ////添加自定义数据源 //report.AddDataSource(DataSource);