【mxGraph】源码学习:(2)mxClient

1. mxClient.js文件

mxClient.js是客户端的引导机制,此文件include了运行mxGraph所需的所有源文件,并加载了其依赖的资源文件,以及配置了客户端的语言。

意思就是只要在需要使用mxGraph的地方用<script>标签加载mxClient.js即可使用该库。这是一种非常好的做法,不仅能方便的进行开发,还能提供mxClient的压缩版本以提升加载速度。

mxClient.js的作用如下:

  1. 设置加载相关文件的全局变量
  2. 设置相关路径
  3. 设置客户端语言
  4. 加载css文件和js文件

1.1 控制加载相关文件

mxClient.js定义了一些用于控制加载相关文件的全局变量:

// 用于切换<mxGraph>和<mxEditor>中两个资源文件的加载
// 这两个资源文件在resource文件夹中,如果应用已经提供则置false,参照GraphEditor
if (typeof(mxLoadResources) == 'undefined') {
   
    mxLoadResources = true;
}

// 用于指定资源文件的后缀。默认为.txt
if (typeof(mxResourceExtension) == 'undefined') {
   
    mxResourceExtension = '.txt';
}

// 用于强制在开发模式下加载JavaScript文件。默认为undefined
if (typeof(mxForceIncludes) == 'undefined') {
   
    mxForceIncludes = false;
}

// 用于在初始化库时切换加载CSS文件
if (typeof(mxLoadStylesheets) == 'undefined') {
   
    mxLoadStylesheets = true;
}

1.2 相关路径

还需要设置一些路径,如果没有指定则使用默认值:

// 所有文件的基本路径,不带斜杠。默认为'.'
// 在加载mxClient库之前覆盖此设置,比如mxBasePath='/path/to/core/directory'
if (typeof(mxBasePath) != 'undefined' && mxBasePath.length > 0) {
   
    // 去掉斜杠
    if (mxBasePath.substring(mxBasePath.length - 1) === '/') {
   
        mxBasePath = mxBasePath.substring(0, mxBasePath.length - 1);
    }

    mxClient.basePath = mxBasePath;
} else {
   
    mxClient.basePath = '.';
}

// 所有图片的基本路径,不带斜杠。默认为<mxClient.basePath> + '/images'
// 在加载mxClient库之前覆盖此设置,比如mxImageBasePath='/path/to/image/directory'
if (typeof(mxImageBasePath) != 'undefined' && mxImageBasePath.length > 0) {
   
    // 去掉斜杠
    if (mxImageBasePath.substring(mxImageBasePath.length - 1) === '/') {
   
        mxImageBasePath = mxImageBasePath.substring(0, mxImageBasePath.length - 1);
    }

    mxClient.imageBasePath = mxImageBasePath;
} else {
   
    mxClient.imageBasePath = mxClient.basePath + '/images';
}

1.3 配置语言

还支持主动设置客户端的语言,或者检测浏览器的语言以配置其语言:

// 设置客户端的语言,比如en表示英语,de表示德语。默认是en
// 资源文件的格式是使用下划线表示语言,比如graph_zh.txt
// 在加载mxClient库之前覆盖此设置,比如mxLanguage='en'
if (typeof(mxLanguage) != 'undefined' && mxLanguage != null) {
   
    mxClient.language = mxLanguage;
} else {
   
    // 在GraphEditor中必须设置mxLanguage,界面的语言才更改
    mxLanguage = (mxClient.IS_IE) ? navigator.userLanguage : navigator.language;
    // 中文分简体和繁体,这里只设置简体
    mxLanguage = (mxLanguage === 'zh-CN') ? 'zh' : mxLanguage;
    
    mxClient.language = mxLanguage;
}

// 设置默认语言加载不带下划线的资源文件。默认为en
// 在加载mxClient库之前覆盖此设置,比如mxDefaultLanguage='zh'
if (typeof(mxDefaultLanguage) != 'undefined' && mxDefaultLanguage != null) {
   
    mxClient.defaultLanguage = mxDefaultLanguage;
} else {
   
    mxClient.defaultLanguage = 'en';
}

// 设置支持的所有语言。默认语言不用添加到列表中
// 在加载mxClient库之前覆盖此设置,比如mxLanguages=['de','it','fr']
if (typeof(mxLanguages) != 'undefined' && mxLanguages != null) {
   
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值