QueryPHP 提供了一个 **jquery.queryphp.js** 插件用来增强框架在前端表现,这个插件只封装了基本的功能,没有任何多余的功能。
# 1):初始化 jquery.queryphp.js 插件
插件位于框架中的 **{项目地址}/lib/queryphp/resource/js/jquery.queryphp.js**,复制一份 **{项目地址}/www/public/js/jquery.queryphp.js**,然后在项目中引入,同时也要引入 jquery 框架。
~~~
{# 引入 JS 组件}
<script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
<script src="{$APP:url_public}/js/jquery.queryphp.js?_=1.0"></script>
{# 初始化组件,必须}
<script type="text/javascript">
var $Q;
$(function(){
$Q=$.fn.queryphp({
app_name:"{$APP:app_name}",
controller_name:"{$APP:controller_name}",
action_name:"{$APP:action_name}",
enter:"{$APP:url_app|basename}",
root:"{$APP:url_root}",
i18n:"{$APP:appi18n_name}"
});
});
</script>
~~~
模板编译后的结果:
~~~
<script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
<script src="<?php echo $APP->url_public; ?>/js/jquery.queryphp.js?_=1.0"></script>
<script type="text/javascript">
var $Q;
$(function(){
$Q=$.fn.queryphp({
app_name:"<?php echo $APP->app_name; ?>",
controller_name:"<?php echo $APP->controller_name; ?>",
action_name:"<?php echo $APP->action_name; ?>",
enter:"<?php echo basename ( $APP->url_app ); ?>",
root:"<?php echo $APP->url_root; ?>",
i18n:"<?php echo $APP->appi18n_name; ?>"
});
});
</script>
~~~
运行后的结果:
~~~
<script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
<script src="/public/js/jquery.queryphp.js?_=1.0"></script>
<script type="text/javascript">
var $Q;
$(function(){
$Q=$.fn.queryphp({
app_name:"home",
controller_name:"index",
action_name:"i18n",
enter:"index.php",
root:"",
i18n:"en-us"
});
});
</script>
~~~
# 2):生成框架 url 地址
系统可以通过 Q::url 来生成 url 地址,同时 javascript 也提供了一个生成 url 地址的功能。
~~~
<script type="text/javascript">
$(function(){
console.log($Q.url('blog/list',{category_id:11, user_id:31}));
console.log($.fn.queryphp('url','blog/get_detail?id=45',{is_ajax:1,category_id:45}));
});
</script>
~~~
输出结果:
~~~
index.php?c=blog&a=list&category_id=11&user_id=31
index.php?c=blog&a=get_detail&id=45&is_ajax=1&category_id=45
~~~
# 3):格式化文本信息
php 可以通过 sprintf 格式化消息,同时 javascript 也提供了一个格式化消息的功能。
~~~
<script type="text/javascript">
$(function(){
console.log($Q.sprintf("老夫喜欢敲 <%s>, 复制粘贴 <%s> 就是干!",'代码','拿起来'));
console.log($.fn.queryphp("sprintf","老夫喜欢敲 <%s>, 复制粘贴 <%s> 就是干!",'代码','拿起来'));
});
</script>
~~~
输出结果:
~~~
老夫喜欢敲 <代码>, 复制粘贴 <拿起来> 就是干!
老夫喜欢敲 <代码>, 复制粘贴 <拿起来> 就是干!
~~~
# 4):格式化语言包信息
php 可以通过 Q::i18n 格式化语言包,同时 javascript 也提供了一个格式化语言包的功能。
~~~
<script type="text/javascript">
$(function(){
console.log($Q.i18n("欢迎使用 %s ,Query Yet Simple!",'QeePHP'));
console.log($Q.i18n("老夫喜欢敲 <%s>, 为软件产品提供 <%s> 国际化语言解决方案!",'代码','Javascript'));
$Q.i18nPackage('en-us',
{
"老夫喜欢敲 <%s>, 为软件产品提供 <%s> 国际化语言解决方案!" : "Old lady likes to knock <%s>, software products for the <%s> international language solutions!",
"欢迎使用 %s ,Query Yet Simple!" : "Welcome to use %s ,Query Yet Simple!"
});
console.log($Q.i18n("欢迎使用 %s ,Query Yet Simple!",'QeePHP'));
console.log($Q.i18n("老夫喜欢敲 <%s>, 为软件产品提供 <%s> 国际化语言解决方案!",'代码','Javascript'));
});
</script>
~~~
输出结果:
~~~
欢迎使用 QeePHP ,Query Yet Simple!
老夫喜欢敲 <代码>, 为软件产品提供 <Javascript> 国际化语言解决方案!
Welcome to use QeePHP ,Query Yet Simple!
Old lady likes to knock <代码>, software products for the <Javascript> international language solutions!
~~~
> 提示:语言包我们建议不使用 $.fn.queryphp('i18n') 这样的方式,主要是为了方便使用 Poedit 软件自动扫描 i18n 语言包标记。例外就是,系统会将 po 对应的 js 语言包缓存到 **{项目地址}/www/public/js/i18n/en-us/default.js** 中,内容如下:
~~~
/* I18n Cache */
;$(function(){
$.fn.queryphp('i18nPackage','en-us',{"我是一个只狗":"I am a dog"});
});
~~~
# 5):javascript 模板引擎
系统为 javascript 提供一个模板引擎,以便于开发高效的前后端分离应用《模板引擎语法/J模板引擎 intro》这一章。
- 关于 QueryPHP
- 获取 QueryPHP
- 环境要求
- 许可协议 Free
- 执行流程 MVC
- 命名规范 $sName
- 目录结构 DIR
- 单一入口 index.php
- 响应客户端请求 URL
- 命名空间与自动载入 Autoload
- 路由
- 路由导入
- 批量导入
- 参数正则
- 分组定义
- 路由绑定
- 路由域名
- 分层控制器
- 默认和初始化APP
- 默认控制器和方法
- url 模式
- url 生成
- url 伪静态
- url 重写
- url 重定向
- 控制器绑定
- 方法器分层
- 控制器 __init
- 控制器方法交互
- 模板引擎语法
- C变量输出 $sName
- C变量支持函数和方法 $sName|trim
- C快捷输出 ~
- C标签简化 Css & Javascript
- C默认值 eq 三元运算符
- C变量运算符 +-
- 变量递增递减 ++--
- C循环数据 list
- N变量赋值 assign
- N循环数据 list
- N循环数据高级版 lists
- C循环数据 while
- N循环数据 while
- C循环数据 for
- N循环数据 for
- C条件判断 if
- N条件判断 if
- 标签嵌套无限层级
- N循环流程 break & continue
- N使用 PHP 代码
- N包含子模板 include
- J模板引擎 intro
- J条件判断 if
- J循环数据 each
- J变量 & 表达式
- J变量支持函数和方法 hello|test
- J默认值 eq 三元运算符
- J框架前端组件 jquery.queryphp.js
- J前端 CSS 规范
- J前端 JS 规范
- 保护标签自身 tagself
- 数据库
- 数据库配置
- 执行原生 sql 语句
- 数据库事务
- 数据库构造器 prefix
- 数据库构造器 table
- 数据库构造器 forceIndex
- 数据库构造器 where
- 数据库构造器 bind
- 数据库构造器 join
- 数据库构造器 union
- 数据库构造器 orderBy
- 数据库构造器 groupBy
- 数据库构造器 having
- 数据库构造器 distinct
- 数据库构造器 aggregate
- 数据库构造器 limit
- 数据库构造器 forUpdate
- 数据库构造器 columns
- 数据库构造器 reset
- 数据库集合查询
- 数据库查询数据 get
- 数据库查询多条数据 getAll
- 数据库查询单条数据 getOne
- 数据库查询聚合查询 aggregate
- 数据库写入数据 insert
- 数据库写入数据 insertAll
- 配置
- 配置格式
- 惯性配置
- 配置文件
- 读取配置
- 设置配置
- 删除配置
- 日志
- 日志配置参数
- 日志路径
- 日志过滤器
- 日志处理器
- 缓存
- 缓存配置参数
- 缓存路径
- 缓存指定时间
- COOKIE
- COOKIE 配置参数
- 开发调试
- 页面 trace