单页面Web应用开发框架:Durandal学习入门

单页面Web应用开发框架:Durandal学习入门Durandal 是一个轻量级的 JavaScript 框架 其目标是单页面应用 SPAs 的开发变得简单而优雅 它支持 MVC MVP 和 MVVM 等模式 因此不论你采用哪种类型的前端架构 Durandal 都能胜任 Durandal 以 RequireJS 为基础 加上一个轻量级的惯例层

大家好,我是讯享网,很高兴认识大家。

Durandal 是一个轻量级的JavaScript框架,其目标是单页面应用(SPAs)的开发变得简单而优雅。它支持MVC、MVP和MVVM等模式,因此不论你采用哪种类型的前端架构,Durandal都能胜任。

Durandal以 RequireJS 为基础,加上一个轻量级的惯例层,带来了令人惊叹的生产效率,并且帮助你维持稳健的编码实践。配上开箱即用的富界面组件、模态对话框、事件/消息、组件、过渡效果、导航等等,使你可以轻松开发出任何你能想象的应用。

尽管Durandal才发布大约一年时间,但其社区正以飞快的速度成长

Features

  • Clean MV* Architecture
  • JS & HTML Modularity
  • Simple App Lifecycle
  • Eventing, Modals, Message Boxes, etc.
  • Navigation & Screen State Management
  • Consistent Async Programming w/ Promises
  • App Bundling and Optimization
  • Use any Backend Technology
  • Built on top of jQuery, Knockout & RequireJS
  • Integrates with popular CSS libraries such as Bootstrap and Foundation
  • Make Your Own Templatable and Bindable Widgets
  • Fully Testable

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>

讯享网
Durandal采用RequireJS作为其核心构件之一,鼓励模块化的编程方式。在Durandal应用中,所有的JS代码都写在模块中。上文index.html中的script标签就是用于加载RequireJS来完成框架的模块策略。当模块加载器完成初始化后,它通过data-main属性的值来启动应用。


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'); } }; });

属性name看起来有点特别,它是我们使用Knockout创建的一个可被观察的(observable)属性,可被观察observable属性支持数据到html的双向绑定,变更通知和一些其它特性!现在你可以用Google打开index.html,或者如果你使用其他浏览器的话,可以部署到Web服务器下然后浏览index.html。当页面打开时,会经历以下这些步骤:

  1. 加载RequireJS。
  2. RequireJS将加载main.js,然后配置框架。
  3. main.js调用setRoot展示整个应用。
  4. 加载shell.jsshell.html,绑定数据,然后注入到页面的applicationHost div中

页面加载完以后,试着在输入框中输入点什么,然后点击按钮看看会有什么效果!

本文参考网址:http://durandaljs.com/get-started.html



小讯
上一篇 2025-03-28 15:51
下一篇 2025-03-12 13:45

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/13962.html