- 浏览: 234639 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
annyliyear:
找到的ExtJS实现多选下拉框3个代码 -
yinboxian:
源码太乱了
JXTA中使用JxtaServerPipe和JxtaBiDiPipe实现双向可靠的通信 -
yinboxian:
我的peers第一次执行时可以得到正确的结果,以后就不行了。不 ...
JXTA中基于管道监听方式通信 -
cuizhenfu#gmail.com:
http://www.cnblogs.com/cuizhf
JXTA中使用JxtaServerPipe和JxtaBiDiPipe实现双向可靠的通信 -
luxing44530:
请问, jsp页面如果在 META-INF 中, 改怎么访问? ...
Servlet3.0 新特性之模块化实践
视图提供在JQuery中使用模板的一致接口。
当模板引擎注册它们,你就可以做以下的操作:
1、在Jquery中视图扩展了after,append,before,html,prepend,replaceWith,text。
2、模板可以从HTML元素和额外文件中加载
3、同步和异常的模板加载机制
4、延迟渲染
5、模板缓存
6、在产品构建中绑定处理后的模板
7、直接在模板中连接Jquery插件
使用
使用视图时,你总是想把渲染后的视图插入到页面中。jQuery.View重写了jQuery的修饰符,所以使用一个视图是非常容易的:
$("#foo").html('mytemplate.ejs',{message: 'hello world'})
上述代码代表意思:
1、加载一个名为mytemplate.ejs的模板。它包含的内容如下:
<h2><%= message %></h2>
使用{message: 'hello world'}渲染它,结果如下:
<div id='foo'>"<h2>hello world</h2></div>
最后把结果插入到指定的foot元素中。如下:
<div id='foo'><h2>hello world</h2></div>
jQuery 修饰符
你可以利用下述的jQuery修饰符使用模板。
after:在每个匹配的元素之后插入内容。
$('#bar').after('temp.jaml',{});
append:向每个匹配的元素内部追加内容。
$('#bar').append('temp.jaml',{});
before:在每个匹配的元素之前插入内容。
$('#bar').before('temp.jaml',{});
html:设置每一个匹配元素的html内容。
$('#bar').html('temp.jaml',{});
prepend:向每个匹配的元素内部前置内容。
$('#bar').prepend('temp.jaml',{});
replaceWith:将所有匹配的元素替换成指定的HTML或DOM元素。
$('#bar').replaceWith('temp.jaml',{});
text:设置所有匹配元素的文本内容
$('#bar').text('temp.jaml',{});
通过修饰符使用模板,你只需要一个字符串和一个对象(或者函数)
模板定位
视图可以通过脚本标签或者文件定位。
从脚本标签
从脚本标签加载视图,创建一个带ID的脚本标签来包含模板内容:
<script type='text/ejs' id='recipes'> <% for(var i=0; i < recipes.length; i++){ %> <li><%=recipes[i].name %></li> <%} %> </script>
渲染这个模板方法如下:
$("#foo").html('recipes',recipeData)
注意:我们是通过元素ID来渲染视图的。
从文件
你可以通过一个模板路径来定位:
$("#foo").html('templates/recipes.ejs',recipeData)
然而,典型的作法就是想让模板在任何页面都可以加载。
就这个问题,使用//就是从JMVC根目录查找到模板。
$("#foo").html('//app/views/recipes.ejs',recipeData)
最后,控制器下的视图插件让查找一个视图模板更加简单:
$("#foo").html( this.view('recipes', recipeData) )
打包模板
如果你使用大量的模板,你想组织管理这些模板文件,让它们可以在页面和程序中重用。
但是,如果浏览每次都分别获取每个模板,这样的结构得到的是一个高价格。
这些额外的HTTP请求让你的程序性能缓慢下降。
幸运的是,[steal.static.views steal.views] 能把模板压缩到你的产品文件中。你只需像下述一样指定视图文件即可:
steal.views('path/to/the/view.ejs');
异步
一般,获取请求的动作是同步的。这是很好的,因为StealJs是使用JS下载来打包视图模板。
然而,一些人可能不使用StealJs或者想延迟至到必要时才加载模板。如果你有这样的需要,你可以提供一个回调函数作为参数:
$("#foo").html('recipes',recipeData, function(result){ this.fadeIn() });
这个回调函数将等待this设置对象和模板渲染后才被调用。
延迟
如果你使用jQuery修饰符来延迟执行$.View,这个View将等待所有延迟处理完后才渲染视图。这让请求和使用响应结果渲染模板执行。
下述讲的是并行发送todos请求和todos.ejs模板,todos和模板一加载完后,它会使用todos对象渲染这个视图。
$('#todos').html("todos.ejs",Todo.findAll());
只渲染模板,不插入页面
有时,你只想去获取一个结果来渲染模板,但是,不想将模板插入到页面中。你可以使用$.View:
var out = $.View('path/to/template.jaml',{});
预加载模板
你可以异步预加载模板:
$.get('path/to/template.jaml',{},function(){},'view');
提供的模板引擎
JavaScriptMVC提供了下面的模板语言:
1、EmbeddedJS
<h2><%= message %></h2>
2、JAML
h2(data.message);
3、Micro
<h2>{%= message %}</h2>
4、jQuery.Tmpl
<h2>${message}</h2>
在第二方插件中还提供了一个流行的Mustache模板引擎。
使用其它模板引擎
组合你喜欢的模板引擎到$.View和Steal中,是很容易的。
使用$.View.register:
$.View.register({ suffix : "tmpl", plugin : "jquery/view/tmpl", renderer: function( id, text ) { return function(data){ return jQuery.render( text, data ); } }, script: function( id, text ) { var tmpl = $.tmpl(text).toString(); return "function(data){return ("+ tmpl+ ").call(jQuery, jQuery, data); }"; } })
构造器
查找一个模板,处理它,缓存它,接着使用数据和可选助手渲染模板。
使用Steal,在产品压缩中视图是一个典型的包。它可以同步使用视图:
$.View("//myplugin/views/init.ejs",{message: "Hello World"})
如果你没有使用StealJS,最好异步使用视图:
$.View("//myplugin/views/init.ejs", {message: "Hello World"}, function(result){ // do something with result }) new $.View(view, data, helpers, callback) -> String
下面我们的是讲解几个View配置项:
1、$.View.ext 视图引擎后缀,如果加载视图URL时,没有带后缀名,则使用这个默认的后缀名。 它的默认值为.ejs。
2、$.View.cache 视图缓存,默认值为true,保证同一个视图只会被加载一次。
3、$.View.hookup:注册一个hookup函数在thml被插入到页面后被调用。这个功能需要视图引擎支持, 目前只有EJS支持。
var id = $.View.hookup(function(el){ //do something with el }), html = "<div data-view-id='"+id+"'>" $('.foo').html(html);
最后,我讲解一下在项目中我使用的模板引擎语法。
我们使用的是EJS模板引擎。
EJS模板语法
EJS使用了5种标签:
1、执行JS代码:
<% alert('hello world') %>
2、执行JS和把转码后的结果写到模板:
<h1><%= 'hello world' %></h1>
3、执行JS代码和把未转码的结果写到模板:
<h1><%== '<span>hello world</span>' %></h1>
4、写<%= CODE %>结果到模板中:
<%%= 'hello world' %>
5、只是写注释,不做任何事情:
<%# 'hello world' %>
查找控制器
HTML画完后,我们经常想把一些控件和插件插入到HTML中。视图可以很容易达到这个效果。
你只是给元素上添加上控制器名就能查找到:
<ul <%= Mxui.Tabs%>>...<ul>
当然,你也可以给同个元素添加多个控制器:
<ul <%= [Mxui.Tabs, Mxui.Filler]%>>...<ul>
你也可能通过视图助手使用其它jQuery插件来查找控制器:
<ul <%= plugin('mxui_tabs', { option: 'value' }) %>>...<ul>
注意:使用视图助手不要加分号。
视图助手
视图助手返回HTML代码。
视图最常用的是使用视图和视图助手[jQuery.EJS.Helpers.prototype.text text]。
你可以给视图或者视图助手添加自定义的插件。
而且很容易可以实现。
例如:我们给视图助手添加一个大小写转换功能。
$.EJS.Helpers.prototype.toUpper = function(params) { return params.toUpperCase(); }
然后,在视图中使用:
<%= toUpper('javascriptmvc') %>
评论
比如:
$("#foo").html('mytemplate.ejs',{message: 'hello world'});
...假设这一行还有其他代码
mytemplate.ejs的渲染是异步的,我想在mytemplate.ejs渲染完之后给里面的DOM注册事件,我不想在Control里面像写实例方法那么注册,也不通过Class注册,因为DOM的ID要等到mytemplate.ejs渲染完才能确定
发表评论
-
test
2012-11-21 19:31 0关于请假: 1、做好工作安排,回复华为正式邮件! 2、回去 ... -
JavaScriptMVC之实战
2012-06-09 15:05 1988JavaScriptMVC之实战 下面我们通过一个真实的项目 ... -
JavaScriptMVC之快速开发
2012-04-28 21:53 4451有些同学反映说,需要看太多的篇章才能明白如何使用JavaScr ... -
JavaScriptMVC之语言助手
2012-04-26 21:00 1499在这篇文章,我只挑 ... -
JavaScriptMVC之专用事件
2012-04-26 20:32 1582JavaScriptMVC提供了一串很 ... -
JavaScriptMVC之Model
2012-04-25 22:52 2058Model顶层负责程序的数据层,使用它可以很容易做以下操作: ... -
JavaScriptMVC之Controller
2012-04-24 20:08 1792Controller帮助创建合理的,可释放内存,快速执行jQu ... -
JavaScriptMVC之控制器监听事件
2012-04-23 21:16 1626控制器安装和卸载事件句柄非常容易。卸载事件句柄对于防止内存泄漏 ... -
JavaScriptMVC之Class
2012-04-23 20:50 1345Class提供相当继承的功能。使用Class就可以让我们结合面 ... -
JavaScriptMVC之Fixture续
2012-04-22 00:54 1252其实下面我写的主要并 ... -
JavaScriptMVC之数据处理
2012-04-21 23:42 1260常常,项目中创建,修 ... -
JavaScriptMVC之数据绑定(jquery.tie)
2012-04-20 23:14 1735如果开发过Java的RCP程序的同学就会知道数据绑定datab ... -
JavaScriptMVC之Fixture
2012-04-20 22:19 1469注:阅读这篇同学必须 ... -
从JavaScriptMVC开始如何完成项目之压缩文件和生成帮助文档
2012-04-13 23:45 15521、压缩文件 在厨师手 ... -
从JavaScriptMVC开始如何完成项目之创建测试程序
2012-04-13 21:56 1067JavaScriptMVC放一个极大强调的重点在测试方面。Ja ... -
从JavaScriptMVC开始如何完成项目之创建应用程序
2012-04-12 23:56 1232如何使用JavaScriptMVC开发项目第一步,就是创建应用 ... -
JavascriptMVC 之 route 的 history功能的使用
2012-04-08 11:10 1698JavascriptMVC 之 route 的 his ... -
wijmo+javascriptmvc开发注意事项
2012-04-07 09:31 1344下面是在使用wijmo+javasc ... -
javascriptmvc之funcunit
2012-03-30 00:19 1042javascriptmvc之funcunit funcu ... -
学习jquery mvc第一天,hello
2012-03-29 23:09 2265学习jquery mvc第一天,hello 做为程序员,对于 ...
相关推荐
JavaScriptMVC是一个强大的JavaScript MVC(Model-View-Controller)框架,专为构建复杂且高性能的前端Web应用而设计。这个框架旨在提供一套完整的工具集,包括数据管理、视图渲染、路由控制以及测试支持,从而使得...
JavaScriptMVC是一个强大的前端开发框架,它以JavaScript为核心,结合了Model-View-Controller(MVC)设计模式,旨在提供一套完整的解决方案,帮助开发者构建高效、可维护的Web应用程序。这个开源项目是基于jQuery和...
在JavaScriptMVC中,"javascript"是指使用JavaScript语言进行开发,而"MVC"是一种软件架构模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于分离关注点,...
6. **View**: 视图负责展示数据,通常使用模板语言生成HTML。在JavaScriptMVC 3.3中,视图可能优化了模板引擎,支持更复杂的逻辑和更高效的渲染。 7. **Document Object Model (DOM) Manipulation**: JavaScriptMVC...
JavaScript MVC(Model-View-Controller)是一种用于构建前端Web应用程序的架构模式,灵感来源于Java的MVC框架。这种模式在JavaScript开发中广泛采用,旨在提高代码的组织性、可维护性和可扩展性。以下是关于...
这篇博客文章“从JavaScriptMVC开始如何完成项目之创建应用程序”可能是指导开发者如何使用特定的JavaScript MVC框架或库来构建一个完整的应用程序。 在JavaScript MVC中: 1. **模型(Model)**:负责处理和管理...
MVC,即Model-View-Controller,是一种设计模式,旨在分离应用程序的数据层(Model)、用户界面层(View)和控制逻辑层(Controller)。在JavaScript环境中,这种模式被广泛应用,特别是在构建大型、动态的单页面...
app.view = function(ctrl) { return ctrl.pages().map(function(page) { return m("a", {href: page.url}, page.title); }); }; //initialize m.module(document.getElementById("example"), app)...
JavaScript MVC(Model-View-Controller)是一种用于构建前端应用程序的架构模式,它借鉴了传统的后端MVC设计模式,以帮助开发者组织和管理复杂的JavaScript应用。在这个架构中,Model负责数据处理,View负责用户...
JavaScript MVC开源框架是一种用于构建富前端应用的框架,它整合了多种JavaScript库和技术,如jQuery,使得开发者可以更高效地组织和管理前端代码,实现Model-View-Controller(MVC)设计模式。在这个"第二部分"中,...
JavaScriptMVC是一个全面的前端开发框架,专注于使用JavaScript进行复杂应用程序的构建。它结合了Model-View-Controller(MVC)的设计模式,提供了一整套工具和服务,旨在提高开发效率和代码可维护性。在这个高级...
在"javascriptMVC 相关资料.docx"文档中,可能会包含以下知识点: 1. **MVC概念**:解释模型(Model)、视图(View)和控制器(Controller)的基本职责。模型处理数据和业务逻辑,视图负责用户界面的展示,而控制器...
* JavaScriptMVC:是一个基于MVC架构的JavaScript框架,专门用于构建复杂的Web应用程序。 结论 前端MVC架构是一种非常有用的架构模式,可以使得前端开发变得更加容易和高效。但是,它也需要开发者具备一定的技术...
- **Backbone.js**:非常流行的MVC库之一,提供了一个强大的数据绑定系统以及丰富的视图管理机制。 - **Spine.js**:一个简单易用的MVC框架,特别适合小型项目。 - **Sammy.js**:专注于单页面应用的轻量级MVC框架,...
3. **JavaScriptMVC**:JavaScriptMVC是一个完整的MVC框架,包含Model、View、Controller、ORM、测试工具等,旨在提高开发效率和代码质量。 4. **Qooxdoo**:Qooxdoo是一个全方位的JavaScript开发框架,提供编译器...
MVC即Model-View-Controller的缩写,分别代表数据模型、视图和控制器。在JavaScript中,有多种MVC框架可供选择,它们各有优势和不足,针对不同的开发需求和场景,开发者可以做出合适的选择。下面将详细介绍12种流行...
13. **JavaScriptMVC** - JavaScriptMVC是一个包含jQuery最佳实践的开源框架,实现了Model-View-Controller(MVC)架构,便于组织和管理大型项目。 14. **Spry** - Spry由Adobe开发,用于快速构建支持Ajax的Web应用...