存档

  • Google JavaScript Style Guide 中文简要翻译 – Style Rules部分

    JavaScript Style Rules 2.1 Naming 命名 通常地,像下面一样命名: 函数名、变量名、方法名:首字母小写 类名、枚举名:首字母大写 常量:恒大写,下划线分割 2.1.1 属性和方法 私有属性、变量和方法应该以下划线结尾 受保护属性、变量和方法不应当以下划线结尾(和公有一样) 关于私有、受保护,参考visibility一节 2.1.2 方法和函数的参数 可选的参数以「opt_」开头 如果函数接受不定参数,应当将此参数放在参数列表的最后,并且以var_args命名 但在函数体内不应使用var_args。使用arguments数组来代替。 2.1.3 属性的Getters和Setters ECMAScript5的Getters和Setters不建议使用。 如果使用了,那么Getters中不应该修改可见的状态 错误的用法: 2.1.4 存取函数 属性的Getters和Setters不是必需的。 但是,如果要写,那么Getters必须写成getFoo()、Setters必须写成setFoo(value)的形式。 布尔型的Getters可以写成isFoo(),并且通常看起来更自然。 2.1.5 命名空间 JavaScript没有原生的包或命名空间机制。 全局的命名冲突很难debug,而且在两个工程合并时会导致棘手的问题。 我们采取约定俗成的方式来防止冲突来实现代码重用。 2.1.5.1 为全局的代码使用命名空间 总是使用和工程名或类库名相同的词作为(伪)命名空间的前缀。 例如,如果你正在写一个叫”Sloth”的工程,合理的(伪)命名空间应该是sloth.* : 许多JavaScript类库提供创建命名空间的高级函数,如the Closure Library和Dojo toolkit: 2.1.5.2 明晰命名空间的所有权 当创建子命名空间时,确保父命名空间的所有人知道你在干什么。 例如,当你开始一个为sloths创建hats的工程时,确保Sloth团队知道你在使用sloth.hats命名空间 2.1.5.3 内部代码不能使用和外部代码相同的命名空间 外部代码是指不在你的代码库中的代码,它们独立地编译(通常是引入的第三方类库,但也有可能是别的团队写的类库)。 内部代码和外部代码的命名空间要严格分离。 比如,一个外部库定义了foo.hats的命名空间,foo.hats.*变得可用, 但你的代码不能在foo.hats下面定义任何符号。 错误的写法: [...]

    122 次浏览 | 没有评论
    2012年2月27日 | 归档于 程序
  • 修改Flash MP3 Player JW新添加曲目的插入位置

    估计有不少人使用Flash MP3 Player JW作为wordpress博客的播放插件。 xml方式配置播放列表(dewplayer同样支持),另外拖曳式编辑播放列表也算是这个插件的一个特点 余希望新曲插入到播放列表头部, 但插件只支持插入到尾部,再通过拖曳调整,当曲目列表太庞大时很烦,拖半天都拖不到头部 于是暴力修改源码 打开插件下的inc/class.playlist_editor.php,搜索“add new song”,会找到相关代码段 再定位到 (2.3版本是539行) 很简单,将appendTo函数改成prependTo函数。这些函数是jQuery库操纵DOM元素的函数。 不过暴力修改代码之后想直接插入到尾部就不行了,比较好的方法是加多一个新添加曲目插入位置的配置项 余现在只是用Flash MP3 Player JW作为侧边栏的widget,整碟试听的播放列表如果用Flash MP3 Player JW来编辑很痛苦,因此余不需要新添加曲目插入到尾部的功能。本着够用就是好的原则,这次于是就这样了 整碟试听的播放列表现在是用记事本之类的工具编辑,但已经很烦了,准备写个程序为dewplayer自动生成播放列表

    112 次浏览 | 没有评论
    2012年2月27日 | 归档于 技术
  • Google JavaScript Style Guide 中文简要翻译 – Language Rules部分

    组内计划依照Google的JavaScript编程规约来进行开发。非常认真的学习了一下,于是顺手简单地翻译成了中文。 Style Rules部分等有空再翻。因为是原创,虽然可能别人也翻译过了,但转载时仍请注明出处。 余刚学习JavaScript不久,不可避免对原文的理解有错误,如有错误或不当地方请指出。 Google JavaScript Style Guide 中文简要翻译 1. Language Rules部分 1.1 var 总是使用var声明变量。(理由不多说了) 1.2 Constants 使用大写字母和下划线『_』来声明常量。可以在注释中适当使用@const标签。 但不要使用const限定词来修饰变量。IE浏览器不会解析const。 例如,对于简单的类型,命名规则已经足够: 对于复杂类型,使用@const标签: 这允许编译器强制检查是否有改变。 1.3 Semicolons 总是使用分号『;』来结束语句。(理由也不多说了) 1.4 Nested functions 嵌套函数(函数体内定义的函数):可以使用。 嵌套函数有时候非常有用,自己决定在需要时使用。 1.5 Function Declarations Within Blocks 在块中定义函数:不要这样干。 虽然大多数JS解析器支持,但这不是ECMAScript标准。 ECMAScript标准只允许在脚本的全局环境或者函数体内定义函数。 请使用匿名函数并赋值给一个变量来替代。 错误的用法: 正确的用法: 1.6 Exceptions 应当使用异常处理。异常是不可避免的。 1.7 Custom exceptions 自定义异常:可以使用。自己决定在需要时使用。 1.8 Standards features 为了保持最大兼容,使用标准特性而不要使用非标准特性。 例如使用string.charAt(3)而不是使用string[3]。 又如使用DOM的函数来操作HTML元素而不是使用特定的省略记法。 1.9 [...]

    243 次浏览 | 2 条评论
    2012年2月6日 | 归档于 程序
  • ExtJS4本地化

    工作后干的活有点乱七八糟,被折磨死 每一段时间就要学新的语言。2011下半年是C#,2012年,轮换到了JavaScript 最近的任务是用ExtJS设计前端,这玩意强大到足以取代Silverlight,非常适合配合RESTful API使用,使用AJAX获取JSON或XML类型的数据,前端页面的生成完全不需要PHP/JSP,仅HTML+JS已经足够。这种情况下,前端可以和API所在服务端完全分离,部署在不同的服务器上,甚至前端可以放在用户本地运行 第一个任务是攻克多语言化(老大乃将这种任务扔给素人情何以堪) 网上搜索了一下,还有人专门写了插件(ext-locale-loader),但这种需要给每一自设计的页面弄一份语言拷贝的方式让余菊花一紧 后来阅读ExtJS的自带文档,发现有本地化的详细指引($EXTJS_FOLDER/docs/index.html#!/guide/localization) 一步步来就实现了ExtJS自身的UI元件在用户选择不同语言时的本地化 实现后的效果 演示页面:extlocalize.html ExtJS语言列表RawData:languages.js(仅保留4个语言) 逻辑+UI:extlocalize.js 切换语言的逻辑其实非常简单,判断页面的传入参数(没错,静态页面也可以有参数),利用AJAX加载语言文件,然后执行语言文件中的代码,更新字符串 extlocalize.html languages.js extlocalize.js 以上仅是ExtJS UI自身的本地化。 自己系统中的文字如何本地化呢? 余的做法基本是沿着ExtJS本地化的思路,将系统用到的字符串集中在单个文件中,这也有利于后期扩展更多的语言 像Date picker/Email Field/Month Browser/Month of the year就是系统自身的语言,不应该硬编码到UI中 在加载ExtJS语言文件的时候,同时也加载系统自身的语言文件进行刷新 系统语言文件也必须使用和ExtJS语言文件相同的后缀,如en/ja/zh_CN/zh_TW 效果: 演示页面:multiplelanguages.html 逻辑+UI:multiplelanguages.js 语言列表RawData:languages.js(和上面一样) 系统默认语言文件(必须):myproject-js/myproject-lang.js(余将默认语言弄成了日文) 系统的本地化语言文件(可选):(没有参数时会保留默认语言文件中的设定) locale/myproject-lang-en.js locale/myproject-lang-ja.js locale/myproject-lang-zh_CN.js locale/myproject-lang-zh_TW.js multiplelanguages.html multiplelanguages.js 将UI的生成全部集中到setup函数里了 myproject-js/myproject-lang.js locale/myproject-lang-en.js locale/myproject-lang-ja.js locale/myproject-lang-zh_CN.js locale/myproject-lang-zh_TW.js 注意事项: 1.ExtJS库的解压目录名要一致,代码中的为ext 2.由于AJAX的本地请求会因为安全问题被浏览器禁止,需要将文件放到服务器才能测试 源文件下载:localize.rar

    302 次浏览 | 没有评论
    2012年2月3日 | 归档于 技术, 程序
2012年2月 的存档