应用开发文档
插件应用 zip 包目录结构
插件压缩包只允许 .zip 文件, 并且目录结构需要严格按照要求
插件应用目录结构
插件应用由一个或多个组件构成。所有的组件在 components 文件夹下。插件应用与后端交互的配置信息,由与 components 文件夹同级的 package.json 来描述。components 文件夹下,是该插件应用的组件部分。组件由五个文件组成:package.json(必须) editing.js(必须) edit.css(必须) portal.js(必须) style.css(必须)。开发仅有后台功能的插件(不含组件),上述五个文件内容为空。
- 组件的 package.json 用于描述组件的基本信息。(注意区别于插件应用的 package.json)
- editing.js 在页面编辑器,编辑插件应用时加载。
- edit.css 在页面编辑器,编辑插件应用时加载。
- portal.js 用户使用该插件应用时加载。
- style.css 用户使用该插件应用时加载。
插件应用:package.json 详解
如果插件应用不需要后台,以下各个字段为空。
例如:
快站地址 kuaizhan.com;
某插件应用后台管理的域名为 example.com ;
某快站站点域名为 test.kuaizhan.com;
该插件应用提交的配置信息如下:
1.当站长在建站后台点击插件应用“进入”时将访问
http://www.kuaizhan.com/plugin/page-proxy/example/admin/
而快站服务器会访问 http://example.com/backend/admin/ (以同样的 HTTP 请求 method,包含 url query string,包含特定的 cookie 指明站点身份,去掉其他 headers),并将原始内容(去掉 Set-Cookie 等 headers)加上快站后台的头尾后返回站长。
2.当站长访问页面
http://www.kuaizhan.com/plugin/page-proxy/example/any/page
而快站服务器会访问 http://example.com/backend/any/page (以同样的 HTTP 请求 method,包含 url query string,包含特定的 cookie 指明站点身份,去掉其他 headers),并将原始内容加上快站后台的头尾后返回给站长。
3.当站长调用接口
http://www.kuaizhan.com/plugin/api-proxy/example/one/api
而快站服务器会访问 http://example.com/bcapi/one/api (以同样的 HTTP 请求 method,包含 url query string,包含特定的 cookie 指明站点身份,去掉其他 headers),并将原始内容(去掉 Set-Cookie 等 headers)直接返回给站长。
4.当用户访问站点页面
http://test.kuaizhan.com/plugin/page-proxy/example/page.html
而快站服务器会访问 http://example.com/front_page/page.html (以同样的 HTTP 请求 method,包含 url query string,包含特定的 cookie 指明用户身份,去掉其他 headers),并将原始内容加上该站点的头尾后返回给用户。
如果不希望展示站点头部栏或导航栏,则传递参数
kz-header或kz-nav为 no ,或者在返回结果中带上X-Kz-No-Header或X-Kz-No-Nav头信息并内容不为空即可。5.当用户调用接口
http://test.kuaizhan.com/plugin/api-proxy/example/hello_api
因
api配置为空,所以快站使用common配置,快站服务器会访问 http://example.com/hello_api (以同样的 HTTP 请求 method,包含 url query string,包含特定的 cookie 指明用户身份,去掉其他 headers),并将原始内容(去掉 Set-Cookie 等 headers)直接返回给用户。
组件:package.json 详解
data_config
定义插件应用使用的数据,用于 html 模板,可以在 editing.js 里获取或设置。 例如,有以下数据类型
"data_config":widgets
UI渲染配置项,通过配置 widgets 属性,将自动创建配置窗口的UI 默认有一下几种UI组件:
typeselectswitchrowsliderselecticonselecttextcolorpicker
UI组件配置方法
typeselect
switchrow
例如
slider
select
iconselect
- text
colorpicker
UI组件监听方法
例如:
/*组件的package.json*/
// editing.js;
假如 UI typeselect 组件关联的数据为 foo。按参考代码,可在 renderConfigurator 里添加代码监听数据的变化
ComponentprototyperenderConfigurator;this;
假如 UI slider 组件关联的数据为 foo。按参考代码,可在 renderConfigurator 里添加代码监听数据的变化
ComponentprototyperenderConfigurator;this;
假如 UI select 组件关联的数据为 foo。按参考代码,可在 renderConfigurator 里添加代码监听数据的变化
ComponentprototyperenderConfigurator;this;
假如 UI iconselect 组件关联的数据为 foo。按参考代码,可在 renderConfigurator 里添加代码监听数据的变化
ComponentprototyperenderConfigurator;this;
假如 UI text 组件关联的数据为 foo。按参考代码,可在 renderConfigurator 里添加代码监听数据的变化
ComponentprototyperenderConfigurator;this;
假如 UI colorpicker 组件关联的数据为 foo。按参考代码,可在 renderConfigurator 里添加代码监听数据的变化
ComponentprototyperenderConfigurator;this;
UI switchrow 控件会根据 opt.name 的参数不同,有不同的监听方式。 例如:
// switchrow 的 opt.name 为 chk_margin 时this;// switchrow 的 opt.name 为 chk_size 时this;// switchrow 的 opt.name 为 chk_align 时this;
editing.js 详解
说明:editing.js为编辑器下组件的预览、配置控制类,在提交组件时,必须包括该文件
portal.js 详解
说明:portal.js为发布后加载执行的JS程序,非必须。
;
如果需要在发布后加载portal.js 还需要在组件的package.json 中的html 数据 增加 {{progdata}} 标签。例如:
在页面构建时,这个标签会被替换为组件的 meta 内容
组件: style.css
说明:style.css 为组件的样式文件,在编辑器状态以及发布状态下都会加载,在编写 style.css 时,请参考如下标准:
禁止定义全局标签样式
禁止使用 !important
所有html结构需要包裹在一个外层容器中,外层容器的class 为 mod-插件名-组件名
例如:在插件应用sys-plugins 中,有组件button. 在编写html结构时,需要如下代码:
按钮
对应的样式应该编写如下格式
组件: editing.css
说明: editing.css 为在编辑器中特殊的样式,在发布后页面不会加载,在编写 editing.css 时,请参考如下标准:
禁止定义全局标签样式
禁止使用 !important
所有html结构需要包裹在一个外层容器中,外层容器的class 为 mod-插件名-组件名
编辑器样式中需要使用
.phone-editing前缀 ,配置框中使用.configurator前缀
例如:在插件应用sys-plugins 中,有组件button. 在编写html结构时,需要如下代码:
如果在预览框需要另外的样式显示,对应的样式应该编写如下格式
