Results 95 comments of 行列

## 代码改善 > 前面的过于复杂,也可用下面这段代码进行简化。外部数据有变化后通过`view`的`assign`方法通知到当前`view`后,`view`内部不管数据有没有变化都更新 ```js let Magix = require('magix'); module.exports = Magix.View.extend({ tmpl: '@view.html', init(extra) { this.assign(extra); }, assign(data) { let me = this; //你可以在这里对数据data进行加工,然后通过set方法放入到updater中 me.updater.set(data); //不管数据有没有变化都更新当前view return true; },...

如果只考虑ie9以后的浏览器,我们可以使用useCapture=true来对这些不冒泡的事件进行处理,如 ```js (function($) { var fixEvent = function(fix) { var handler = function(event) { jQuery.event.simulate(fix, event.target, jQuery.event.fix(event)); }; var attaches = 0; $.event.special[fix] = { setup: function() { var doc...

#### 修改rewrites数组=>rewrite方法 原来的rewrites为一个数组对象,每次需要循环遍历,而且只能修改path,实际使用中有可能对参数也要重写,因此把原来的rewrites数组对象改为rewrite方法调用 ```js Magix.config({ rewrite(path, params) { var reg = /^\/(.+)\/photo$/; var m = reg.exec(path); if (m) { if (!params.user) { params.user = m[1]; } return '/photo';//返回新的path } return...

### 事件 #### changed > 当`Magix.State`中的数据有变化时触发 ```js let Magix = require('magix'); module.exports = Magix.View.extend({ init() { Magix.State.on('changed', function(e) { console.log(e.type, e.keys); //keys是哪些有变化的key集合对象 }); }, render() { console.log('view render'); } });...

### 拆分set方法 > 行为上`Magix.State`与`Magix.Router`一致,API上与`Magix.Updater`一致,因此原有的`Magix.State.set`方法拆分成`set`与`digest`方法 ### Magix.State.set方法 > 设置`Magix.State`中的数据,仅设置数据,不再派发事件 ```js let Magix = require('magix'); module.exports = Magix.View.extend({ init() { this.observeState('abc,def'); }, render() { console.log('view render'); }, 'test' () { Magix.State.set({ abc:...

@gmfenglin 代码未动,文档先行

@gmfenglin [https://github.com/thx/magix/blob/master/tool/gulpfile.js#L11](https://github.com/thx/magix/blob/master/tool/gulpfile.js#L11) 克隆下来,修改打包工具`enableModules`增加`share`,然后重新打包即可,即调用`gulp combine`任务,然后再`gulp compress`压缩 目前设计了`Magix.State`,从共享数据这个功能,`Magix.State`的功能比`share`更适合项目中使用,所以默认我就不再打包`share`模块了,你可以自己打包的

从3.4.3版本提供更易定制的方式,magix打包工具中提供了customize插件。 通过npm把magix安装到node_modules目录下,然后在根目录中写一个gulpfile.js文件,内容如下: ```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文件

view-*的设计参考了data-*的设计。 ```html ``` 我们通过div.dataset.aaBB获取data-aa-bb属性值 mx-*事件的设计参考了原生dom节点事件的设计。 原生事件,比如pagehide,pageshow,animationstart,fullscreenchange等,全部为小写,同时也没有使用连字符

其实页面区块化这个思路很早就有了,比如`iframe`这个标签,我们可以开发一个通用页面,然后在同一个页面上可以用`iframe`来嵌套显示这个通用页面,并且在url中传递参数,如下 ``` html ``` 当然,`iframe`有它的好处和问题,不过这种思路确实不错。 再比如`asp.net`,它的组件功能也是这样区块化的。比如``,组件也是可以嵌套形成更大的组件最终组装成页面。 类似这样的思路在服务端还是比较多的,发展到现在前后端分离的时候,magix致力于解决前端的这种嵌套与复用,思路都是类似的。如果你理解这些则上手magix会快速一些