KSS (Kinetic Style Sheets) 核心框架
项目描述
动量样式表 (KSS) kss.core
KSS是一个Ajax框架,允许在不编写任何JavaScript的情况下进行UI开发。它使用CSS兼容语法的样式表来声明和绑定浏览器中的动态行为。引擎支持一组类似于DOM的通用命令;它们在服务器上计算并发送回以操作HTML页面。
什么是KSS?
KSS是一个Ajax框架。KSS既有客户端JavaScript库,也有服务器端支持。
客户端JavaScript库需要包含在您的页面中。它从服务器获取动量样式表,解析它们并将一组操作绑定到浏览器事件和/或页面元素上。它是干净的JavaScript代码,可以与其他干净的JavaScript库(如JQuery或ExtJS)和平共存。在生产模式下约为100k。您可以通过使用其扩展机制通过插件集成自己的JavaScript代码。
服务器端代码目前适用于Zope(2和3,包括Plone)。kss.base egg(目前处于alpha状态)为其他Python平台(如)带来了服务器端支持
pylons
django
grok
JavaScript客户端代码可以独立于现有的服务器端支持使用。换句话说,它可以在我们没有构建服务器端支持的平台(如PHP、Ruby或Java)上使用。(如果您有兴趣将KSS移植到您使用的服务器环境并需要帮助,请与我们联系!)
首页
更多信息及文档可以在KSS项目首页找到。
最近更改
新增于kss 1.4.8
新增客户端操作 setActionServerTimeout
它允许为每个服务器操作分别设置超时。您可以在样式表中服务器操作之前调用它。它有一个 value 参数,您可以在其中指定以毫秒为单位的时间。
div.timeout:click { action-client: setActionServerTimeout; setActionServerTimeout-value: 10000; action-server: bla; }
您还可以在页面加载时使用它来更改全局默认超时值。
body:load { action-client: setActionServerTimeout; setActionServerTimeout-value: 5000; }
新增于kss 1.4
主要的代码重构,以提高可读性和加速。
添加了大量的ecma单元测试和selenium测试,用于测试kss.core和核心插件,所有测试都可以通过单击任何浏览器中的单个按钮进行检查。
新增和改进的演示
Base2用于CSS选择,而不是原始的cssQuery(如果存在)。显著加快页面加载速度。
允许在同一规则中使用多个选择器,即。
selector1:click selector2:click { ... }
或者甚至
selector1:keyup selector2:keydown { ... }
值提供者可以是递归的,即。
nodeAttr(kssAttr(blah))
是允许的。
添加了url()特殊值提供者,第一个是
action-server: blah; blah-kssUrl: "http://foo.bar/blahblah";
现在您可以在一行中这么说
action-server: blah url(http://foo.bar/blahblah);
如果您想调用@@ url-s,这可能很有用。
添加了alias()特殊值提供者,这允许在同一节点上使用更多的客户端操作。
action-client: setAttribute; setAttribute-key: foo; setAttribute-value: bar; action-client: setAttribute alias(other); other-key: foo2; other-value: bar2;
在动作指定同一行启用节点选择,即。而不是
action-client: foo; foo-kssSelector: css(div.klass);
您也可以说
action-client: foo css(div.klass);
在动作指定同一行启用完整表单提交,即。而不是
action-server: foo; foo-kssSubmitForm: currentForm();
您也可以说
action-server: foo currentForm();
值提供者也可以用于“事件绑定器id”,例如,而不是静态绑定器id
xxxxx:click(blah) { ... }
也可以使用动态绑定器id
xxxxx:click(kssAttr(blah)) { ... }
这个功能对于即将到来的使用案例(如拖放)是必需的。
从正常动作参数中删除先前已弃用的form()和currentForm()值提供者(备注:它们现在应该与xxx-kssSelector一起使用,或者直接在动作客户端行上,如上所述,并且它们正确支持Zope多表单字段,如:list、:record、:records。)
演示和selenium测试已从kss.demo中删除,现在与插件一起放置在kss.core中。这意味着,所有第三方插件现在应该有一个只包含selenium测试的zope演示页面,如果插件被加载,则演示出现在索引中,并且测试与所有测试一起运行。(演示可以通过kss.demo查看和测试。)我们还有一个kss.template,它创建了一个带有所有功能的骨架kss插件。
基于cookies实现日志级别(也回滚到1.2。)
其他修复(也回滚到1.2)
修复错误回退处理
修复Safari和IE上的多选择表单字段序列化
修复setKssAttribute动作和命令
修复action-cancel
在kss 1.4中已弃用
正常值提供者中的form()和currentForm()
currentForm()
您必须更改使用currentForm()的正常值提供者中的规则
action-server: myServerAction; myServerAction-data: currentForm();
为
action-server: myServerAction currentForm();
或者,如果您想与kss 1.2保持兼容性
action-server: myServerAction; myServerAction-kssSubmitForm: currentForm();
form()
同样,对于form(),您必须更改以下
action-server: myServerAction; myServerAction-data: form();
为
action-server: myServerAction form();
或者,如果您想与kss 1.2保持兼容性
action-server: myServerAction; myServerAction-kssSubmitForm: form();
必要的服务器端更改
在服务器端,接收表单作为单个参数的字典的方法必须直接在方法签名中定义值,或直接从表单中访问它们。
所以以下旧代码
def method(self, data): field1 = data['field1'] field2 = data.get('field2', None)
必须按照以下示例中的两种方式之一进行更改
def method(self, field1, field2=None): ...
另一种方法是从请求中获取它们
def method(self): request = self.request field1 = request.form['field1'] field2 = request.form.get('field2', None)
changelog for kss.core
1.6.5 (2012-12-15)
确保DevelView不会被不当遍历。这修复了https://plone.org/products/plone/security/advisories/20121106/06 [davisagli]
为了与Zope 4兼容,请使用type而不是makeClass。[elro]
1.6.4 (2012-08-11)
在测试中使用zope.site.folder。[hannosch]
使用zope.browserpage中的ViewPageTemplateFile。[hannosch]
使用zope.browserresource并删除Zope < 2.12兼容性代码。[hannosch]
修复了“plugin.js从KSS在IE中破坏jQuery”的问题。[marco.mariani]
1.6.3 (2011-07-29)
将BrowserView的导入失败修正为使用zope.publisher而不是zope.app.publisher。[kleist]
1.6.2 (2011-07-19)
使用base2-dom-fp.js的1.0.2版本。尽管在Plone 4上没有遇到早期版本的问题,但请参考http://dev.plone.org/plone/ticket/11650。[maurits]
1.6.1 (2011-01-05)
修复了在kss.core.BeautifulSoup.NavigableString中的未定义__str__。这关闭了http://dev.plone.org/old/plone/ticket/11365。[dukebody, hannosch]
1.6.0 (2010-07-05)
在Zope 2.13下避免弃用警告。[hannosch]
避免一些非常旧的Zope 2.9兼容性代码。[hannosch]
1.6.0.a3 (2010-04-27)
添加BeforeRenderKSSCommandsEvent通知。[gotcha]
1.6.0.a2 (2010-03-09)
使GenericResource声明实现IResource。[optilude]
在错误处理演示中添加超时测试。[gotcha, jfroche]
添加SetActionServerTimeout客户端操作。[gotcha, jfroche]
1.6.0.a1 (2009-11-19)
调整ISite导入以在Zope 2.12中工作。[davisagli]
在测试层被拆除时调用清理,以避免污染测试环境。[davisagli]
避免依赖于zope.app.zapi包。[hannosch]
指定包依赖。[hannosch]
1.4.7 (2009-05-11)
修复kukit负载以适应IE6 XP SP3。从kukit标签中删除xmlns="http://www.kukit.org/commands/1.1",因为它破坏了IE6 XP SP3。[gotcha]
1.4.6 (2009-04-10)
修复RequestManager对发送超时参数的处理,以便在需要时可以从自定义代码全局设置超时。[ree]
1.4.5 (2009-02-02)
添加kss.blur操作。[simon]
1.4.4 (2009-01-05)
修复了在IE7中由于包含相同id多次而失败的ca_cancel(action-cancel)测试。[ree]
修复或改进calculateAbsoluteURL以正确处理绝对和相对URL,并消除双斜杠(//)问题。它还满足kss_url_param和kss_url_param_multiprop测试,现在按预期工作,已删除以前的解决方案。[ree]
在json逻辑中使用实际请求,以便皮肤层、请求参数等可用。[wichert]
1.4.3 (2008-08-18)
替换第三方sarissa.js的许可头,以解决ohloh的许可证检测。sarissa.js仍按GNU GPL v2重新分发。[ree]
修复cssQuery-compat.js以使用最新的base2 api。[ree]
1.4.2 (2008-07-06)
从configure.zcml中包含meta.zcml,以便在单元测试期间更容易加载依赖的zcml。[gotcha, jfroche]
1.4.1 (2008-06-02)
添加@@kss_devel_mode/needs_old_cssquery,以启用Safari 3.1的解决方案。[ree]
修复了一个错误,该错误导致抛出异常而不是记录错误消息,这发生在同一个名称注册两次操作时。[ree]
1.4 (2008-04-21)
使用最新版本更新base2-dom-fp.js。[ree]
将concatresource更改为仅接受“application/x-javascript”内容类型的资源。[ree]
DONE ONLY ON BRANCH 1.4 !!! 添加改进的演示(tbody中的插入不包括:该演示在IE6中仍然损坏)[cryu, jone, gotcha]
修复setKssAttribute操作和命令(关闭plone.org的bug 8048)[gotcha]
修复action-cancel [gotcha]
1.4-rc1 (2008-03-25)
禁用的输入值不应随表单提交。[gotcha]
使用最新版本更新base2-don-fp.js。这修复了在Firefox 3上的损坏。[ree]
1.4-alpha1 (2008-03-09)
重构值提供程序注册以使用单个注册表而不是3个。这将使能够定义接收非字符串参数(如节点选择)的值提供程序。[ree]
从常规操作参数中移除之前已弃用的form()和currentForm()值提供者(注意:它们应与kssSelector一起使用)。现在它们会导致解析错误。[ree]
在action-client和action-server中实现多属性。[ree]
添加url()和alias()提供者。[ree]
将develui.css的样式改为与kssproject.org保持一致。[gotcha]
为绑定类添加一些测试。[ree]
改进一些示例,使其在开发和生产模式下都可通过Selenium进行测试,并修复它们的测试。[gotcha]
在kukit.js中,使用函数而不是已评估的代码字符串来使用token表。'eval'非常慢。[gotcha]
在kukit.js中,重构代码以朝向模块和类封闭。[gotcha]
修复Safari和IE上的多选表单字段序列化问题(修复了kssproject中的#22问题)。[ree]
修复错误回退处理。[ree]
根据cookie实现基于日志级别的功能,并将日志级别的处理添加到kss模式视图中。[ree]
将核心示例从kss.demo移动到此包中。它们现在位于核心插件下。[ree]
通过值提供者动态获取的ids,基于它们实现基于事件绑定的事件。[ree]
将kukit有效负载更改为对CDATA的HTML内容进行编码。这是必要的,因为FF中存在一个假设的bug,阻止我们使用base2(由于命名空间问题,xpath选择无法在插入元素上工作)。放弃forceToDom,确保所有插件都将html参数作为字符串接受。[ree]
1.2 (2007-08-17)
重构js代码。[gotcha]
1.2-rc2(2007-07-27)
准备发布。[ree]
当attrname是kssattr:xxx时,IE会在某些节点上崩溃。[gotcha]
修复表单序列化问题。[gotcha]
1.2-rc1.1
准备发布。与1.2-rc1相同,只是为了保持版本一致性。[ree]
1.2-rc1
弃用addClassName、removeClassName操作和命令,改用addClass和removeClass。弃用addClass、removeClass、toggleClass操作和命令中的“name”和“classname”参数,改用“value”。[ree]
实现新的打包指令和两个不同的javascript版本(开发版和生产版),这是通过使用;;;标记从javascript中实现的。还添加了@@kss_devel_mode/ui视图,用于从浏览器更改开发模式。[ree]
添加passnode选择器,可用于访问通过makeActionOper程序性传递的默认参数的值。[ree]
添加action moveNodeAsLastChild。[ree]
告别Azax(…永远欢迎KSS)!从源代码中移除旧名称的最后一丝痕迹。[gotcha]
将查询CSS选择器的功能从cssQuery更改为base2。base2应该比旧的cssQuery快得多。使用是交替的,如果存在base2,则使用它;否则,它将使用旧的cssQuery代码,该代码仍然是默认设置。[jvloothuis, ree]
添加moveNodeBefore操作(可能是遗漏的)[ree]
重构load事件,分离iload和load事件。新的事件绑定器同时处理这两个事件。引入了新的参数evt-iload-autodetect,如果此参数为false,则不使用检测,而iframe必须与我们合作,告知我们何时完成。如果将load事件绑定在iframe上,将发出弃用警告,在这种情况下,必须使用iload事件。[ree]
重构事件绑定,允许不同的迭代器在绑定器实例中绑定事件,以满足事件的需求。[ree]
1.2-beta2
将节点批量绑定在一起。[ree]
添加kssSubmitForm操作参数和弃用。[ree]
1.2-beta1
准备发布。[ree]
1.2-alpha2
合并Philikon的重构工作,将文档移动到doc/。[ree]
初始包结构。[zopeskel]
kukit.js的更改日志
1.6.2(未发布)
使用base2-dom-fp.js的1.0.2版本。尽管在Plone 4上没有遇到早期版本的问题,但请参考http://dev.plone.org/plone/ticket/11650。[maurits]
修复Chrome上的日志记录。修复了https://dev.plone.org/ticket/12511。[ree]
1.6.1(未发布)
尚未更改。
1.6.0 (2010-07-05)
尚未更改。
1.6.0.a3 (2010-04-27)
没有变化。
1.6.0a2(2010-03-09)
添加SetActionServerTimeout客户端操作。[gotcha, jfroche]
1.6.0a1(2009-11-19)
修复RequestManager对发送超时参数的处理,以便在需要时可以从自定义代码全局设置超时。[ree]
添加模糊动作(因为它不需要参数,所以需要在selectorreg.js中禁用args.length检查。)[simon]
修复或改进calculateAbsoluteURL以正确处理绝对和相对URL,并消除双斜杠(//)问题。它还满足kss_url_param和kss_url_param_multiprop测试,现在按预期工作,已删除以前的解决方案。[ree]
替换第三方sarissa.js的许可头,以解决ohloh的许可证检测。sarissa.js仍按GNU GPL v2重新分发。[ree]
修复cssQuery-compat.js以使用最新的base2 api。[ree]
修复了一个错误,它导致抛出异常而不是记录错误消息,这种情况发生在同一名称的动作被注册两次时。[ree]
1.4 (2008-04-21)
使用最新版本更新base2-dom-fp.js。[ree]
修复setKssAttribute操作和命令(关闭plone.org的bug 8048)[gotcha]
修复action-cancel [gotcha]
禁用的输入值不应随表单提交。[gotcha]
更新base2-dom-fp.js到最新版本。这修复了Firefox 3上的中断。[ree]
重构值提供程序注册以使用单个注册表而不是3个。这将使能够定义接收非字符串参数(如节点选择)的值提供程序。[ree]
从常规操作参数中移除之前已弃用的form()和currentForm()值提供者(注意:它们应与kssSelector一起使用)。现在它们会导致解析错误。[ree]
在action-client和action-server中实现多属性。[ree]
添加url()和alias()提供者。[ree]
使用令牌表中的函数而不是要评估的代码字符串。‘eval’非常慢。[gotcha]
重构代码,使其朝向模块和类闭包。[gotcha]
修复了Safari上的多选表单字段序列化(修复了kssproject中的#22)和IE。[gotcha]
修复Safari和IE上的多选表单字段序列化问题(修复了kssproject中的#22问题)。[ree]
修复错误回退处理。[ree]
基于cookie实现日志级别。将kss.dom的cookie处理代码添加到kss。将FireBug中的调试级别消息中的行信息改为日志。[ree]
通过值提供者动态获取的ids,基于它们实现基于事件绑定的事件。[ree]
在FireKiss上存储一些数据。[gotcha]
增强javascript异常,现在它们可以正确显示异常产生的地方,以及kss的注释错误原因。[jvloothuis, ree]
允许在规则中为单个属性集使用用逗号分隔的多个选择器。[gotcha, laz, jfroche]
将kukit负载的编码更改为CDATA的HTML内容。这是必要的,因为FF的一个错误,阻止我们使用base2(由于命名空间问题,xpath选择在插入元素上不起作用。)去除forceToDom,确保所有插件都接受html参数作为字符串。[ree, jvloothuis]
1.2 (2007-08-17)
将;;;标记移动到第一列。[gotcha]
修复了信誉。[gotcha]
修复了标识符,使其具有一致的样式(驼峰式)。[gotcha]
进行了一些重构,以允许Firekiss插件。[gotcha]
使代码适应80列。[gotcha]
清理了错误消息。[gotcha]
下载
项目详情
kss.core-1.6.5.zip的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ededaa654e826072e76be28068d805aeb5a9a3b6010f4076e3a3b0fefcc57905 |
|
MD5 | 87e66e78c3bbd7af3ecce5b2fef935ae |
|
BLAKE2b-256 | d5f4f42b08a38633279f59bb4b6b9e4e23ef11ec1badc23953fd18bf959c2443 |