- 浏览: 306788 次
- 性别:
- 来自: 河南郑州
最新评论
-
sillydong:
https://github.com/sillydong/CZ ...
PHP 框架 Yaf 学习笔记----默认行为 -
achun:
jocce 写道var data1={};里面放的是json数 ...
jCT 嵌入模板简化方案 -
jocce:
var data1={};里面放的是json数据吗?为什么我用 ...
jCT 嵌入模板简化方案 -
achun:
randomnany 写道hi:你说的那个所谓的bug不是bu ...
PHP 框架 Yaf 学习笔记----默认行为 -
randomnany:
hi:你说的那个所谓的bug不是bug~yaf默认的就是读取 ...
PHP 框架 Yaf 学习笔记----默认行为
文章列表
JavaScript Common Templates 第三版简要文档
文档文法描述
:
对于要描述的对象使用如下文法
name:type||example description
调用
:创建一个jCT的实例,此实例具有自己解析/执行模板的能力
var jct = new jCT(txt,path);
参数
:
txt:"" ...
做Web应用,页面上的元素(Element),常常要进行一些特殊的处理,
比如增加特效,处理innerHTML等等。
举个例子:
jQuery有一个插件lavaLamp
,可以做出漂亮的菜单。
使用的时候,除了写好css,设置好style,就是调用:
$(elm).lavaLamp(options);
/*elm是对应的元素,具体写法可以用#ID等jQuery选择器,options就是参数了参加lavaLamp的说明*/
对于这个需求,这个用法是无可非议的。
但是向这样要先筛选元素然后再进行不同除了的需求,在某些应用中可能有大量的需求。
如果一个个的写选择器,为元素设置特殊的ID或属性是很麻烦 ...
修正后的Mixin
function inMixin(){
var ths=this,i=0;
if (ths==window){
ths=arguments[0];i=1;
}
if(ths==null) throw "this is undefined";
if(i==arguments.length){
ths.mixin=inMixin;
return ths;
}
for (;i<arguments.length ;i++){
for (var a in arguments[i]){
ths[a]=arguments[i][ ...
在写这篇文章的时候我相信很多朋友都不明白我在说什么,会奇怪我这样的思路,问题就在这里,我的这种思路很难被认同.但是这种思路开发起来真的很快.请耐心看完所有的文章.
jCT发展到目前的第三版.除了jCT本身的变化外.我在使用的时候整个设计思路也都改变了.
对于模板技术来说,绝大多数是平面化,顺序化.也就是说
1.模板的结构和页面表现的结构一致--------------------平面化
2.模板成为视图的时候数据的装配是顺序进行的--------顺序化
(这个说法看了我下面的实现就会明白)
下面是我准备重新写的nicEditor打包工具模板部分.(注意<!---xxx--& ...
javascript 中递归的使用也是常见的.比如遍历DOM树.
在我们熟悉的js框架(jQuery,prototype等)中都有递归的身影.
Mixin在很多语言里都有实现,对于动态的javascript实现更是简单,只不过是成员赋值就行了.
那么这两者有什么联系?兼容又从何而来?
代码说话:
function foo1(c){
alert(c+a +':'+(this.constructor));//这里的信息足以说明不同了
a++;
if (a>1) return;//跳出递归
foo1(c);//直接递归
}
function foo2(c){
alert(c+ ...
如果在一个函数中,我们需要的数据是要从ajax获取。如果用ajax同步
的方法,浏览器会挂起,这是一个很讨厌的事情。
而ajax异步
在浏览器中的实现是立即返回的,而我们要的数据还没有被获取。
那用ajax异步
的 ...
重新进行了设计,抛弃了所有重新定义javascript固有语法的方法,这样也就是无招胜有招
了,
而且可方便自定义标记
,没有精力写注解和用法了.直接贴源代码(初稿)吧:(请在FF下测试,还没有调整IE的兼容性)
细心的朋友应该可以看出来,不同标记之间是可以转换的.
/**
* javascript Common Templates(jCT) 3(第3版)
* http://code.google.com/p/jsct/
*
* licensed under the MIT license.
* http://www.opensource.org/licenses/mit-licens ...
jCT 第三版的设计目标:
0.保留二版的原有功能
1.解决编辑器中高亮语法的问题
2.在线修改模板成为可能(配合其他工具)
3.即改即用(配合其他工具),应该叫及时编译JIT
4.更精简的实现
为达到上述目标,计划采用如下技术手段:
1.语法标签变更:
<script type="jct">
</script>
<code lang="jct">
</code>
2.属性增加:src
3.语法变更:完全采用javascript原始语法
4.扩充语句:所有扩冲均采用:/*+扩充语句*/ ...
一直以来,大家做web,从B向S提交复杂数据用的都是form.
为什么?这还用想,天经地义,form就是干这个的。
但是,现在更多的ajax
应用提交的时候仅仅是用form来创建提交数据,提交行为如何实现已经不用我们担心了。
nicEdit的inline
特性为我们创建提交数据提供了新的选择。
问:
ajax提交的数据一定要用
form创建吗?--------------------------------------不!
除了textarea就不能从div,p...其他Element中来取要提交的数据吗?------能!
ajax提交当然不完全依赖form或者form元素了,ajax提交关 ...
探讨一下,如有纰漏请指正.
认识在前面:先给出我们讨论的结果
===========================================
javascript是基于原型(prototype-based
)的语言.
javascript具有面向对象(Object-Oriented
)的编程风格.
变量不一定是对象(undefined,null等就是特例,但是NaN是个对象)
对象一定有值,也有成员(函数,属性)
Object不是顶级的,因为可以delete Object
顶级
的有:
Array Object
Boolean Object
Date Object
Functi ...
题的提出
:
jCT模板属于前后台分离的设计.
对于前后台分离的设计.
S根据B提出的请求,发送原始数据,S不需要对表现层有任何控制,降低了B,S的耦合度.
这种降低了B,S的耦合度方法,本质上是降低了
数据内容
上的
耦合度
,仅仅把表现层的控制数据分离出去了.
由于请求和数据直接影响到表现,表现
是
业务逻辑
的最直接体现,但是
这两个词不能画等号.因此我们用表现逻辑
这个词.暗示表现和业务逻辑是关联比较密切的.
当
表现逻辑
变化的时候,势必要
改变
后台数据内容
的组合结构,我们的问题就是
如何降低前后台
这是早期的版本,已经废弃,新的版本请看
我博客里的jCT专题
,或者jCT开源主页示例
里面有最简单的例子
================================================
扩充了3个重构功能的语法.同时取消了 FixDat,ViewBefore,ViewAfter
目的:更灵活的适应应用的变化
main:
自定义jCT生成对象的内部实现,用了语法,下面两个就可以不用了
entry:
自定义jCT生成对象的内部实现的入口部分
outlet:
自定义jCT生成对象的内部实现的出口部分
首先
jCT生成的函数结构类似如下:
function (CTD) ...
nicEditor是一个不错的online式所见即所得编辑器.
为了方便开发,我集成了这个简单的打包工具.
对目录的解释
demos:nicEditor的几个演示
niceditdl:从nicEditor主站改造的下载页面
packer:js压缩工具
src:nicEditor的原代码
打包需要后台的支持,我这里提供了一个php的实现.
nedl.php5就是这个文件.
需要另外说明的是:
1.src/nicFileExplore是我自己扩展的一个文件管理器,用法比较麻烦,可以忽视.
2.zh-CN.js是我对nicEditor的本地化.
3.nicEditor的原代码已经是基于Version ...
学习了bkLib.js的实现后,让我们回顾一下BK都做了什么.
bkLib.js里的内容似乎和所见即所得编辑器没有直接的联系.
是的.BK在这个文件中做的是一些基础的工作,涉及了
Class,Event,lib(常用函数库)和closure
这几个方面是我们编程工作中广泛的基础,这些工具是可以被广泛使用的.
这个设计中的实现代码结构清晰,简洁,基础.真的是为我们广泛使用打下了一个很好的基础.
扩充起来也容易.这也是作者在命名的时候起bkLib这个名字的原因了.
在我们继续进行之前,建议大家先看看nicEdit的 Demo
下次我们将进入正题.(汗其他代码我还没有看呢,其实我这也 ...
bkLib
:
这个是BK写的一些很实用的函数了,看看里面的函数好像只有一个不常见,
camelize
这个是
驼峰风格
的字符串转换函数,看看他的规则很简单,就是如果如果字符串里面出现
-
号,就把
- 删除,并把紧跟后面的字母替换为大写,
驼峰风格真是个形象的比喻.
使用这个函数的原因是DOM对象中有个
currentStyle,他对于样式属性的命名规则是
驼峰风格的,比如
background-color被写成backgroundColor,就是这样。
$BK
:
这个函数对象很有意思,看代码是根据ID返回一个DOM对象或者进一步把DOM对象扩展为 bkEle ...