Skip to content

Commit

Permalink
升级到1.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
lupengyu committed Oct 13, 2015
1 parent 040748f commit 992300e
Show file tree
Hide file tree
Showing 28 changed files with 428 additions and 444 deletions.
4 changes: 2 additions & 2 deletions bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ei",
"version": "1.1.0",
"version": "1.2.0",
"authors": [
"ludafa@outlook.com"
],
Expand All @@ -22,7 +22,7 @@
"output"
],
"dependencies": {
"react": "~0.13.3",
"react": "0.14.0",
"underscore": "~1.8.3",
"es6-promise": "~2.2.0"
}
Expand Down
98 changes: 28 additions & 70 deletions dist/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,13 @@ define('ei/App', [
'es6-promise',
'underscore',
'./util/invariant',
'./locator',
'./events',
'./Router',
'./env'
], function (require, exports, module) {
var Promise = require('es6-promise').Promise;
var u = require('underscore');
var invariant = require('./util/invariant');
var locator = require('./locator');
var events = require('./events');
var Router = require('./Router');
var env = require('./env');
Expand All @@ -23,81 +21,41 @@ define('ei/App', [
u.extend(this, options);
this.router = new Router(this.routes);
}
App.prototype.bootstrap = function (initialState) {
invariant(env.isClient, 'app-should bootstrap on client only');
events.emit('app-bootstrap');
locator.init(this.mode).start().on('redirect', u.bind(this.onLocatorRedirect, this));
App.prototype.execute = function (request, initialState, needRawState) {
events.emit('app-request');
var me = this;
var request = locator.createRequestFromLocation();
var route = this.route(request);
var route = me.route(request);
if (!route) {
return Promise.reject({ status: 404 });
}
return me.loadPage(route.page).then(function (Page) {
var page = new Page(initialState);
return initialState == null ? Promise.resolve(page.getInitialState(request)).then(function (state) {
page.init(state);
return page;
}) : page;
}).then(function (page) {
me.page = page;
page.render(me.main);
events.emit('app-ready');
})['catch'](function (error) {
events.emit('app-execute-error', error);
throw error;
});
};
App.prototype.onLocatorRedirect = function (path, query) {
var request = {
path: path,
query: query
};
var me = this;
var route = this.route(request);
if (!route) {
return;
}
return me.loadPage(route.page).then(function (Page) {
var page = me.page instanceof Page ? me.page : new Page();
return Promise.resolve(page.getInitialState(request)).then(function (state) {
return page.init(state);
});
}).then(function (page) {
if (me.page && me.page !== page) {
me.page.dispose();
me.page = page;
}
page.render(me.main);
events.emit('app-page-switch-succeed');
});
};
App.prototype.execute = function (request) {
events.emit('app-request');
var route = this.route(request);
if (!route) {
return Promise.reject({ status: 404 });
}
var page;
return this.loadPage(route.page).then(function (Page) {
page = new Page();
return page.getInitialState(request);
}).then(function (state) {
if (env.isServer && request.xhr) {
events.emit('app-response-in-json');
var page = env.isClient && me.page instanceof Page ? me.page : new Page(initialState);
return Promise.resolve(initialState == null ? page.getInitialState(request) : initialState).then(function (state) {
if (needRawState) {
events.emit('app-response-in-json');
return {
state: state,
route: route
};
}
events.emit('app-response-in-html');
if (initialState == null) {
page.init(state);
events.emit('app-page-bootstrap');
}
if (env.isClient) {
if (me.page && me.page !== page) {
me.page.dispose();
events.emit('app-page-switch-succeed');
}
me.page = page;
}
events.emit('app-page-entered');
return {
state: state,
page: page,
route: route
};
}
events.emit('app-response-in-html');
events.emit('app-page-bootstrap');
page.init(state);
events.emit('app-page-bootstrap-succeed');
return {
page: page,
route: route
};
});
})['catch'](function (error) {
events.emit('app-execute-error', error);
throw error;
Expand Down Expand Up @@ -145,7 +103,7 @@ define('ei/App', [
if (config) {
events.emit('app-route-succeed');
} else {
events.emit('app-route-failed');
events.emit('app-route-failed', request);
}
return config;
};
Expand Down
2 changes: 1 addition & 1 deletion dist/Container.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ define('ei/Container', [
'underscore'
], function (require, exports, module) {
var u = require('underscore');
var Container = function () {
var Container = function Container() {
this.boundCallbacks = {};
this.singletonCallbacks = {};
this.instantiatedSingletons = {};
Expand Down
14 changes: 7 additions & 7 deletions dist/Emitter.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ define('ei/Emitter', [
function Emitter() {
}
var mixins = {
on: function (name, handler) {
on: function on(name, handler) {
var pool = this[EMITTER_LISTENER_POOL_ATTR];
if (!pool) {
pool = this[EMITTER_LISTENER_POOL_ATTR] = {};
Expand All @@ -22,7 +22,7 @@ define('ei/Emitter', [
listeners.push(handler);
return this;
},
off: function (name, handler) {
off: function off(name, handler) {
var pool = this[EMITTER_LISTENER_POOL_ATTR];
if (!pool) {
return this;
Expand All @@ -47,16 +47,16 @@ define('ei/Emitter', [
}
return this;
},
once: function (name, handler) {
once: function once(name, handler) {
var me = this;
var onceHandler = function () {
var onceHandler = function onceHandler() {
me.off(name, onceHandler);
return handler.apply(me, arguments);
};
me.on(name, onceHandler);
return this;
},
emit: function (name) {
emit: function emit(name) {
var pool = this[EMITTER_LISTENER_POOL_ATTR];
if (!pool) {
return this;
Expand All @@ -72,10 +72,10 @@ define('ei/Emitter', [
this[EMITTER_CURRENT_EVENT_ATTR] = null;
return this;
},
getCurrentEvent: function () {
getCurrentEvent: function getCurrentEvent() {
return this[EMITTER_CURRENT_EVENT_ATTR];
},
destroyEvents: function () {
destroyEvents: function destroyEvents() {
var pool = this[EMITTER_LISTENER_POOL_ATTR];
if (pool) {
for (var type in pool) {
Expand Down
27 changes: 11 additions & 16 deletions dist/Page.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ define('ei/Page', [
'module',
'underscore',
'react',
'react-dom',
'./component/ConextProvider',
'./Context',
'./util/composeReducer',
Expand All @@ -14,7 +13,6 @@ define('ei/Page', [
], function (require, exports, module) {
var u = require('underscore');
var React = require('react');
var ReactDOM = require('react-dom');
var ContextProvider = require('./component/ConextProvider');
var Context = require('./Context');
var componseReducer = require('./util/composeReducer');
Expand All @@ -25,45 +23,42 @@ define('ei/Page', [
}
Page.prototype = {
constructor: Page,
initialize: function (initialState) {
initialize: function initialize(initialState) {
this.context = new Context(initialState, componseReducer(this.reducer), u.map(this.middlewares, function (middlewareCreator) {
return middlewareCreator(this);
}, this));
},
middlewares: [],
init: function (initialState) {
init: function init(initialState) {
this.dispatch({
type: 'INIT',
payload: initialState
});
return this;
},
createElement: function () {
createElement: function createElement() {
var view = this.view;
return React.createElement(ContextProvider, { ei: this.context }, function () {
return React.createElement(view);
});
},
render: function (target) {
ReactDOM.render(this.createElement(), target);
return this;
},
renderToString: function () {
return ReactDOM.renderToString(this.createElement());
},
getState: function () {
getState: function getState() {
return this.context.getState();
},
dispatch: function (action) {
setState: function setState(state) {
this.context.setState(state);
return this;
},
dispatch: function dispatch(action) {
events.emit('page-dispatch', action);
this.emit('dispatch');
this.context.dispatch(action);
return action;
},
getInitialState: function (request) {
getInitialState: function getInitialState(request) {
return {};
},
dispose: function () {
dispose: function dispose() {
events.emit('page-dispose');
this.emit('dispose');
return this;
Expand Down
2 changes: 1 addition & 1 deletion dist/Reducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ define('ei/Reducer', [
var u = require('underscore');
var Dispatcher = require('./Dispatcher');
var mixins = {
bindAction: function (ActionCreator) {
bindAction: function bindAction(ActionCreator) {
Dispatcher.addActionListener(ActionCreator.type, this);
return this;
}
Expand Down
2 changes: 1 addition & 1 deletion dist/Router.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ define('ei/Router', [
Router.prototype.route = function (request) {
for (var i = this.routes.length - 1; i >= 0; i--) {
var route = this.routes[i];
if (route.path === request.path) {
if (route.path === request.pathname) {
return route;
}
}
Expand Down
72 changes: 63 additions & 9 deletions dist/babelHelpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,69 @@ define('ei/babelHelpers', [
'exports',
'module'
], function (require, exports, module) {
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(['exports'], factory);
} else if (typeof exports === 'object') {
factory(exports);
var babelHelpers = {};
babelHelpers.inherits = function (subClass, superClass) {
if (typeof superClass !== 'function' && superClass !== null) {
throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
enumerable: false,
writable: true,
configurable: true
}
});
if (superClass)
Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
};
babelHelpers.createClass = function () {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ('value' in descriptor)
descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps)
defineProperties(Constructor.prototype, protoProps);
if (staticProps)
defineProperties(Constructor, staticProps);
return Constructor;
};
}();
babelHelpers.interopRequireDefault = function (obj) {
return obj && obj.__esModule ? obj : { 'default': obj };
};
babelHelpers.get = function get(object, property, receiver) {
if (object === null)
object = Function.prototype;
var desc = Object.getOwnPropertyDescriptor(object, property);
if (desc === undefined) {
var parent = Object.getPrototypeOf(object);
if (parent === null) {
return undefined;
} else {
return get(parent, property, receiver);
}
} else if ('value' in desc) {
return desc.value;
} else {
factory(root.babelHelpers = {});
var getter = desc.get;
if (getter === undefined) {
return undefined;
}
return getter.call(receiver);
}
};
babelHelpers.classCallCheck = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError('Cannot call a class as a function');
}
}(this, function (global) {
var babelHelpers = global;
}));
};
module.exports = babelHelpers;
});

0 comments on commit 992300e

Please sign in to comment.