让Java更像JavaScript,而让JavaScript更像Java

在JBoss Seam+ExtJS项目中,用Groovy代替Java编写Seam组件,可以让Java更像JavaScript,用JavaScript的感觉去写Java程序变成现实,使代码简洁清晰。在客户端UI层,通过引入命名空间(namespace)机制和编程约定,可以让JavaScript更像Java, 提高JavaScript程序的可读性和可维护性。

1.让Java更像JavaScript

(1)创建类实例

JavaScript:

        var addBtn = new Ext.Toolbar.Button({
            text : '新建',
            tooltip : '新建角色',
            icon : Divo.getIconAdd(),
            cls : 'x-btn-text-icon',
            handler : addRole
        })

 
Groovy:

         def doc = new DocumentUser(
             userId : 1L,
             docId : 1L,
             canRead : 1,
             canWrite : 0
         ))

 

(2)类中的方法定义

JavaScript:

    function onRoleMainted(subj, msg, data) {
        ...
    }

 

Groovy:

    def addPermissions(ss, userId) {
           ...
    }

 

(3)声明类属性

JavaScript:

    Divo.app.role.Role = function() {

        var actions
        var meta, smartGrid, grid, ds, selModel, tb
        ...

     }()

 
Groovy:

    class ContentDragServiceTest {
    
        def _service
        def nodeC1,nodeC11,nodeC12,nodeC111,nodeC112,nodeC113

        ...

    }


2.让JavaScript更像Java

(1)与Java中的包(package)机制类似,在JavaScript中引入命名空间,避免对象名冲突

Groovy:

    package com.divo.doc.service

    class DocumentService {
        ...
    }

 

JavaScript:

    Ext.namespace("Divo.app.role")

    Divo.app.role.Role = function() {
         ...
    }

 
(2)JavaScript中,约定js文件名等于类名或对象名,目录名对应命名空间名


(3)JavaScript中,大小写约定与Java一致

Groovy:

   def createDir(Document obj) {
        def dir = testing?DIR:AppUtil.getRootDir()+DIR
        if (!(new File(dir+obj.dirName)).exists()) {    
            if (!(new File(dir+obj.dirName)).mkdir())
                   throw new Exception("无法创建目录"+dir+obj.dirName)
        }
    }

 
 JavaScript:

       function init() {
            oRoleForm = Divo.app.role.RoleForm

            Divo.subscribe(Divo.app.role.ROLE_MAINT, onRoleMainted, this)

            createHTML()
            createGridMeta()
            createGrid()
        }

 

(4)JavaScript中,不用分号作为语句结束符,与Groovy一致。

 

你可能感兴趣的:(JavaScript,java,ext,groovy,seam)