定制化magix
magix本身提供了常见的amd、cmd、kissy及webpack版本,可以在这里找到
magix需要依赖像jquery这样的类库,完成事件绑定等事情。同时为了应对庞大的项目,magix可以对接如seajs或requirejs这样的加载器。 依赖的这2块均可以自由定制,并不会强制要求。
magix实现的4个加载器和类库的依赖如下:
- amd使用requirejs[加载器]+$(jquery,zepto)[类库]
- cmd使用seajs[加载器]+$(jquery,zepto)[类库]
- kissy版本则只需要KISSY[加载器和类库]即可。
- webpack版本需要$(jquery,zepto)[类库]
正常情况下,magix只提供项目中常用功能,其它可能用到的功能magix也提供了相应的实现,但不内置。当您需要相应的功能时,可通过修改tool/gulpfile.js中的enableModules进行定制
当然以上可能仍然无法满足您的需求,您可以按下述方案定制
目录结构:
-src
+amd
+cmd
+kissy
+tmpl
-tool
gulpfile.js
src目录下的tmpl目录为与加载器和dom操作类库无关的代码,一般不需要修改。 src目录下的amd、cmd、webpack和kissy目录则是根据不同的加载器和不同的dom操作类库有关的代码,您可以参考这些代码实现相应的方法即可 比如您在src目录下新增加了一个my文件夹,然后在my文件夹中增加magix.js文件,参考其它文件夹中的magix.js代码,实现magix需要的方法即可
像加载器requirejs 或 seajs 也不是必须的,比如你在使用webpack把文件打包成一个文件。这时候需要实现如cmd/magix.js中的 G_Require方法,让magix知道如何拿到相应的模块即可。
定制完成后,修改tool/gulpfile.js文件中的type变量为您定制的目录,如my,在tool目录下运行gulp combine,成功后生成dist/my/magix-debug.js。再运行gulp compress即可在同目录下生成相应的压缩文件magix.js。
这样就完成了定制
从3.4.3版本提供更易定制的方式,magix打包工具中提供了customize插件。 通过npm把magix安装到node_modules目录下,然后在根目录中写一个gulpfile.js文件,内容如下:
var customize = require('magix/tool/customize');
gulp.task('customize', function() {
var enableModules = 'core,autoEndUpdate,linkage,base,style,viewInit,resource,nodeAttachVframe,magix,event,vframe,body,view,updater,tmpl,updaterSetState,mxViewAttr';
customize({
tmplFile: './magix-tpl.js',
aimFile: './magix-debug.js',
loaderType: 'loader',
enableModules: enableModules
});
});
开发者提供的模板在根目录下,运行customize任务后,会在根目录下生成定制的magix-debug.js文件