Durandal 是一个轻量级的JavaScript框架,其目标是单页面应用(SPAs)的开发变得简单而优雅。它支持MVC、MVP和MVVM等模式,因此不论你采用哪种类型的前端架构,Durandal都能胜任。
Durandal以 RequireJS 为基础,加上一个轻量级的惯例层,带来了令人惊叹的生产效率,并且帮助你维持稳健的编码实践。配上开箱即用的富界面组件、模态对话框、事件/消息、组件、过渡效果、导航等等,使你可以轻松开发出任何你能想象的应用。
尽管Durandal才发布大约一年时间,但其社区正以飞快的速度成长
Features
Browser Support:IE 6+ Firefox 2+ Safari 3.2+ Chrome 3+ Opera 10+
Dependencies: jQuery >= 1.8.0 Knockout >= 2.2.1 RequireJS >= 2.0.0
要开始使用Durandal,可以有多种方式,这取决于你的平台。因为Durandal是一个纯JavaScript库,独立于任何服务端平台,我们尝试用多种方式来打包,以满足各类Web开发人员。在本教程中,我们将直接使用HTML Starter Kit。你可以在官方网站 上直接 下载 。
下载完HTML Starter Kit后,解压缩,你就可以直接在Firefox各版本中打开 index.html 页面,运行其示例程序了。或者你也可以将其部署到Web服务器中,浏览其index页面。
Starter Kit演示了一个基本的导航架构,包括导航、页面历史、数据绑定、模态对话框等等。当然,我们不只是看看而已,我们要从头开始写一个小程序。首先打开app文件夹,删除里面的所有内容,然后删除index.html 。这样我们就有了一个空项目,并且预配置了所有必须的scripts和css。
* 注: IE, Chrome 和 Safari 可能无法从文件系统中直接打开这类文件。如果你仍希望使用这些浏览器,可以将其部署到你喜欢的 Web服务器中。
Index.html(根目录)
我们开始编写index.html文件,内容如下:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="lib/bootstrap/css/bootstrap.css" />
<link rel="stylesheet" href="lib/font-awesome/css/font-awesome.css" />
<link rel="stylesheet" href="lib/durandal/css/durandal.css" />
<link rel="stylesheet" href="css/starterkit.css" />
</head>
<body>
<div id="applicationHost"></div>
<script src="lib/require/require.js" data-main="app/main"></script>
</body>
</html>
main.js(app目录)
requirejs.config({
paths: {
'text': '../lib/require/text',
'durandal':'../lib/durandal/js',
'plugins' : '../lib/durandal/js/plugins',
'transitions' : '../lib/durandal/js/transitions',
'knockout': '../lib/knockout/knockout-3.4.0',
'jquery': '../lib/jquery/jquery-1.9.1'
}
});
define(function (require) {
var system = require('durandal/system'),
app = require('durandal/app');
system.debug(true);
app.title = 'Durandal Starter Kit';
app.configurePlugins({
router:true,
dialog: true
});
app.start().then(function() {
app.setRoot('shell');
});
});
shell.html (app/views目录)
<section>
<h2>Hello! What is your name?</h2>
<form class="form-inline">
<fieldset>
<label>Name</label>
<input type="text" data-bind="value: name, valueUpdate: 'afterkeydown'"/>
<button type="submit" class="btn" data-bind="click: sayHello, enable: name">Click Me</button>
</fieldset>
</form>
</section>
shell.js(app/viewsmodel目录)
define(function (require) {
var app = require('durandal/app'),
ko = require('knockout');
return {
name: ko.observable(),
sayHello: function() {
app.showMessage('Hello ' + this.name() + '! Nice to meet you.', 'Greetings');
}
};
});
页面加载完以后,试着在输入框中输入点什么,然后点击按钮看看会有什么效果!
本文参考网址:http://durandaljs.com/get-started.html