设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

又一个强大的FIS解决方案:jello

2015-1-8 11:54| 发布者: joejoe0332| 查看: 1654| 评论: 0|原作者: FEX|来自: jobbole.com

摘要: 又一个?是的!基于 FIS 的解决方案已经有不少,有针对后端是 php 的 fisp、node.js 的 yogurt 和 GO 语言的 Gois,甚至更多。而接下来介绍的这个就是一个针对 后端是 JAVA 采用 velocity 作为模板引擎的 jello。虽 ...

又一个?是的!基于 FIS 的解决方案已经有不少,有针对后端是 php 的 fispnode.js 的 yogurt 和 GO 语言的 Gois,甚至更多。而接下来介绍的这个就是一个针对 后端是 JAVA 采用 velocity 作为模板引擎的 jello。虽然出来有一段时间了,但是一直以 来都没有很好的介绍过,希望借助这次机会能让大家更清楚地认识一下 jello


Features

前后端分离

这里有两层意义的前后分离。

  1. 前后端编写分离由于采用的是 velocity 作为模板引擎,前端同学只用专注于 JS、CSS 以及模板逻辑的编写,而不用太关心后端数据以及页面逻辑。而后端同学则只需专注于后端页面应该 渲染哪个模板,以及获取对应的模板数据。
  2. 前后端开发分离这个是 Jello 的重点!正常来说,一个页面的正常渲染是离不开模板数据的,而页面模板数据的来源,往往都需要后端同学来提供。因此,前端的开发往往受后端的限制, 需要等待后端提供一个可用的环境,然后基于此环境开发。而此环境,要让一个没有后端 j2ee 基础的同学来搭建,也是一件非常头疼的事情。Jello 针对这个问题,提供一个非常便利的开发环境。即:所有的 page 性 质的 vm 模板文件,可以在此环境中直接预览,而且可以通过 json 或者 jsp 文件提供数据模拟。于是,项目开始前期,前后端的同学合力一起制定好数据接口,然后就可以并行独立开发了。具体操作可以查看页面预览数据绑定相关的文档。


简化环境安装

传统的开发,为了能够正常开发,往往需要安装一系列 j2ee 环境。而 jello 提供的开发环境, 只需要 jello server start 一个命令便能运行。实际上它是内嵌了一个简单个 tomcat 服务,在首次运行 的时候,自动从服务器上下载。

因为所有的数据都是 mock 出来的,这也就无需去折腾 mysql 或者 oracle 或者其他数据库了。


自动性能优化

我们基于 velocity 扩展了些标签 (directive),如:html、head、body、script、style、widget… 如果你采用我们提供的标签 (directive) 组织代码,无论按什么顺序组织,我们 可以保证所有 css 内容集中在头部输出,所有的 js 集中在底部输出,以达到一个性能优化的效果。

另外结合打包配置,可以让多个 js/css 资源合并成一个文件,更大程度的优化性能。

(这个示例没有配置 css 打包,请忽略。)


模板继承机制

扩展 velocity 实现类 smarty 的模板继承功能,让模板能够得到更充分的复用。

将多个页面间相同的部分提取到一个骨架 layout.vm 文件里面,每个页面只需填充自己独有的内 容。

此模板继承甚至比 smarty 提供的版本还要强,因为 velocity 里面可以支持条件语句。比如这个 Demo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#set($layout = "page/layout/2columns-with-left-sidebar.vm")
#set($param = $request.getParameter("layout"))
 
#if ($param.equals("right"))
    #set($layout = "page/layout/2columns-with-right-


sidebar.vm")
#end
 
#if ($param.equals("both"))
    #set($layout = "page/layout/3columns.vm")
#end
 
#extends($layout)
    ...
#end


模块化开发

提供模块化开发机制,支持像想写 node.js 一样的方式去写页面 js。可以遵循 commonjs 规范任 意拆分代码,而不用关心性能问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
require('bootstrap');
var $ = require('jquery');
var alert = require('libs/alert');
 
var app = module.exports = function(opt) {
 
    // from velocity data
    var vm = opt.vm;
    $(vm.btn).on('click', function() {
        alert('<pre>' + JSON.stringify(vm.data, null, 4) + '</pre>');
    });
 
    // ....
});

以上代码来自 jello-demo 下面的 /page/examples/data.js, 可以直接在线体验运行结果


组件化开发

提供组件化机制,可以将页面间复用率比较高的内容,封装成组件(widget),然后通过 #widget() 标签使用,支持传入局部变量, 更多关于组件的使用,请参看jello- demo 中文档。


更多 features.

因为是基于 fis 的二次开发,还有更多的 fetaures 也可以在 jello 中使用,如:前端三种语言能力、资源压缩、异构语言支持、静态资源加 md5 戳 & cdn 部署 等等。具体请查看  fis 官网


Getting started

如果以上的 features 也打动了你,不妨从一个简单的 demo 开始 jello 之旅吧。

  1. 安装 jello
    1
    npm install -g jello
  2. 安装插件
    1
    2
    3
    4
    npm install -g fis-parser-marked
    npm install -g fis-parser-utc
    npm install -g fis-parser-sass
    npm install -g fis-packager-depscombine
  3. 下载 demo
    1
    2
    3
    4
    5
    6
    npm install -g lights
    lights install jello-demo
     
    #  或者
     
    git clone https://github.com/2betop/jello- demo.git
  4. 进入当前目录后发布代码
    1
    2
    jello release
    jello server start
  5. 自动打开浏览器预览页面
     

转自 http://blog.jobbole.com/83015/


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部