相关疑难解决方法(0)

客户端和服务器端呈现的模板语言

我正在调查JavaScript模板,以此来呈现我们的观点.目标是能够为已启用JavaScript的用户呈现客户端,以便为那些没有启用JavaScript的用户(和爬虫)呈现相同的模板/数据服务器端.

要求

  1. 客户端渲染.
  2. 服务器端呈现(JVM支持一个很好的).
  3. 对循环,条件,文本操作,部分,宏和扩展/插件的合理支持.
  4. 合理的大/活跃用户社区.

到目前为止找不到令人满意的解决方案

  1. Mustache:支持服务器和客户端呈现,大/活动社区,但"无逻辑"模板似乎非常严格和痛苦.
  2. Node.js下划线:像下划线这样的JS模板提供了我需要的所有模板灵活性,但使用Node.js在服务器端渲染它们非常脆弱.node.js是新的并且相当不稳定,它的包管理(导出...)需要大量的黑客才能使事情正常工作.
  3. 谷歌闭包模板:这些模块编译成JS和Java,并具有我想要的许多功能.遗憾的是,浏览Google群组时,似乎缺少许多基本功能(例如循环关联数组的能力)以及制作自己的插件文档非常稀疏且令人痛苦.此外,我不知道在线社区中有谁在使用它,谷歌不接受开源贡献,而且他们没有带宽来发布新功能.
  4. 同位素:在JS中编写模板,并使用Johnson(Mozilla SpiderMonkey JS运行时的Ruby包装器)来渲染这些模板服务器端.似乎很有希望,但该项目在6个多月内没有提交.
  5. 液体Liquid.js:液体模板语言看起来极好,但liquid.js项目似乎是未经测试(不测试在IE中!),没有任何文件,目前还不清楚是否有人使用它,它一直没有更新等一下.

javascript templates server-side client-side

24
推荐指数
1
解决办法
6674
查看次数

使用JSON模式干燥用户输入验证(clientside,serverside)

作为广泛的测试用例的一部分,我正在构建一个基于ajax的类似CMS的应用程序,它在各种文档类型上提供CRUD功能,例如:文章,标签等.

在服务器端和客户端,我正在考虑使用JSON-schema(http://json-schema.org/)作为以干燥方式进行用户输入验证的方式(即:1验证模式,是在服务器端和客户端使用,没有重复代码和所有这些).这看起来很棒,因为:

  • JSON-schema都是用JS和Java实现的,因此理论上一个模式可以处理客户端和服务器端验证

  • 所有CUD操作请求和响应都是JSON(通过ajax)

然而,除了用户输入的常规验证之外,我还希望在服务器上进行一些额外的检查(例如:检查用户想要创建的Tag的名称是否已经存在)

理想情况下,我希望这些类型的检查包含在我的一般服务器端验证代码中(如上所述,它将基于JSON模式).但是,我并不完全相信这是正确的方法,因为这些额外的检查不仅仅基于提供的JSON数据,而是需要额​​外的数据来验证(例如:系统中现有标签的名称,以检查是否标签名已经存在).

那么,在服务器端的基于json模式的验证框架中加入如上所述的附加检查是否是一个好主意(设计/架构明智)?这会是一个优雅的解决方案吗?或者你会完全分开吗?如果没有,为什么不这样做,你会建议在客户端和服务器端验证方面保持DRY吗?

你怎么看?

一些背景信息下面的文本案例的一些额外的上下文/目标.

谢谢,Geert-Jan


一些背景/目标:

  • 基于ajax的CMS使用REST方法

  • CUD请求通过ajax使用rest方法执行(即:分别在POST,PUT,DELETE上映射).请求和响应都是通过JSON完成的.

  • 没有表格的CMS.而是使用就地编辑(例如使用Aloha编辑器:http://www.aloha-editor.org/

  • 保持干燥.

    1. 模板化:通过客户端和服务器端的Mustache模板完成.通过ajax进行初始渲染和增量渲染是基于1和相同的模板完成的.我想寻找与Mustache不同的东西(bc.它缺乏表现力),但它至少适用于这个原型.(请参阅上一个替代方案的问题,我仍在寻找答案:使用java编译器的客户端模板语言(DRY模板))

    2. DRY输入验证:如上所述


验证流程(如果失败):

  1. 用户创建/更新/删除项目.

  2. 客户端上的验证失败会立即向用户反馈修复内容.(Javascript JSON-schema-validator理想情况下会返回格式化为用户的JSON)

  3. 当客户端验证成功时,使用ajax执行CUD操作.

  4. 如果服务器端验证失败,则返回状态代码400(错误请求),其中包含由jquery的错误回调拾取的验证失败的Json对象

    $.ajax({
        ....
        error: function(xhr, status, error) {
            var validationJSON = JSON.parse(xhr.responseText);
            //handle server-side validation failure 
        },
        ....
    });
    
    Run Code Online (Sandbox Code Playgroud)
  5. 包含服务器端验证失败的JSON对象呈现给用户(类似于客户端)

validation json dry

10
推荐指数
1
解决办法
2322
查看次数

如何在使用Javascript和ERB模板(Rails)时保持DRY

我正在构建一个Rails应用程序,它使用Pusher来使用Web套接字将更新直接推送到客户端.在javascript中:

channel.bind('tweet-create', function(tweet){ //when a tweet is created, execute the following code:
  $('#timeline').append("<div class='tweet'><div class='tweeter'>"+tweet.username+"</div>"+tweet.status+"</div>");
});
Run Code Online (Sandbox Code Playgroud)

这是令人讨厌的代码和演示混合.所以自然的解决方案是使用javascript模板.也许生态或胡子:

//store this somewhere convenient, perhaps in the view folder:
tweet_view = "<div class='tweet'><div class='tweeter'>{{tweet.username}}</div>{{tweet.status}}</div>"

channel.bind('tweet-create', function(tweet){ //when a tweet is created, execute the following code:
    $('#timeline').append(Mustache.to_html(tweet_view, tweet)); //much cleaner
});
Run Code Online (Sandbox Code Playgroud)

这很好,除了我重复自己.胡子模板与我已编写的用于从服务器呈现HTML的ERB模板99%相同.小胡子和ERB模板的预期输出/目的是100%相同:将tweet对象转换为tweet html.

消除这种重复的最佳方法是什么?

更新:即使我回答了我自己的问题,我真的希望看到其他人的其他想法/解决方案 - 因此是赏金!

javascript model-view-controller ruby-on-rails dry mustache

8
推荐指数
1
解决办法
5100
查看次数

使用套接字将数据从node.js发送到Java

我正在尝试通过套接字将数据从node.js发送到Java.我四处搜索,但没有什么是真正有用的.我习惯了socket.io,但在这种情况下它似乎并不适合这个.似乎node.js的所有套接字扩展都不适合发送消息,而是听取消息和回答某些内容.

我的Java应用程序基本上应该从node.js接收一些工作,完成工作并将一些结果发送回node.js.不,这项工作不能在node.js上完成,它必须由Java完成(实际上是Scala,但无论如何).

你们有谁知道我怎么能这样做?

谢谢

javascript java sockets node.js

7
推荐指数
1
解决办法
2万
查看次数