NJF On The Match
作为 Eurasia3 的重要组成部分, 客户端组件库(NJF), 已经基本成型。与 Dojo 的 HTML/JavaScript 混合风格不同, NJF 是纯 JavaScript 组件体系。NJF 最大的特点是简单并且好玩, 使用模板而不是布局组件来进行排版, 其模板支持对组件的定位和替换。这样从 Plone/Eurasia3 可以直接输出 JSON 报文, 转由 NJF 来组装页面并且交互。NJF 的另一大特点是使用 JavaScript 解释的二级语言来进行异步通信编程, 同样非常好玩。
- 通过模板(div id="tmpl"), 创建三个窗体。
- 每个窗体替换一个组件到模板变量("<!--widget-->")。
- 其中第三个窗体已经图标化。
- 模板可以任意复杂, 并支持子模板。
- 简单组件(Text、Radio/Checkbox Group、Button、Password 等)略。
- 通信库略。
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
<script src="njf-loader.js"></script>
<div id="tmpl" style="display: none;">
<!--widget-->
</div>
</head>
<body>
<script>
LoadNJFFamily();
var wnd1 = ECW.Window(ECW.TemplateById('tmpl')); // 我们可以从站点上临时下载一个模板
var wnd2 = ECW.Window(ECW.TemplateById('tmpl'));
var wnd3 = ECW.Window(ECW.TemplateById('tmpl'));
wnd2.setIcon(ScriptBase + 'images/w3nemesis.gif')
wnd3.setIcon(ScriptBase + 'images/w3ecw.gif')
wnd1.ecwBody.setVal('widget', ECW.RichEditor());
wnd1.ecwBody.active();
wnd2.ecwBody.setVal('widget', ECW.Calendar());
wnd2.ecwBody.active();
</script>
</body>
</html>

图片