PandaJS 使用说明(1.10):小结
PandaJS 是基于 Rhino、MongoDB、Server-side jQuery Template 的 JS 编程工具包,目标是使用更一致的方式编写客户端和服务器端的 js 代码。它采用嵌入式的 Jetty 作为 Web Server,依赖于 Java 7。
PandaJS 在服务器端的页面渲染也采用 JQuery Template 的语法,而数据库操作接口的语法与 Mongo Shell 上直接执行的原生语法非常接近。这使得我们可以在服务器端和客户端共用页面渲染代码,并且可以直接使用从前端传递过来的 JavaScript 对象与数据库进行交互。
Google Code 上的项目地址:
http://code.google.com/p/pandajs/
运行、调试、测试、部署:
http://xxing22657-yahoo-com-cn.iteye.com/blog/1151963
Code Sample
【使用 MongoDB 进行数据管理】
dbo.users = function(){
var users = panda.db.get("users");
return {
list: function() {
if (!users.count()) { init(); }
return users.list().$sort({ name: 1 });
},
add: function(user) {
users.insert(user);
return this.list();
},
update: function(user) {
var q = { name: user.name };
users.update(q, user, true, false);
return this.list();
},
remove: function(name) {
users.remove({ name: name });
return this.list();
}
};
function init() {
panda.db.eval(function(){
var users = db.users;
users.drop();
users.ensureIndex({ name: 1 }, { unique: true });
users.insert({ name: "user1", desc: "desc1" });
users.insert({ name: "user2", desc: "desc2" });
users.insert({ name: "user3", desc: "desc3" });
});
}
}();
见文章
http://xxing22657-yahoo-com-cn.iteye.com/blog/1158359
【使用 jQuery Template 语法进行服务器端页面渲染】
var views = {};
views.index = function($, users) {
var content = $("#content-tmpl").tmpl(),
rows = $("#user-tmpl").tmpl(users);
$("#content").html(content);
$("#content tr:first").after(rows);
$("#error").hide();
};
见文章
http://xxing22657-yahoo-com-cn.iteye.com/blog/1158359
【使用 Proxy 对象拦截方法调用(日志、权限控制、数据校验)】
(function() {
var log = panda.log("proxy.security");
proxy.security = { priority: 80 };
// 对 page.* 的调用进行权限控制
proxy.security.page = {
priority: 100,
expr: /^page./,
func: function(name, method, args) {
// 获取方法的第二个参数,即 req
var req = args[1];
// 读取 session 中的role。返回值是 java.lang.String
// 加上空字符串转为 JavaScript 中的 String
var role = req.session.getAttribute("user.role") + "";
// 如果角色是 "admin",则显示相应页面
// 否则,显示登录页面
if (role === "admin") {
return this[method].apply(this, args);
} else {
log.info("Redirect to login page.");
return panda.render("login");
}
}
}
// 利用类似的方法对 api.* 的调用进行权限控制,略
proxy.security.api = { ... }
}());
见文章
http://xxing22657-yahoo-com-cn.iteye.com/blog/1159366
http://xxing22657-yahoo-com-cn.iteye.com/blog/1159712
【服务器端与客户端共用代码】
可以共用的代码包括渲染代码、数据校验代码等,这里以共用渲染代码为例
(共用前面提到的 views.index(...))。
服务器端代码:
page.index = function(params, req, res) {
return panda.render("index", function($){
views.index($, dbo.users.list());
});
};
客户端代码:
$(function(){
bind();
// 其他代码,略
// 每次修改数据时重新渲染页面、绑定事件
function show(users) {
views.index($, users);
bind();
}
});
见文章
http://xxing22657-yahoo-com-cn.iteye.com/blog/1158359
http://xxing22657-yahoo-com-cn.iteye.com/blog/1159712
【客户端与服务器端之间的数据通信】
客户器端代码:
$(function(){
var request = {
action: "hello.say",
params: { name: "Panda" }
};
panda.post(request, function(data) {
$("#message").html(data);
});
});
服务器端代码:
api.hello = {
say: function(params) {
return "Hello, " + params.name + "!";
}
};
见文章
http://xxing22657-yahoo-com-cn.iteye.com/blog/1153849
编写 Java 和 JavaScript 扩展
【Java扩展】
直接在工程中创建 java 文件,或者将独立的 Java 工程导出的 jar 文件添加到 Build Path 中;
然后可以用 importPackage(...) 或者 JavaImporter 导入 java package,
可以参考 scripts/lib/panda 的写法。
【JavaScript 扩展】
在 scripts/lib 下创建新的文件夹。
启动应用时,文件夹名称将作为一个对象被创建,并执行文件夹中的所有 js 文件。
可以参考 scripts/lib/panda 的写法。
其他
HTML5 与 Flash 文件上传:见文章
http://xxing22657-yahoo-com-cn.iteye.com/blog/1154752
Spket 智能感知:见文章
http://xxing22657-yahoo-com-cn.iteye.com/blog/1155510
此外,PandaJS 支持热部署,修改 scripts/app 、 scripts/lib 、 webapp/js/both 下的 js 文件时不需要重启应用。
分享到:
相关推荐
OPC Common 1.10 : Proxy/Stub DLL; .NET Wrapper; IDL/Headers; Project Source Code OPC Server Enumerator 1.10 : DCOM EXE Server; IDL/Headers; Project Source Code OPC Data Access 2.05/3.00 : Proxy/Stub ...
2022最新版:ROAM V1.10主题:旅行和旅游WordPress主题.rar
除非另有说明,否则Go源文件将根据LICENSE文件中的BSD样式许可进行分发。 下载并安装 二元分布 官方二进制发行版可从。 下载二进制版本后,请访问或在网络浏览器中加载doc / install.html以获取安装说明。 从源...
反弹式内网代理软件,Usage : xsocks [-l port] [-t] [-p1 port] [-p2 port] [-s ip:port] [-r ip:port] [-u username] [-p password] Options : -l Set forward... xsocks -s 192.168.1.11:8085 -r 192.168.1.10:8086
赠送jar包:commons-configuration-1.10.jar 赠送原API文档:commons-configuration-1.10-javadoc.jar 赠送源代码:commons-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
此代码是为寻求编辑而提供的。 如果您想使用该服务,您可以使用完整的软件,如下所示: ... * 功能使用说明: 1. 将 BibTeX 保存在文本文件中并复制路径。 (即 C:\Users\...\Desktop\BibTeX.txt)
网口调试工具v1.10:可以同时实现ping网口和修改网口IP。
赠送jar包:commons-codec-1.10.jar; 赠送原API文档:commons-codec-1.10-javadoc.jar; 赠送源代码:commons-codec-1.10-sources.jar...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
试用Django 1.10 尝试Django 1.10通过创建URL缩短服务来介绍Django 1.10。 本系列涵盖各种Django基础知识以及Django 1.10特定材料。 由Team CFE @ 创建。 教程视频可在我们的并且在《没有广告。 订阅我们的感谢收看...
C++ Builder写的ZEC拼图游戏,南国椰树沙滩风情。...版本v1.10:修改了About关于对话框,增加了版本信息,可以复制网址(我的博客)链接文字,取消了上一版本的点击链接直接打开网址功能;小的细节修改。
赠送jar包:byte-buddy-1.10.22.jar; 赠送原API文档:byte-buddy-1.10.22-javadoc.jar; 赠送源代码:byte-buddy-1.10.22-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:byte-buddy-agent-1.10.22.jar; 赠送原API文档:byte-buddy-agent-1.10.22-javadoc.jar; 赠送源代码:byte-buddy-agent-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:commons-codec-1.10.jar; 赠送原API文档:commons-codec-1.10-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
升级1.5.1.10: 1、升级了搜索模块; 2、修改了dpi算法; 3、修复了循环模式发相同人的问题; 4、升级了匹配代码;
1.10附表二:回执统计表.doc
1.10附表一: 通知回执表.doc
proxies = { "http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080", } requests.get("http://example.org", proxies=proxies) 这里的可以通过ip测试网站进行验证是否成功使用了代理 ...
1.10:增加窗口定位记忆功能;保存相应设置 ; 1.12:消除累加显示时的闪烁感 1.14:也是为了消除累加显示时的闪烁感,原来用memo,改为richedit; 1.16:增加了ctrl+F,F3键组合使用,搜索字符串功能;;;;;;;; ...
赠送jar包:byte-buddy-1.10.20.jar; 赠送原API文档:byte-buddy-1.10.20-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。