├── .babelrc ├── .gitignore ├── README.md ├── imvc.config.js ├── package.json ├── publish ├── README.md ├── assets.json ├── imvc.config.js ├── package.json ├── routes │ ├── Layout.js │ ├── index.js │ └── test │ │ └── index.js ├── src │ ├── advanced_usage │ │ ├── custom_isomorphic_method │ │ │ └── Controller.js │ │ ├── index.js │ │ ├── use_keep_alive │ │ │ ├── page_a │ │ │ │ └── Controller.js │ │ │ └── page_b │ │ │ │ └── Controller.js │ │ └── use_nav_link_component │ │ │ ├── Controller.js │ │ │ └── View.js │ ├── basic_usage │ │ ├── basic_state │ │ │ ├── Controller.js │ │ │ └── View.js │ │ ├── custom_title_description_keywords │ │ │ ├── Controller.js │ │ │ ├── Model.js │ │ │ └── View.js │ │ ├── event_handler │ │ │ ├── Controller.js │ │ │ ├── Model.js │ │ │ └── View.js │ │ ├── import_css │ │ │ ├── Controller.js │ │ │ ├── View.js │ │ │ └── css │ │ │ │ ├── base.css │ │ │ │ ├── blue.css │ │ │ │ └── red.css │ │ ├── index.js │ │ ├── input_component │ │ │ ├── Controller.js │ │ │ ├── Model.js │ │ │ └── View.js │ │ ├── isomorphic_cookie │ │ │ ├── Controller.js │ │ │ ├── Model.js │ │ │ └── View.js │ │ ├── isomorphic_fetch │ │ │ ├── Controller.js │ │ │ ├── Model.js │ │ │ ├── View.js │ │ │ └── json │ │ │ │ ├── csr.json │ │ │ │ └── ssr.json │ │ ├── isomorphic_redirect │ │ │ └── Controller.js │ │ ├── life_cycle_method │ │ │ ├── Controller.js │ │ │ └── View.js │ │ ├── simple_mock │ │ │ ├── Controller.js │ │ │ ├── Model.js │ │ │ ├── View.js │ │ │ └── json │ │ │ │ ├── csr.json │ │ │ │ └── ssr.json │ │ ├── static_view │ │ │ ├── Controller.js │ │ │ └── View.js │ │ ├── use_action │ │ │ ├── Controller.js │ │ │ ├── Model.js │ │ │ └── View.js │ │ └── use_link_component │ │ │ ├── Controller.js │ │ │ └── View.js │ ├── component │ │ └── Layout.js │ ├── home │ │ ├── Controller.js │ │ ├── Model.js │ │ └── View.js │ └── index.js ├── start.js ├── static │ ├── advanced_usage │ │ ├── custom_isomorphic_method │ │ │ └── custom_isomorphic_method-41cfa0.js │ │ ├── use_keep_alive │ │ │ ├── page_a │ │ │ │ └── page_a-49493f.js │ │ │ └── page_b │ │ │ │ └── page_b-f16886.js │ │ └── use_nav_link_component │ │ │ └── use_nav_link_component-6400e1.js │ ├── basic_usage │ │ ├── basic_state │ │ │ └── basic_state-251ea4.js │ │ ├── custom_title_description_keywords │ │ │ └── custom_title_description_keywords-3d63d9.js │ │ ├── event_handler │ │ │ └── event_handler-5e1ffc.js │ │ ├── import_css │ │ │ ├── css │ │ │ │ ├── base.css │ │ │ │ ├── blue.css │ │ │ │ └── red.css │ │ │ └── import_css-9b5b74.js │ │ ├── input_component │ │ │ └── input_component-a3d093.js │ │ ├── isomorphic_cookie │ │ │ └── isomorphic_cookie-49d23f.js │ │ ├── isomorphic_fetch │ │ │ ├── isomorphic_fetch-0cf769.js │ │ │ └── json │ │ │ │ ├── csr.json │ │ │ │ └── ssr.json │ │ ├── isomorphic_redirect │ │ │ └── isomorphic_redirect-3ed1a5.js │ │ ├── life_cycle_method │ │ │ └── life_cycle_method-96960a.js │ │ ├── simple_mock │ │ │ ├── json │ │ │ │ ├── csr.json │ │ │ │ └── ssr.json │ │ │ └── simple_mock-a35537.js │ │ ├── static_view │ │ │ └── static_view-c2a282.js │ │ ├── use_action │ │ │ └── use_action-8b976a.js │ │ └── use_link_component │ │ │ └── use_link_component-934e86.js │ ├── home │ │ └── home-67f57c.js │ ├── index-c978f9.js │ ├── index.html │ └── vendor-c978f9.js └── test │ └── foo-test.js ├── routes ├── Layout.js ├── index.js └── test │ └── index.js ├── should_ignore ├── test.js └── test.txt ├── src ├── advanced_usage │ ├── custom_isomorphic_method │ │ └── Controller.js │ ├── index.js │ ├── use_keep_alive │ │ ├── page_a │ │ │ └── Controller.js │ │ └── page_b │ │ │ └── Controller.js │ └── use_nav_link_component │ │ ├── Controller.js │ │ └── View.js ├── basic_usage │ ├── basic_state │ │ ├── Controller.js │ │ └── View.js │ ├── custom_title_description_keywords │ │ ├── Controller.js │ │ ├── Model.js │ │ └── View.js │ ├── event_handler │ │ ├── Controller.js │ │ ├── Model.js │ │ └── View.js │ ├── import_css │ │ ├── Controller.js │ │ ├── View.js │ │ └── css │ │ │ ├── base.css │ │ │ ├── blue.css │ │ │ └── red.css │ ├── index.js │ ├── input_component │ │ ├── Controller.js │ │ ├── Model.js │ │ └── View.js │ ├── isomorphic_cookie │ │ ├── Controller.js │ │ ├── Model.js │ │ └── View.js │ ├── isomorphic_fetch │ │ ├── Controller.js │ │ ├── Model.js │ │ ├── View.js │ │ └── json │ │ │ ├── csr.json │ │ │ └── ssr.json │ ├── isomorphic_redirect │ │ └── Controller.js │ ├── life_cycle_method │ │ ├── Controller.js │ │ └── View.js │ ├── simple_mock │ │ ├── Controller.js │ │ ├── Model.js │ │ ├── View.js │ │ └── json │ │ │ ├── csr.json │ │ │ └── ssr.json │ ├── static_view │ │ ├── Controller.js │ │ └── View.js │ ├── use_action │ │ ├── Controller.js │ │ ├── Model.js │ │ └── View.js │ └── use_link_component │ │ ├── Controller.js │ │ └── View.js ├── component │ └── Layout.js ├── home │ ├── controller.js │ ├── model.js │ └── view.js └── index.js ├── start.js └── test └── foo-test.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["env", "stage-0", "react"] 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules 5 | 6 | # production 7 | .idea 8 | 9 | # misc 10 | .DS_Store 11 | npm-debug.log 12 | .vscode 13 | _site 14 | mock/test.json 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-imvc-template 2 | 3 | [react-imvc](https://github.com/Lucifier129/react-imvc) 的简单用法示例 -------------------------------------------------------------------------------- /imvc.config.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | export default { 4 | layout: 'Layout', 5 | restapi: '/restapi', 6 | routes: 'routes', 7 | staticEntry: 'index.html', 8 | // codeSpliting: true, 9 | gulp: { 10 | publishCopy: [`!${__dirname}/should_ignore`, `!${__dirname}/should_ignore/**/*`], 11 | publishBabel: [`!${__dirname}/should_ignore/**/*.js`], 12 | } 13 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-imvc-template", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "react-imvc start --config=imvc.config.js", 8 | "start:debug": "react-imvc start?inspect-brk --config=imvc.config.js", 9 | "build": "react-imvc build --config=imvc.config.js", 10 | "test": "react-imvc test" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/Lucifier129/react-imvc-template.git" 15 | }, 16 | "keywords": [], 17 | "author": "", 18 | "license": "ISC", 19 | "bugs": { 20 | "url": "https://github.com/Lucifier129/react-imvc-template/issues" 21 | }, 22 | "homepage": "https://github.com/Lucifier129/react-imvc-template#readme", 23 | "dependencies": { 24 | "react-imvc": "^1.3.3" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /publish/README.md: -------------------------------------------------------------------------------- 1 | # react-imvc-template 2 | 3 | [react-imvc](https://github.com/Lucifier129/react-imvc) 的简单用法示例 -------------------------------------------------------------------------------- /publish/assets.json: -------------------------------------------------------------------------------- 1 | { 2 | "index": "index-c978f9.js", 3 | "basic_usage\\static_view/static_view": "basic_usage\\static_view/static_view-c2a282.js", 4 | "basic_usage\\use_link_component/use_link_component": "basic_usage\\use_link_component/use_link_component-934e86.js", 5 | "basic_usage\\basic_state/basic_state": "basic_usage\\basic_state/basic_state-251ea4.js", 6 | "basic_usage\\import_css/import_css": "basic_usage\\import_css/import_css-9b5b74.js", 7 | "basic_usage\\use_action/use_action": "basic_usage\\use_action/use_action-8b976a.js", 8 | "basic_usage\\event_handler/event_handler": "basic_usage\\event_handler/event_handler-5e1ffc.js", 9 | "basic_usage\\life_cycle_method/life_cycle_method": "basic_usage\\life_cycle_method/life_cycle_method-96960a.js", 10 | "basic_usage\\isomorphic_fetch/isomorphic_fetch": "basic_usage\\isomorphic_fetch/isomorphic_fetch-0cf769.js", 11 | "basic_usage\\simple_mock/simple_mock": "basic_usage\\simple_mock/simple_mock-a35537.js", 12 | "basic_usage\\isomorphic_cookie/isomorphic_cookie": "basic_usage\\isomorphic_cookie/isomorphic_cookie-49d23f.js", 13 | "basic_usage\\isomorphic_redirect/isomorphic_redirect": "basic_usage\\isomorphic_redirect/isomorphic_redirect-3ed1a5.js", 14 | "basic_usage\\input_component/input_component": "basic_usage\\input_component/input_component-a3d093.js", 15 | "basic_usage\\custom_title_description_keywords/custom_title_description_keywords": "basic_usage\\custom_title_description_keywords/custom_title_description_keywords-3d63d9.js", 16 | "advanced_usage\\custom_isomorphic_method/custom_isomorphic_method": "advanced_usage\\custom_isomorphic_method/custom_isomorphic_method-41cfa0.js", 17 | "advanced_usage\\use_keep_alive\\page_a/page_a": "advanced_usage\\use_keep_alive\\page_a/page_a-49493f.js", 18 | "advanced_usage\\use_keep_alive\\page_b/page_b": "advanced_usage\\use_keep_alive\\page_b/page_b-f16886.js", 19 | "advanced_usage\\use_nav_link_component/use_nav_link_component": "advanced_usage\\use_nav_link_component/use_nav_link_component-6400e1.js", 20 | "home/home": "home/home-67f57c.js", 21 | "vendor": "vendor-c978f9.js" 22 | } -------------------------------------------------------------------------------- /publish/imvc.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = { 7 | layout: 'Layout', 8 | restapi: '/restapi', 9 | routes: 'routes', 10 | staticEntry: 'index.html', 11 | // codeSpliting: true, 12 | gulp: { 13 | publishCopy: ['!' + __dirname + '/should_ignore', '!' + __dirname + '/should_ignore/**/*'], 14 | publishBabel: ['!' + __dirname + '/should_ignore/**/*.js'] 15 | } 16 | }; -------------------------------------------------------------------------------- /publish/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-imvc-template", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "react-imvc start --config=imvc.config.js", 8 | "start:debug": "react-imvc start?inspect-brk --config=imvc.config.js", 9 | "build": "react-imvc build --config=imvc.config.js", 10 | "test": "react-imvc test" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/Lucifier129/react-imvc-template.git" 15 | }, 16 | "keywords": [], 17 | "author": "", 18 | "license": "ISC", 19 | "bugs": { 20 | "url": "https://github.com/Lucifier129/react-imvc-template/issues" 21 | }, 22 | "homepage": "https://github.com/Lucifier129/react-imvc-template#readme", 23 | "dependencies": { 24 | "react-imvc": "^1.3.3" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /publish/routes/Layout.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = Page; 7 | 8 | var _react = require('react'); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 13 | 14 | function Page(props) { 15 | return _react2.default.createElement( 16 | 'html', 17 | null, 18 | _react2.default.createElement( 19 | 'head', 20 | null, 21 | _react2.default.createElement('meta', { charSet: 'utf-8' }), 22 | _react2.default.createElement('meta', { 23 | name: 'viewport', 24 | content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui' 25 | }), 26 | _react2.default.createElement('meta', { content: 'yes', name: 'apple-mobile-web-app-capable' }), 27 | _react2.default.createElement('meta', { 28 | name: 'apple-mobile-web-app-status-bar-style', 29 | content: 'black-translucent' 30 | }), 31 | _react2.default.createElement('meta', { content: 'black', name: 'apple-mobile-web-app-status-bar-style' }), 32 | _react2.default.createElement( 33 | 'title', 34 | null, 35 | props.title 36 | ), 37 | _react2.default.createElement('meta', { name: 'description', content: props.description }), 38 | _react2.default.createElement('meta', { name: 'keywords', content: props.keywords }) 39 | ), 40 | _react2.default.createElement( 41 | 'body', 42 | null, 43 | _react2.default.createElement('div', { id: 'root', dangerouslySetInnerHTML: { __html: props.content } }), 44 | _react2.default.createElement('div', { id: 'modal' }), 45 | _react2.default.createElement('script', { 46 | dangerouslySetInnerHTML: { 47 | __html: '\n (function() {\n window.__INITIAL_STATE__ = ' + JSON.stringify(props.initialState) + '\n window.__APP_SETTINGS__ = ' + JSON.stringify(props.appSettings) + '\n window.__PUBLIC_PATH__ = \'' + props.publicPath + '\'\n })()\n ' 48 | } 49 | }), 50 | _react2.default.createElement('script', { src: props.publicPath + '/' + props.assets.vendor }), 51 | _react2.default.createElement('script', { src: props.publicPath + '/' + props.assets.index }) 52 | ) 53 | ); 54 | } // custom layout -------------------------------------------------------------------------------- /publish/routes/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.test = undefined; 7 | 8 | var _test2 = require('./test'); 9 | 10 | var _test3 = _interopRequireDefault(_test2); 11 | 12 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 13 | 14 | exports.test = _test3.default; -------------------------------------------------------------------------------- /publish/routes/test/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | exports.default = function (app, server) { 8 | app.use('/restapi', router); 9 | server.on('error', function (error) { 10 | console.log('error', error); 11 | }); 12 | }; 13 | 14 | var _express = require('express'); 15 | 16 | var router = (0, _express.Router)(); 17 | 18 | router.get('/admin', function (req, res) { 19 | res.json({ 20 | name: 'Jade Gu' 21 | }); 22 | }); -------------------------------------------------------------------------------- /publish/src/advanced_usage/custom_isomorphic_method/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 8 | 9 | var _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; }; }(); 10 | 11 | var _controller = require('react-imvc/controller'); 12 | 13 | var _controller2 = _interopRequireDefault(_controller); 14 | 15 | var _react = require('react'); 16 | 17 | var _react2 = _interopRequireDefault(_react); 18 | 19 | var _Layout = require('../../component/Layout'); 20 | 21 | var _Layout2 = _interopRequireDefault(_Layout); 22 | 23 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 24 | 25 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 26 | 27 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 28 | 29 | function _inherits(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; } 30 | 31 | var _class = function (_Controller) { 32 | _inherits(_class, _Controller); 33 | 34 | function _class() { 35 | var _ref; 36 | 37 | var _temp, _this, _ret; 38 | 39 | _classCallCheck(this, _class); 40 | 41 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 42 | args[_key] = arguments[_key]; 43 | } 44 | 45 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = _class.__proto__ || Object.getPrototypeOf(_class)).call.apply(_ref, [this].concat(args))), _this), _this.View = View, _this.initialState = { 46 | userAgent: '' 47 | /** 48 | * context 里包含 isServer/isClient 字段 49 | * 标记当前是在 server 端还是 client 50 | * 可以通过条件判断,采用合适的方法,实现形式上的同构 51 | */ 52 | }, _temp), _possibleConstructorReturn(_this, _ret); 53 | } 54 | 55 | _createClass(_class, [{ 56 | key: 'getUserAgent', 57 | value: function getUserAgent() { 58 | var context = this.context; 59 | 60 | if (context.isServer) { 61 | return context.req.headers['user-agent']; 62 | } else if (context.isClient) { 63 | return navigator.userAgent; 64 | } 65 | } 66 | /** 67 | * 68 | * getInitialState 既会在服务端执行,也会在浏览器端执行 69 | * this.getUserAgent 不管在服务端还是浏览器端,都可以拿到一样的结果 70 | */ 71 | 72 | }, { 73 | key: 'getInitialState', 74 | value: function getInitialState(initialState) { 75 | return _extends({}, initialState, { 76 | userAgent: this.getUserAgent() 77 | }); 78 | } 79 | }]); 80 | 81 | return _class; 82 | }(_controller2.default); 83 | 84 | exports.default = _class; 85 | 86 | 87 | function View(_ref2) { 88 | var state = _ref2.state; 89 | 90 | return _react2.default.createElement( 91 | _Layout2.default, 92 | null, 93 | _react2.default.createElement( 94 | 'h2', 95 | null, 96 | 'User-Agent: ', 97 | state.userAgent 98 | ), 99 | _react2.default.createElement( 100 | 'em', 101 | null, 102 | 'view source to see the user agent of server side' 103 | ) 104 | ); 105 | } -------------------------------------------------------------------------------- /publish/src/advanced_usage/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = [{ 7 | path: '/advanced_usage/custom_isomorphic_method', 8 | controller: require('./custom_isomorphic_method/Controller') 9 | }, { 10 | path: '/advanced_usage/use_keep_alive/a', 11 | controller: require('./use_keep_alive/page_a/Controller') 12 | }, { 13 | path: '/advanced_usage/use_keep_alive/b', 14 | controller: require('./use_keep_alive/page_b/Controller') 15 | }, { 16 | path: '/advanced_usage/use_nav_link_component/:type', 17 | controller: require('./use_nav_link_component/Controller') 18 | }]; -------------------------------------------------------------------------------- /publish/src/advanced_usage/use_keep_alive/page_a/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _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; }; }(); 8 | 9 | var _controller = require('react-imvc/controller'); 10 | 11 | var _controller2 = _interopRequireDefault(_controller); 12 | 13 | var _react = require('react'); 14 | 15 | var _react2 = _interopRequireDefault(_react); 16 | 17 | var _component = require('react-imvc/component'); 18 | 19 | var _Layout = require('../../../component/Layout'); 20 | 21 | var _Layout2 = _interopRequireDefault(_Layout); 22 | 23 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 24 | 25 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 26 | 27 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 28 | 29 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 30 | 31 | function _inherits(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; } 32 | 33 | var _class = function (_Controller) { 34 | _inherits(_class, _Controller); 35 | 36 | function _class() { 37 | var _ref; 38 | 39 | var _temp, _this, _ret; 40 | 41 | _classCallCheck(this, _class); 42 | 43 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 44 | args[_key] = arguments[_key]; 45 | } 46 | 47 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = _class.__proto__ || Object.getPrototypeOf(_class)).call.apply(_ref, [this].concat(args))), _this), _this.KeepAlive = true, _this.View = View, _this.initialState = { 48 | shouldComponentCreate: 0, 49 | componentWillCreate: 0, 50 | componentDidFirstMount: 0, 51 | componentDidMount: 0, 52 | componentWillUnmount: 0, 53 | pageWillLeave: 0, 54 | pageDidBack: 0 55 | }, _temp), _possibleConstructorReturn(_this, _ret); 56 | } 57 | 58 | _createClass(_class, [{ 59 | key: 'updateCount', 60 | value: function updateCount(type) { 61 | var state = this.store.getState(); 62 | var UPDATE_STATE = this.store.actions.UPDATE_STATE; 63 | 64 | UPDATE_STATE(_defineProperty({}, type, state[type] + 1)); 65 | } 66 | }, { 67 | key: 'shouldComponentCreate', 68 | value: function shouldComponentCreate() { 69 | this.updateCount('shouldComponentCreate'); 70 | } 71 | }, { 72 | key: 'componentWillCreate', 73 | value: function componentWillCreate() { 74 | this.updateCount('componentWillCreate'); 75 | } 76 | }, { 77 | key: 'componentDidFirstMount', 78 | value: function componentDidFirstMount() { 79 | this.updateCount('componentDidFirstMount'); 80 | } 81 | }, { 82 | key: 'componentDidMount', 83 | value: function componentDidMount() { 84 | this.updateCount('componentDidMount'); 85 | } 86 | }, { 87 | key: 'componentWillUnmount', 88 | value: function componentWillUnmount() { 89 | this.updateCount('componentWillUnmount'); 90 | } 91 | }, { 92 | key: 'pageWillLeave', 93 | value: function pageWillLeave() { 94 | this.updateCount('pageWillLeave'); 95 | } 96 | }, { 97 | key: 'pageDidBack', 98 | value: function pageDidBack() { 99 | this.updateCount('pageDidBack'); 100 | } 101 | }]); 102 | 103 | return _class; 104 | }(_controller2.default); 105 | 106 | exports.default = _class; 107 | 108 | 109 | function View(_ref2) { 110 | var state = _ref2.state; 111 | 112 | return _react2.default.createElement( 113 | _Layout2.default, 114 | null, 115 | _react2.default.createElement( 116 | 'h2', 117 | null, 118 | 'I am Page A' 119 | ), 120 | _react2.default.createElement( 121 | 'div', 122 | null, 123 | _react2.default.createElement( 124 | _component.Link, 125 | { to: '/advanced_usage/use_keep_alive/b' }, 126 | '\u53BB Page B' 127 | ), 128 | ' ', 129 | _react2.default.createElement( 130 | _component.Link, 131 | { href: 'javascript:;', back: true }, 132 | '\u56DE\u9000' 133 | ), 134 | ' ', 135 | _react2.default.createElement( 136 | _component.Link, 137 | { href: 'javascript:;', forward: true }, 138 | '\u524D\u8FDB' 139 | ) 140 | ), 141 | _react2.default.createElement( 142 | 'pre', 143 | null, 144 | JSON.stringify(state, null, 2) 145 | ) 146 | ); 147 | } -------------------------------------------------------------------------------- /publish/src/advanced_usage/use_keep_alive/page_b/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _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; }; }(); 8 | 9 | var _controller = require('react-imvc/controller'); 10 | 11 | var _controller2 = _interopRequireDefault(_controller); 12 | 13 | var _react = require('react'); 14 | 15 | var _react2 = _interopRequireDefault(_react); 16 | 17 | var _component = require('react-imvc/component'); 18 | 19 | var _Layout = require('../../../component/Layout'); 20 | 21 | var _Layout2 = _interopRequireDefault(_Layout); 22 | 23 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 24 | 25 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 26 | 27 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 28 | 29 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 30 | 31 | function _inherits(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; } 32 | 33 | var _class = function (_Controller) { 34 | _inherits(_class, _Controller); 35 | 36 | function _class() { 37 | var _ref; 38 | 39 | var _temp, _this, _ret; 40 | 41 | _classCallCheck(this, _class); 42 | 43 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 44 | args[_key] = arguments[_key]; 45 | } 46 | 47 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = _class.__proto__ || Object.getPrototypeOf(_class)).call.apply(_ref, [this].concat(args))), _this), _this.KeepAlive = true, _this.View = View, _this.initialState = { 48 | shouldComponentCreate: 0, 49 | componentWillCreate: 0, 50 | componentDidFirstMount: 0, 51 | componentDidMount: 0, 52 | componentWillUnmount: 0, 53 | pageWillLeave: 0, 54 | pageDidBack: 0 55 | }, _temp), _possibleConstructorReturn(_this, _ret); 56 | } 57 | 58 | _createClass(_class, [{ 59 | key: 'updateCount', 60 | value: function updateCount(type) { 61 | var state = this.store.getState(); 62 | var UPDATE_STATE = this.store.actions.UPDATE_STATE; 63 | 64 | UPDATE_STATE(_defineProperty({}, type, state[type] + 1)); 65 | } 66 | }, { 67 | key: 'shouldComponentCreate', 68 | value: function shouldComponentCreate() { 69 | this.updateCount('shouldComponentCreate'); 70 | } 71 | }, { 72 | key: 'componentWillCreate', 73 | value: function componentWillCreate() { 74 | this.updateCount('componentWillCreate'); 75 | } 76 | }, { 77 | key: 'componentDidFirstMount', 78 | value: function componentDidFirstMount() { 79 | this.updateCount('componentDidFirstMount'); 80 | } 81 | }, { 82 | key: 'componentDidMount', 83 | value: function componentDidMount() { 84 | this.updateCount('componentDidMount'); 85 | } 86 | }, { 87 | key: 'componentWillUnmount', 88 | value: function componentWillUnmount() { 89 | this.updateCount('componentWillUnmount'); 90 | } 91 | }, { 92 | key: 'pageWillLeave', 93 | value: function pageWillLeave() { 94 | this.updateCount('pageWillLeave'); 95 | } 96 | }, { 97 | key: 'pageDidBack', 98 | value: function pageDidBack() { 99 | this.updateCount('pageDidBack'); 100 | } 101 | }]); 102 | 103 | return _class; 104 | }(_controller2.default); 105 | 106 | exports.default = _class; 107 | 108 | 109 | function View(_ref2) { 110 | var state = _ref2.state; 111 | 112 | return _react2.default.createElement( 113 | _Layout2.default, 114 | null, 115 | _react2.default.createElement( 116 | 'h2', 117 | null, 118 | 'I am Page B' 119 | ), 120 | _react2.default.createElement( 121 | 'div', 122 | null, 123 | _react2.default.createElement( 124 | _component.Link, 125 | { to: '/advanced_usage/use_keep_alive/a' }, 126 | '\u53BB Page A' 127 | ), 128 | ' ', 129 | _react2.default.createElement( 130 | _component.Link, 131 | { href: 'javascript:;', back: true }, 132 | '\u56DE\u9000' 133 | ), 134 | ' ', 135 | _react2.default.createElement( 136 | _component.Link, 137 | { href: 'javascript:;', forward: true }, 138 | '\u524D\u8FDB' 139 | ) 140 | ), 141 | _react2.default.createElement( 142 | 'pre', 143 | null, 144 | JSON.stringify(state, null, 2) 145 | ) 146 | ); 147 | } -------------------------------------------------------------------------------- /publish/src/advanced_usage/use_nav_link_component/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _controller = require('react-imvc/controller'); 8 | 9 | var _controller2 = _interopRequireDefault(_controller); 10 | 11 | var _View = require('./View'); 12 | 13 | var _View2 = _interopRequireDefault(_View); 14 | 15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 16 | 17 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 18 | 19 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 20 | 21 | function _inherits(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; } 22 | 23 | var StaticView = function (_Controller) { 24 | _inherits(StaticView, _Controller); 25 | 26 | function StaticView() { 27 | var _ref; 28 | 29 | var _temp, _this, _ret; 30 | 31 | _classCallCheck(this, StaticView); 32 | 33 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 34 | args[_key] = arguments[_key]; 35 | } 36 | 37 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = StaticView.__proto__ || Object.getPrototypeOf(StaticView)).call.apply(_ref, [this].concat(args))), _this), _this.View = _View2.default, _temp), _possibleConstructorReturn(_this, _ret); 38 | } 39 | 40 | return StaticView; 41 | }(_controller2.default); 42 | 43 | exports.default = StaticView; -------------------------------------------------------------------------------- /publish/src/advanced_usage/use_nav_link_component/View.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require("react"); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _component = require("react-imvc/component"); 13 | 14 | var _Layout = require("../../component/Layout"); 15 | 16 | var _Layout2 = _interopRequireDefault(_Layout); 17 | 18 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 19 | 20 | function View() { 21 | return _react2.default.createElement( 22 | _Layout2.default, 23 | null, 24 | _react2.default.createElement( 25 | "div", 26 | null, 27 | "\u4F7F\u7528 NavLink \u7EC4\u4EF6\u54CD\u5E94\u5F53\u524D url \u7684\u5339\u914D\u6837\u5F0F" 28 | ), 29 | _react2.default.createElement( 30 | "p", 31 | null, 32 | _react2.default.createElement( 33 | _component.NavLink, 34 | { 35 | to: "/advanced_usage/use_nav_link_component/a", 36 | activeClassName: "active", 37 | activeStyle: { color: "red" } 38 | }, 39 | "\u6211\u662F A" 40 | ) 41 | ), 42 | _react2.default.createElement( 43 | "p", 44 | null, 45 | _react2.default.createElement( 46 | _component.NavLink, 47 | { 48 | to: "/advanced_usage/use_nav_link_component/b", 49 | activeClassName: "active", 50 | activeStyle: { color: "red" } 51 | }, 52 | "\u6211\u662F B" 53 | ) 54 | ), 55 | _react2.default.createElement( 56 | "p", 57 | null, 58 | _react2.default.createElement( 59 | _component.NavLink, 60 | { 61 | to: "/advanced_usage/use_nav_link_component/c", 62 | activeClassName: "active", 63 | activeStyle: { color: "red" } 64 | }, 65 | "\u6211\u662F C" 66 | ) 67 | ), 68 | _react2.default.createElement( 69 | "p", 70 | null, 71 | _react2.default.createElement( 72 | _component.NavLink, 73 | { 74 | isActive: isBC, 75 | activeClassName: "active", 76 | activeStyle: { color: "red" } 77 | }, 78 | "\u6211\u662F B \u6216 C \u65F6\u9AD8\u4EAE" 79 | ) 80 | ) 81 | ); 82 | } 83 | 84 | function isBC(path, location) { 85 | return (/b|c/.test(location.raw.substr(-1)) 86 | ); 87 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/basic_state/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _controller = require('react-imvc/controller'); 8 | 9 | var _controller2 = _interopRequireDefault(_controller); 10 | 11 | var _View = require('./View'); 12 | 13 | var _View2 = _interopRequireDefault(_View); 14 | 15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 16 | 17 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 18 | 19 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 20 | 21 | function _inherits(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; } 22 | 23 | var BasicState = function (_Controller) { 24 | _inherits(BasicState, _Controller); 25 | 26 | function BasicState() { 27 | var _ref; 28 | 29 | var _temp, _this, _ret; 30 | 31 | _classCallCheck(this, BasicState); 32 | 33 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 34 | args[_key] = arguments[_key]; 35 | } 36 | 37 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = BasicState.__proto__ || Object.getPrototypeOf(BasicState)).call.apply(_ref, [this].concat(args))), _this), _this.View = _View2.default, _temp), _possibleConstructorReturn(_this, _ret); 38 | } 39 | 40 | return BasicState; 41 | }(_controller2.default); 42 | 43 | exports.default = BasicState; -------------------------------------------------------------------------------- /publish/src/basic_usage/basic_state/View.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require("react"); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _component = require("react-imvc/component"); 13 | 14 | var _Layout = require("../../component/Layout"); 15 | 16 | var _Layout2 = _interopRequireDefault(_Layout); 17 | 18 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 19 | 20 | function View(_ref) { 21 | var state = _ref.state; 22 | 23 | var hasParams = Object.keys(state.location.params).length !== 0; 24 | return _react2.default.createElement( 25 | _Layout2.default, 26 | null, 27 | _react2.default.createElement( 28 | "div", 29 | null, 30 | "\u9ED8\u8BA4\u586B\u5145\u57FA\u672C\u7684 state \u72B6\u6001" 31 | ), 32 | !hasParams && _react2.default.createElement( 33 | "div", 34 | null, 35 | _react2.default.createElement( 36 | _component.Link, 37 | { to: "/basic_usage/basic_state/123" }, 38 | "\u5E26\u8DEF\u5F84\u53C2\u6570\u7684\u94FE\u63A5" 39 | ) 40 | ), 41 | hasParams && _react2.default.createElement( 42 | "div", 43 | null, 44 | _react2.default.createElement( 45 | _component.Link, 46 | { to: "/basic_usage/basic_state" }, 47 | "\u4E0D\u5E26\u8DEF\u5F84\u53C2\u6570\u7684\u94FE\u63A5" 48 | ) 49 | ), 50 | _react2.default.createElement( 51 | "pre", 52 | null, 53 | JSON.stringify(state, null, 2) 54 | ) 55 | ); 56 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/custom_title_description_keywords/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _controller = require('react-imvc/controller'); 8 | 9 | var _controller2 = _interopRequireDefault(_controller); 10 | 11 | var _View = require('./View'); 12 | 13 | var _View2 = _interopRequireDefault(_View); 14 | 15 | var _Model = require('./Model'); 16 | 17 | var Model = _interopRequireWildcard(_Model); 18 | 19 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 24 | 25 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 26 | 27 | function _inherits(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; } 28 | 29 | var CustomTDK = function (_Controller) { 30 | _inherits(CustomTDK, _Controller); 31 | 32 | function CustomTDK() { 33 | var _ref; 34 | 35 | var _temp, _this, _ret; 36 | 37 | _classCallCheck(this, CustomTDK); 38 | 39 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 40 | args[_key] = arguments[_key]; 41 | } 42 | 43 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = CustomTDK.__proto__ || Object.getPrototypeOf(CustomTDK)).call.apply(_ref, [this].concat(args))), _this), _this.View = _View2.default, _this.Model = Model, _temp), _possibleConstructorReturn(_this, _ret); 44 | } 45 | 46 | return CustomTDK; 47 | }(_controller2.default); 48 | 49 | exports.default = CustomTDK; -------------------------------------------------------------------------------- /publish/src/basic_usage/custom_title_description_keywords/Model.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | /** 7 | * Model of IMVC 8 | */ 9 | 10 | /** 11 | * state 的 html 字段可以影响 document 的 title,description 和 keywords 12 | */ 13 | var initialState = exports.initialState = { 14 | html: { 15 | title: 'custom title', 16 | description: 'custom description', 17 | keywords: 'custom keywords' 18 | } 19 | }; -------------------------------------------------------------------------------- /publish/src/basic_usage/custom_title_description_keywords/View.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require("react"); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _component = require("react-imvc/component"); 13 | 14 | var _Layout = require("../../component/Layout"); 15 | 16 | var _Layout2 = _interopRequireDefault(_Layout); 17 | 18 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 19 | 20 | function View(_ref) { 21 | var state = _ref.state; 22 | 23 | return _react2.default.createElement( 24 | _Layout2.default, 25 | null, 26 | "Title: ", 27 | _react2.default.createElement(_component.Input, { name: "html.title" }) 28 | ); 29 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/event_handler/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _controller = require('react-imvc/controller'); 8 | 9 | var _controller2 = _interopRequireDefault(_controller); 10 | 11 | var _View = require('./View'); 12 | 13 | var _View2 = _interopRequireDefault(_View); 14 | 15 | var _Model = require('./Model'); 16 | 17 | var Model = _interopRequireWildcard(_Model); 18 | 19 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 24 | 25 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 26 | 27 | function _inherits(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; } 28 | 29 | var EventHandler = function (_Controller) { 30 | _inherits(EventHandler, _Controller); 31 | 32 | function EventHandler() { 33 | var _ref; 34 | 35 | var _temp, _this, _ret; 36 | 37 | _classCallCheck(this, EventHandler); 38 | 39 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 40 | args[_key] = arguments[_key]; 41 | } 42 | 43 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = EventHandler.__proto__ || Object.getPrototypeOf(EventHandler)).call.apply(_ref, [this].concat(args))), _this), _this.View = _View2.default, _this.Model = Model, _this.handleClickButton = function (event) { 44 | /** 45 | * controller 的实例 this 里有 store 对象 46 | */ 47 | var _this2 = _this, 48 | store = _this2.store; 49 | 50 | var state = store.getState(); // 获取当前 state 51 | /** 52 | * store.actions 是 actions 函数 currying 了第一个参数 state 后的新函数 53 | * UPDATE_STATE 是内置的 action 之一 54 | */ 55 | var UPDATE_STATE = store.actions.UPDATE_STATE; 56 | 57 | UPDATE_STATE({ 58 | count: state.count + 2 59 | }); 60 | }, _temp), _possibleConstructorReturn(_this, _ret); 61 | } 62 | /** 63 | * 以 handleXXX 开头的箭头函数,会被收集到 handlers 里,传递进 view 64 | */ 65 | 66 | 67 | return EventHandler; 68 | }(_controller2.default); 69 | 70 | exports.default = EventHandler; -------------------------------------------------------------------------------- /publish/src/basic_usage/event_handler/Model.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 8 | 9 | /** 10 | * Model of IMVC 11 | */ 12 | 13 | var initialState = exports.initialState = { 14 | count: 0 15 | 16 | // 返回新的 state 才会触发 view 更新 17 | };var INCREMENT = exports.INCREMENT = function INCREMENT(state) { 18 | return _extends({}, state, { 19 | count: state.count + 1 20 | }); 21 | }; 22 | 23 | var DECREMENT = exports.DECREMENT = function DECREMENT(state) { 24 | return _extends({}, state, { 25 | count: state.count - 1 26 | }); 27 | }; -------------------------------------------------------------------------------- /publish/src/basic_usage/event_handler/View.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require("react"); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _Layout = require("../../component/Layout"); 13 | 14 | var _Layout2 = _interopRequireDefault(_Layout); 15 | 16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 17 | 18 | /** 19 | * 20 | * 组件的 props 里直接有 state、handlers 和 actions 对象 21 | */ 22 | function View(_ref) { 23 | var state = _ref.state, 24 | handlers = _ref.handlers, 25 | actions = _ref.actions; 26 | var INCREMENT = actions.INCREMENT, 27 | DECREMENT = actions.DECREMENT; 28 | 29 | return _react2.default.createElement( 30 | _Layout2.default, 31 | null, 32 | _react2.default.createElement( 33 | "h2", 34 | null, 35 | "Count: ", 36 | state.count 37 | ), 38 | _react2.default.createElement( 39 | "div", 40 | null, 41 | _react2.default.createElement( 42 | "button", 43 | { onClick: INCREMENT }, 44 | "+1" 45 | ) 46 | ), 47 | _react2.default.createElement( 48 | "div", 49 | null, 50 | _react2.default.createElement( 51 | "button", 52 | { onClick: DECREMENT }, 53 | "-1" 54 | ) 55 | ), 56 | _react2.default.createElement( 57 | "div", 58 | null, 59 | _react2.default.createElement( 60 | "button", 61 | { onClick: handlers.handleClickButton }, 62 | "+2" 63 | ) 64 | ) 65 | ); 66 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/import_css/Controller.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _controller = require("react-imvc/controller"); 8 | 9 | var _controller2 = _interopRequireDefault(_controller); 10 | 11 | var _View = require("./View"); 12 | 13 | var _View2 = _interopRequireDefault(_View); 14 | 15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 16 | 17 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 18 | 19 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 20 | 21 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 22 | 23 | function _inherits(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; } 24 | 25 | var ImportCSS = function (_Controller) { 26 | _inherits(ImportCSS, _Controller); 27 | 28 | function ImportCSS() { 29 | var _ref; 30 | 31 | var _temp, _this, _ret; 32 | 33 | _classCallCheck(this, ImportCSS); 34 | 35 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 36 | args[_key] = arguments[_key]; 37 | } 38 | 39 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ImportCSS.__proto__ || Object.getPrototypeOf(ImportCSS)).call.apply(_ref, [this].concat(args))), _this), _this.preload = _defineProperty({ 40 | base: "/basic_usage/import_css/css/base.css" 41 | }, _this.location.query.color || 'red', getCssByColor(_this.location.query.color)), _this.View = _View2.default, _temp), _possibleConstructorReturn(_this, _ret); 42 | } 43 | /** 44 | * 用 preload 属性指定需要预加载的 css 文件 45 | * 可以动态地构造出来 46 | */ 47 | 48 | 49 | return ImportCSS; 50 | }(_controller2.default); 51 | 52 | exports.default = ImportCSS; 53 | 54 | 55 | var whileList = ["red", "blue"]; 56 | function getCssByColor(color) { 57 | if (whileList.includes(color)) { 58 | return "/basic_usage/import_css/css/" + color + ".css"; 59 | } 60 | return "/basic_usage/import_css/css/red.css"; 61 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/import_css/View.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require('react'); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _component = require('react-imvc/component'); 13 | 14 | var _Layout = require('../../component/Layout'); 15 | 16 | var _Layout2 = _interopRequireDefault(_Layout); 17 | 18 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 19 | 20 | function View(_ref) { 21 | var state = _ref.state; 22 | 23 | return _react2.default.createElement( 24 | _Layout2.default, 25 | null, 26 | _react2.default.createElement(_component.Style, { name: 'base' }), 27 | _react2.default.createElement(_component.Style, { name: state.location.query.color || 'red' }), 28 | _react2.default.createElement( 29 | 'div', 30 | { className: 'text' }, 31 | '\u6211\u662F\u4E00\u4E2A\u9759\u6001\u7684 View\uFF0C\u6CA1\u6709\u5176\u4ED6\u4F5C\u7528\uFF0C\u4F46\u6709\u6837\u5F0F' 32 | ), 33 | _react2.default.createElement( 34 | 'div', 35 | null, 36 | _react2.default.createElement( 37 | _component.Link, 38 | { to: '/basic_usage/import_css?color=red' }, 39 | 'red' 40 | ) 41 | ), 42 | _react2.default.createElement( 43 | 'div', 44 | null, 45 | _react2.default.createElement( 46 | _component.Link, 47 | { to: '/basic_usage/import_css?color=blue' }, 48 | 'blue' 49 | ) 50 | ) 51 | ); 52 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/import_css/css/base.css: -------------------------------------------------------------------------------- 1 | .text { 2 | letter-spacing: 5px; 3 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/import_css/css/blue.css: -------------------------------------------------------------------------------- 1 | .text { 2 | color: blue 3 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/import_css/css/red.css: -------------------------------------------------------------------------------- 1 | .text { 2 | color: red 3 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = [{ 7 | path: '/basic_usage/static_view', 8 | controller: require('./static_view/Controller') 9 | }, { 10 | path: '/basic_usage/use_link_component', 11 | controller: require('./use_link_component/Controller') 12 | }, { 13 | path: '/basic_usage/basic_state', 14 | controller: require('./basic_state/Controller') 15 | }, { 16 | path: '/basic_usage/basic_state/:custom_param', 17 | controller: require('./basic_state/Controller') 18 | }, { 19 | path: '/basic_usage/import_css', 20 | controller: require('./import_css/Controller') 21 | }, { 22 | path: '/basic_usage/use_action', 23 | controller: require('./use_action/Controller') 24 | }, { 25 | path: '/basic_usage/event_handler', 26 | controller: require('./event_handler/Controller') 27 | }, { 28 | path: '/basic_usage/life_cycle_method', 29 | controller: require('./life_cycle_method/Controller') 30 | }, { 31 | path: '/basic_usage/isomorphic_fetch', 32 | controller: require('./isomorphic_fetch/Controller') 33 | }, { 34 | path: '/basic_usage/simple_mock', 35 | controller: require('./simple_mock/Controller') 36 | }, { 37 | path: '/basic_usage/isomorphic_cookie', 38 | controller: require('./isomorphic_cookie/Controller') 39 | }, { 40 | path: '/basic_usage/isomorphic_redirect', 41 | controller: require('./isomorphic_redirect/Controller') 42 | }, { 43 | path: '/basic_usage/input_component', 44 | controller: require('./input_component/Controller') 45 | }, { 46 | path: '/basic_usage/custom_title_description_keywords', 47 | controller: require('./custom_title_description_keywords/Controller') 48 | }]; -------------------------------------------------------------------------------- /publish/src/basic_usage/input_component/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _controller = require('react-imvc/controller'); 8 | 9 | var _controller2 = _interopRequireDefault(_controller); 10 | 11 | var _View = require('./View'); 12 | 13 | var _View2 = _interopRequireDefault(_View); 14 | 15 | var _Model = require('./Model'); 16 | 17 | var Model = _interopRequireWildcard(_Model); 18 | 19 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 24 | 25 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 26 | 27 | function _inherits(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; } 28 | 29 | var InputComponent = function (_Controller) { 30 | _inherits(InputComponent, _Controller); 31 | 32 | function InputComponent() { 33 | var _ref; 34 | 35 | var _temp, _this, _ret; 36 | 37 | _classCallCheck(this, InputComponent); 38 | 39 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 40 | args[_key] = arguments[_key]; 41 | } 42 | 43 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = InputComponent.__proto__ || Object.getPrototypeOf(InputComponent)).call.apply(_ref, [this].concat(args))), _this), _this.View = _View2.default, _this.Model = Model, _temp), _possibleConstructorReturn(_this, _ret); 44 | } 45 | 46 | return InputComponent; 47 | }(_controller2.default); 48 | 49 | exports.default = InputComponent; -------------------------------------------------------------------------------- /publish/src/basic_usage/input_component/Model.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 8 | 9 | /** 10 | * Model of IMVC 11 | * 除了 initialState 属性外,其余的属性都应该是 action 函数 12 | * DOC: https://github.com/Lucifier129/relite 13 | */ 14 | 15 | var initialState = exports.initialState = { 16 | count: 0, 17 | num: 1 18 | 19 | // 返回新的 state 才会触发 view 更新 20 | };var INCREMENT = exports.INCREMENT = function INCREMENT(state) { 21 | return _extends({}, state, { 22 | count: state.count + state.num 23 | }); 24 | }; 25 | 26 | var DECREMENT = exports.DECREMENT = function DECREMENT(state) { 27 | return _extends({}, state, { 28 | count: state.count - state.num 29 | }); 30 | }; -------------------------------------------------------------------------------- /publish/src/basic_usage/input_component/View.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require("react"); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _component = require("react-imvc/component"); 13 | 14 | var _Layout = require("../../component/Layout"); 15 | 16 | var _Layout2 = _interopRequireDefault(_Layout); 17 | 18 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 19 | 20 | /** 21 | * 22 | * 组件的 props 里直接有 state 和 actions 对象 23 | * Input 组件的 name 属性支持 path 24 | * 可以是: a.b.c.e 的写法 25 | * 也可以是 a/b/c/e 的写法 26 | * 其 transformer 属性可以用来转换数据类型 27 | */ 28 | function View(_ref) { 29 | var state = _ref.state, 30 | actions = _ref.actions; 31 | var INCREMENT = actions.INCREMENT, 32 | DECREMENT = actions.DECREMENT; 33 | 34 | return _react2.default.createElement( 35 | _Layout2.default, 36 | null, 37 | _react2.default.createElement( 38 | "h2", 39 | null, 40 | "Count: ", 41 | state.count 42 | ), 43 | _react2.default.createElement( 44 | "div", 45 | null, 46 | _react2.default.createElement(_component.Input, { name: "num", transformer: Number }) 47 | ), 48 | _react2.default.createElement( 49 | "div", 50 | null, 51 | _react2.default.createElement( 52 | "button", 53 | { onClick: INCREMENT }, 54 | "+", 55 | state.num 56 | ) 57 | ), 58 | _react2.default.createElement( 59 | "div", 60 | null, 61 | _react2.default.createElement( 62 | "button", 63 | { onClick: DECREMENT }, 64 | "-", 65 | state.num 66 | ) 67 | ) 68 | ); 69 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/isomorphic_cookie/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 8 | 9 | var _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; }; }(); 10 | 11 | var _controller = require('react-imvc/controller'); 12 | 13 | var _controller2 = _interopRequireDefault(_controller); 14 | 15 | var _View = require('./View'); 16 | 17 | var _View2 = _interopRequireDefault(_View); 18 | 19 | var _Model = require('./Model'); 20 | 21 | var Model = _interopRequireWildcard(_Model); 22 | 23 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 24 | 25 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 26 | 27 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 28 | 29 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 30 | 31 | function _inherits(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; } 32 | 33 | /** 34 | * 用 cookie 来持久化存储 count 信息,在 getInitialState 时获取,在页面离开或关闭前保存 35 | */ 36 | var IsomorphicCookie = function (_Controller) { 37 | _inherits(IsomorphicCookie, _Controller); 38 | 39 | function IsomorphicCookie() { 40 | var _ref; 41 | 42 | var _temp, _this, _ret; 43 | 44 | _classCallCheck(this, IsomorphicCookie); 45 | 46 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 47 | args[_key] = arguments[_key]; 48 | } 49 | 50 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = IsomorphicCookie.__proto__ || Object.getPrototypeOf(IsomorphicCookie)).call.apply(_ref, [this].concat(args))), _this), _this.View = _View2.default, _this.Model = Model, _temp), _possibleConstructorReturn(_this, _ret); 51 | } 52 | 53 | _createClass(IsomorphicCookie, [{ 54 | key: 'getInitialState', 55 | value: function getInitialState(initialState) { 56 | return _extends({}, initialState, { 57 | count: this.getCount() 58 | }); 59 | } 60 | }, { 61 | key: 'getCount', 62 | value: function getCount() { 63 | return Number(this.cookie('count')) || 0; 64 | } 65 | }, { 66 | key: 'saveCount', 67 | value: function saveCount() { 68 | var state = this.store.getState(); 69 | return this.cookie('count', state.count); 70 | } 71 | }, { 72 | key: 'pageWillLeave', 73 | value: function pageWillLeave() { 74 | this.saveCount(); 75 | } 76 | }, { 77 | key: 'windowWillUnload', 78 | value: function windowWillUnload() { 79 | this.saveCount(); 80 | } 81 | }]); 82 | 83 | return IsomorphicCookie; 84 | }(_controller2.default); 85 | 86 | exports.default = IsomorphicCookie; -------------------------------------------------------------------------------- /publish/src/basic_usage/isomorphic_cookie/Model.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 8 | 9 | /** 10 | * Model of IMVC 11 | * 除了 initialState 属性外,其余的属性都应该是 action 函数 12 | * DOC: https://github.com/Lucifier129/relite 13 | */ 14 | 15 | var initialState = exports.initialState = { 16 | count: 0 17 | 18 | // 返回新的 state 才会触发 view 更新 19 | };var INCREMENT = exports.INCREMENT = function INCREMENT(state) { 20 | return _extends({}, state, { 21 | count: state.count + 1 22 | }); 23 | }; 24 | 25 | var DECREMENT = exports.DECREMENT = function DECREMENT(state) { 26 | return _extends({}, state, { 27 | count: state.count - 1 28 | }); 29 | }; 30 | 31 | var CLEAR = exports.CLEAR = function CLEAR(state) { 32 | return _extends({}, state, { 33 | count: 0 34 | }); 35 | }; -------------------------------------------------------------------------------- /publish/src/basic_usage/isomorphic_cookie/View.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require("react"); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _Layout = require("../../component/Layout"); 13 | 14 | var _Layout2 = _interopRequireDefault(_Layout); 15 | 16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 17 | 18 | /** 19 | * 20 | * 组件的 props 里直接有 state 和 actions 对象 21 | */ 22 | function View(_ref) { 23 | var state = _ref.state, 24 | actions = _ref.actions; 25 | var INCREMENT = actions.INCREMENT, 26 | DECREMENT = actions.DECREMENT, 27 | CLEAR = actions.CLEAR; 28 | 29 | return _react2.default.createElement( 30 | _Layout2.default, 31 | null, 32 | _react2.default.createElement( 33 | "h2", 34 | null, 35 | "Count: ", 36 | state.count 37 | ), 38 | _react2.default.createElement( 39 | "div", 40 | null, 41 | _react2.default.createElement( 42 | "button", 43 | { onClick: INCREMENT }, 44 | "+1" 45 | ) 46 | ), 47 | _react2.default.createElement( 48 | "div", 49 | null, 50 | _react2.default.createElement( 51 | "button", 52 | { onClick: DECREMENT }, 53 | "-1" 54 | ) 55 | ), 56 | _react2.default.createElement( 57 | "div", 58 | null, 59 | _react2.default.createElement( 60 | "button", 61 | { onClick: CLEAR }, 62 | "\u5F52\u96F6" 63 | ) 64 | ) 65 | ); 66 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/isomorphic_fetch/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _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; }; }(); 8 | 9 | var _controller = require('react-imvc/controller'); 10 | 11 | var _controller2 = _interopRequireDefault(_controller); 12 | 13 | var _View = require('./View'); 14 | 15 | var _View2 = _interopRequireDefault(_View); 16 | 17 | var _Model = require('./Model'); 18 | 19 | var Model = _interopRequireWildcard(_Model); 20 | 21 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 22 | 23 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 24 | 25 | function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } 26 | 27 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 28 | 29 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 30 | 31 | function _inherits(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; } 32 | 33 | var IsomorphicFetch = function (_Controller) { 34 | _inherits(IsomorphicFetch, _Controller); 35 | 36 | function IsomorphicFetch() { 37 | var _ref; 38 | 39 | var _temp, _this, _ret; 40 | 41 | _classCallCheck(this, IsomorphicFetch); 42 | 43 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 44 | args[_key] = arguments[_key]; 45 | } 46 | 47 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = IsomorphicFetch.__proto__ || Object.getPrototypeOf(IsomorphicFetch)).call.apply(_ref, [this].concat(args))), _this), _this.Model = Model, _this.View = _View2.default, _temp), _possibleConstructorReturn(_this, _ret); 48 | } 49 | 50 | _createClass(IsomorphicFetch, [{ 51 | key: 'componentWillCreate', 52 | value: function () { 53 | var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { 54 | var fetch, store, state, url, options, ssr, UPDATE_STATE; 55 | return regeneratorRuntime.wrap(function _callee$(_context) { 56 | while (1) { 57 | switch (_context.prev = _context.next) { 58 | case 0: 59 | fetch = this.fetch, store = this.store; 60 | state = store.getState(); 61 | // fetch 一个静态资源 ssr.json 62 | 63 | url = state.publicPath + '/basic_usage/isomorphic_fetch/json/ssr.json'; 64 | // fetch 方法默认会对非绝对路径,自动补全 restapi,raw 选项可以关闭自动补全 65 | 66 | options = { 67 | method: 'GET', 68 | raw: true 69 | }; 70 | _context.next = 6; 71 | return fetch(url, options); 72 | 73 | case 6: 74 | ssr = _context.sent; 75 | UPDATE_STATE = store.actions.UPDATE_STATE; 76 | 77 | UPDATE_STATE({ ssr: ssr }); 78 | 79 | case 9: 80 | case 'end': 81 | return _context.stop(); 82 | } 83 | } 84 | }, _callee, this); 85 | })); 86 | 87 | function componentWillCreate() { 88 | return _ref2.apply(this, arguments); 89 | } 90 | 91 | return componentWillCreate; 92 | }() 93 | }, { 94 | key: 'componentDidMount', 95 | value: function () { 96 | var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { 97 | var fetch, store, state, url, options, csr, UPDATE_STATE; 98 | return regeneratorRuntime.wrap(function _callee2$(_context2) { 99 | while (1) { 100 | switch (_context2.prev = _context2.next) { 101 | case 0: 102 | fetch = this.fetch, store = this.store; 103 | state = store.getState(); 104 | // fetch 一个静态资源 csr.json 105 | 106 | url = state.publicPath + '/basic_usage/isomorphic_fetch/json/csr.json'; 107 | // fetch 方法默认会对非绝对路径,自动补全 restapi,raw 选项可以关闭自动补全 108 | 109 | options = { 110 | method: 'GET', 111 | raw: true 112 | // 延迟一秒 113 | }; 114 | _context2.next = 6; 115 | return delay(1000); 116 | 117 | case 6: 118 | _context2.next = 8; 119 | return fetch(url, options); 120 | 121 | case 8: 122 | csr = _context2.sent; 123 | UPDATE_STATE = store.actions.UPDATE_STATE; 124 | 125 | UPDATE_STATE({ csr: csr }); 126 | 127 | case 11: 128 | case 'end': 129 | return _context2.stop(); 130 | } 131 | } 132 | }, _callee2, this); 133 | })); 134 | 135 | function componentDidMount() { 136 | return _ref3.apply(this, arguments); 137 | } 138 | 139 | return componentDidMount; 140 | }() 141 | }]); 142 | 143 | return IsomorphicFetch; 144 | }(_controller2.default); 145 | 146 | exports.default = IsomorphicFetch; 147 | 148 | 149 | function delay(time) { 150 | return new Promise(function (resolve) { 151 | setTimeout(resolve, time); 152 | }); 153 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/isomorphic_fetch/Model.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | /** 7 | * Model of IMVC 8 | */ 9 | 10 | var initialState = exports.initialState = { 11 | ssr: null, 12 | csr: null 13 | }; -------------------------------------------------------------------------------- /publish/src/basic_usage/isomorphic_fetch/View.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require('react'); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _Layout = require('../../component/Layout'); 13 | 14 | var _Layout2 = _interopRequireDefault(_Layout); 15 | 16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 17 | 18 | function View(_ref) { 19 | var state = _ref.state; 20 | 21 | return _react2.default.createElement( 22 | _Layout2.default, 23 | null, 24 | _react2.default.createElement( 25 | 'h2', 26 | null, 27 | '\u9996\u5C4F\u6570\u636E' 28 | ), 29 | _react2.default.createElement( 30 | 'pre', 31 | null, 32 | JSON.stringify(state.ssr) 33 | ), 34 | _react2.default.createElement( 35 | 'h2', 36 | null, 37 | '\u975E\u9996\u5C4F\u6570\u636E' 38 | ), 39 | _react2.default.createElement( 40 | 'pre', 41 | null, 42 | JSON.stringify(state.csr) 43 | ) 44 | ); 45 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/isomorphic_fetch/json/csr.json: -------------------------------------------------------------------------------- 1 | { 2 | "content": "from csr.json" 3 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/isomorphic_fetch/json/ssr.json: -------------------------------------------------------------------------------- 1 | { 2 | "content": "from ssr.json" 3 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/isomorphic_redirect/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _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; }; }(); 8 | 9 | var _controller = require('react-imvc/controller'); 10 | 11 | var _controller2 = _interopRequireDefault(_controller); 12 | 13 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 14 | 15 | function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } 16 | 17 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 18 | 19 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 20 | 21 | function _inherits(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; } 22 | 23 | /** 24 | * 1 秒钟之后重定向到首页 25 | */ 26 | var IsomorphicRedirect = function (_Controller) { 27 | _inherits(IsomorphicRedirect, _Controller); 28 | 29 | function IsomorphicRedirect() { 30 | _classCallCheck(this, IsomorphicRedirect); 31 | 32 | return _possibleConstructorReturn(this, (IsomorphicRedirect.__proto__ || Object.getPrototypeOf(IsomorphicRedirect)).apply(this, arguments)); 33 | } 34 | 35 | _createClass(IsomorphicRedirect, [{ 36 | key: 'shouldComponentCreate', 37 | value: function () { 38 | var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { 39 | return regeneratorRuntime.wrap(function _callee$(_context) { 40 | while (1) { 41 | switch (_context.prev = _context.next) { 42 | case 0: 43 | _context.next = 2; 44 | return delay(1000); 45 | 46 | case 2: 47 | this.redirect('/'); 48 | return _context.abrupt('return', false); 49 | 50 | case 4: 51 | case 'end': 52 | return _context.stop(); 53 | } 54 | } 55 | }, _callee, this); 56 | })); 57 | 58 | function shouldComponentCreate() { 59 | return _ref.apply(this, arguments); 60 | } 61 | 62 | return shouldComponentCreate; 63 | }() 64 | }]); 65 | 66 | return IsomorphicRedirect; 67 | }(_controller2.default); 68 | 69 | exports.default = IsomorphicRedirect; 70 | 71 | 72 | function delay(time) { 73 | return new Promise(function (resolve) { 74 | setTimeout(resolve, time); 75 | }); 76 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/life_cycle_method/Controller.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _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; }; }(); 8 | 9 | var _controller = require("react-imvc/controller"); 10 | 11 | var _controller2 = _interopRequireDefault(_controller); 12 | 13 | var _View = require("./View"); 14 | 15 | var _View2 = _interopRequireDefault(_View); 16 | 17 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 18 | 19 | function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } 20 | 21 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 22 | 23 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 24 | 25 | function _inherits(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; } 26 | 27 | /** 28 | * 生命周期方法的调用顺序为 29 | * getInitialState -> 30 | * shouldComponentCreate -> 31 | * componentWillCreate -> 32 | * componentDidMount -> 33 | * componentWillUnmount 34 | */ 35 | var LifeCycleMethod = function (_Controller) { 36 | _inherits(LifeCycleMethod, _Controller); 37 | 38 | function LifeCycleMethod() { 39 | var _ref; 40 | 41 | var _temp, _this, _ret; 42 | 43 | _classCallCheck(this, LifeCycleMethod); 44 | 45 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 46 | args[_key] = arguments[_key]; 47 | } 48 | 49 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = LifeCycleMethod.__proto__ || Object.getPrototypeOf(LifeCycleMethod)).call.apply(_ref, [this].concat(args))), _this), _this.View = _View2.default, _temp), _possibleConstructorReturn(_this, _ret); 50 | } 51 | 52 | _createClass(LifeCycleMethod, [{ 53 | key: "getInitialState", 54 | 55 | /** 56 | * 57 | * 获取初始化状态 58 | * Model 里的 initialState 通常是静态的 59 | * 有时我们需要动态地计算出初始化状态 60 | * getInitialState 生命周期方法会拿到静态的 initialState 61 | * 支持 async/await,可以阻塞后续的生命周期方法 62 | * 该方法在服务端执行过的话,就不会在浏览器端再执行 63 | */ 64 | value: function () { 65 | var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(initialState) { 66 | return regeneratorRuntime.wrap(function _callee$(_context) { 67 | while (1) { 68 | switch (_context.prev = _context.next) { 69 | case 0: 70 | console.log('getInitialState'); 71 | return _context.abrupt("return", initialState); 72 | 73 | case 2: 74 | case "end": 75 | return _context.stop(); 76 | } 77 | } 78 | }, _callee, this); 79 | })); 80 | 81 | function getInitialState(_x) { 82 | return _ref2.apply(this, arguments); 83 | } 84 | 85 | return getInitialState; 86 | }() 87 | /** 88 | * 是否创建和渲染组件 89 | * 如果返回 false,将不会渲染 90 | * 注意,return false 前应该用 this.redirect 重定向到别处 91 | * 支持 async/await,可以阻塞后续的生命周期方法 92 | * 该方法在服务端执行过的话,就不会在浏览器端再执行 93 | * 但 state 会在浏览器端复用 94 | */ 95 | 96 | }, { 97 | key: "shouldComponentCreate", 98 | value: function () { 99 | var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { 100 | return regeneratorRuntime.wrap(function _callee2$(_context2) { 101 | while (1) { 102 | switch (_context2.prev = _context2.next) { 103 | case 0: 104 | console.log('shouldComponentCreate'); 105 | 106 | case 1: 107 | case "end": 108 | return _context2.stop(); 109 | } 110 | } 111 | }, _callee2, this); 112 | })); 113 | 114 | function shouldComponentCreate() { 115 | return _ref3.apply(this, arguments); 116 | } 117 | 118 | return shouldComponentCreate; 119 | }() 120 | /** 121 | * 组件即将创建 122 | * 在组件创建前使用 fetch 方法获取首屏数据是常用做法 123 | * 支持 async/await,可以阻塞后续的生命周期方法 124 | * 该方法在服务端执行过的话,就不会在浏览器端再执行 125 | * 但 state 会在浏览器端复用 126 | */ 127 | 128 | }, { 129 | key: "componentWillCreate", 130 | value: function () { 131 | var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { 132 | return regeneratorRuntime.wrap(function _callee3$(_context3) { 133 | while (1) { 134 | switch (_context3.prev = _context3.next) { 135 | case 0: 136 | console.log('componentWillCreate'); 137 | 138 | case 1: 139 | case "end": 140 | return _context3.stop(); 141 | } 142 | } 143 | }, _callee3, this); 144 | })); 145 | 146 | function componentWillCreate() { 147 | return _ref4.apply(this, arguments); 148 | } 149 | 150 | return componentWillCreate; 151 | }() 152 | 153 | /** 154 | * 组件已第一次插入 DOM 树 155 | * componentDidFirstMount 方法从 react 组件里 hook 到 controller 而来 156 | * 该生命周期触发时,通常表明用户已经看到了首屏 157 | * 可以在这里调用 fetch 方法获取非首屏数据 158 | */ 159 | 160 | }, { 161 | key: "componentDidFirstMount", 162 | value: function () { 163 | var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { 164 | return regeneratorRuntime.wrap(function _callee4$(_context4) { 165 | while (1) { 166 | switch (_context4.prev = _context4.next) { 167 | case 0: 168 | console.log('componentDidFirstMount'); 169 | 170 | case 1: 171 | case "end": 172 | return _context4.stop(); 173 | } 174 | } 175 | }, _callee4, this); 176 | })); 177 | 178 | function componentDidFirstMount() { 179 | return _ref5.apply(this, arguments); 180 | } 181 | 182 | return componentDidFirstMount; 183 | }() 184 | 185 | /** 186 | * 组件已插入 DOM 树 187 | * componentDidMount 方法从 react 组件里 hook 到 controller 而来 188 | * 可以在这里绑定定时器 189 | */ 190 | 191 | }, { 192 | key: "componentDidMount", 193 | value: function () { 194 | var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { 195 | return regeneratorRuntime.wrap(function _callee5$(_context5) { 196 | while (1) { 197 | switch (_context5.prev = _context5.next) { 198 | case 0: 199 | console.log('componentDidMount'); 200 | 201 | case 1: 202 | case "end": 203 | return _context5.stop(); 204 | } 205 | } 206 | }, _callee5, this); 207 | })); 208 | 209 | function componentDidMount() { 210 | return _ref6.apply(this, arguments); 211 | } 212 | 213 | return componentDidMount; 214 | }() 215 | /** 216 | * 组件即将卸载 217 | * componentWillUnmount 方法从 react 组件里 hook 到 controller 而来 218 | * 该生命周期触发时,通常表明下一个 controller 的首屏即将显示 219 | * 可以在这里清除定时器等 220 | */ 221 | 222 | }, { 223 | key: "componentWillUnmount", 224 | value: function componentWillUnmount() { 225 | console.log('componentWillUnmount'); 226 | } 227 | /** 228 | * 页面即将离开 229 | * 当页面跳转到别的 url 时,会触发该生命周期 230 | * 此时 view 可能还会继续存在一段时间,直到下一个 controller 的首屏渲染后替代它 231 | * return 一个字符串将会弹出一个 alert 框,提醒用户 232 | */ 233 | 234 | }, { 235 | key: "pageWillLeave", 236 | value: function pageWillLeave() { 237 | console.log('pageWillLeave'); 238 | return 'pageWillLeave'; 239 | } 240 | /** 241 | * 窗口即将关闭 242 | * 该方法跟 pageWillLeave 作用类似,只是触发条件为关闭浏览器窗口 243 | */ 244 | 245 | }, { 246 | key: "windowWillUnload", 247 | value: function windowWillUnload() { 248 | console.log('windowWillUnload'); 249 | return 'windowWillUnload'; 250 | } 251 | /** 252 | * 状态已经改变 253 | * 每当 action 函数导致 state 更新后,将触发 stateDidChange 生命周期 254 | * data 里包含了 action-type, action-payload, previous-state, current-state, start, end 等信息 255 | * 注意,当 stateDidChange 触发时,view 已经根据最新的 state 更新过了 256 | */ 257 | 258 | }, { 259 | key: "stateDidChange", 260 | value: function stateDidChange(data) { 261 | console.log('stateDidChange', data); 262 | } 263 | }]); 264 | 265 | return LifeCycleMethod; 266 | }(_controller2.default); 267 | 268 | exports.default = LifeCycleMethod; -------------------------------------------------------------------------------- /publish/src/basic_usage/life_cycle_method/View.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require("react"); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _Layout = require("../../component/Layout"); 13 | 14 | var _Layout2 = _interopRequireDefault(_Layout); 15 | 16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 17 | 18 | function View(_ref) { 19 | var state = _ref.state; 20 | 21 | return _react2.default.createElement( 22 | _Layout2.default, 23 | null, 24 | "\u6253\u5F00\u63A7\u5236\u53F0\uFF0C\u89C2\u5BDF\u751F\u547D\u5468\u671F\u65B9\u6CD5\u91CC\u7684 log \u65E5\u5FD7" 25 | ); 26 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/simple_mock/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _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; }; }(); 8 | 9 | var _controller = require('react-imvc/controller'); 10 | 11 | var _controller2 = _interopRequireDefault(_controller); 12 | 13 | var _View = require('./View'); 14 | 15 | var _View2 = _interopRequireDefault(_View); 16 | 17 | var _Model = require('./Model'); 18 | 19 | var Model = _interopRequireWildcard(_Model); 20 | 21 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 22 | 23 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 24 | 25 | function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } 26 | 27 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 28 | 29 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 30 | 31 | function _inherits(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; } 32 | 33 | var IsomorphicFetch = function (_Controller) { 34 | _inherits(IsomorphicFetch, _Controller); 35 | 36 | function IsomorphicFetch() { 37 | var _ref; 38 | 39 | var _temp, _this, _ret; 40 | 41 | _classCallCheck(this, IsomorphicFetch); 42 | 43 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 44 | args[_key] = arguments[_key]; 45 | } 46 | 47 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = IsomorphicFetch.__proto__ || Object.getPrototypeOf(IsomorphicFetch)).call.apply(_ref, [this].concat(args))), _this), _this.Model = Model, _this.View = _View2.default, _temp), _possibleConstructorReturn(_this, _ret); 48 | } 49 | 50 | _createClass(IsomorphicFetch, [{ 51 | key: 'componentWillCreate', 52 | value: function () { 53 | var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { 54 | var fetch, store, state, url, ssr, UPDATE_STATE; 55 | return regeneratorRuntime.wrap(function _callee$(_context) { 56 | while (1) { 57 | switch (_context.prev = _context.next) { 58 | case 0: 59 | fetch = this.fetch, store = this.store; 60 | state = store.getState(); 61 | // 以 /mock/* 开头的 url 都会被转发到本地静态 json 文件里,json 后缀是自动补全的 62 | 63 | url = '/mock/basic_usage/simple_mock/json/ssr'; 64 | _context.next = 5; 65 | return fetch(url); 66 | 67 | case 5: 68 | ssr = _context.sent; 69 | UPDATE_STATE = store.actions.UPDATE_STATE; 70 | 71 | UPDATE_STATE({ ssr: ssr }); 72 | 73 | case 8: 74 | case 'end': 75 | return _context.stop(); 76 | } 77 | } 78 | }, _callee, this); 79 | })); 80 | 81 | function componentWillCreate() { 82 | return _ref2.apply(this, arguments); 83 | } 84 | 85 | return componentWillCreate; 86 | }() 87 | }, { 88 | key: 'componentDidMount', 89 | value: function () { 90 | var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { 91 | var fetch, store, state, url, csr, UPDATE_STATE; 92 | return regeneratorRuntime.wrap(function _callee2$(_context2) { 93 | while (1) { 94 | switch (_context2.prev = _context2.next) { 95 | case 0: 96 | fetch = this.fetch, store = this.store; 97 | state = store.getState(); 98 | // 以 /mock/* 开头的 url 都会被转发到本地静态 json 文件里,json 后缀是自动补全的 99 | 100 | url = '/mock/basic_usage/simple_mock/json/csr'; 101 | // 延迟一秒 102 | 103 | _context2.next = 5; 104 | return delay(1000); 105 | 106 | case 5: 107 | _context2.next = 7; 108 | return fetch(url); 109 | 110 | case 7: 111 | csr = _context2.sent; 112 | UPDATE_STATE = store.actions.UPDATE_STATE; 113 | 114 | UPDATE_STATE({ csr: csr }); 115 | 116 | case 10: 117 | case 'end': 118 | return _context2.stop(); 119 | } 120 | } 121 | }, _callee2, this); 122 | })); 123 | 124 | function componentDidMount() { 125 | return _ref3.apply(this, arguments); 126 | } 127 | 128 | return componentDidMount; 129 | }() 130 | }]); 131 | 132 | return IsomorphicFetch; 133 | }(_controller2.default); 134 | 135 | exports.default = IsomorphicFetch; 136 | 137 | 138 | function delay(time) { 139 | return new Promise(function (resolve) { 140 | setTimeout(resolve, time); 141 | }); 142 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/simple_mock/Model.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | /** 7 | * Model of IMVC 8 | */ 9 | 10 | var initialState = exports.initialState = { 11 | ssr: null, 12 | csr: null 13 | }; -------------------------------------------------------------------------------- /publish/src/basic_usage/simple_mock/View.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require('react'); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _Layout = require('../../component/Layout'); 13 | 14 | var _Layout2 = _interopRequireDefault(_Layout); 15 | 16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 17 | 18 | function View(_ref) { 19 | var state = _ref.state; 20 | 21 | return _react2.default.createElement( 22 | _Layout2.default, 23 | null, 24 | _react2.default.createElement( 25 | 'h2', 26 | null, 27 | '\u9996\u5C4F\u6570\u636E' 28 | ), 29 | _react2.default.createElement( 30 | 'pre', 31 | null, 32 | JSON.stringify(state.ssr) 33 | ), 34 | _react2.default.createElement( 35 | 'h2', 36 | null, 37 | '\u975E\u9996\u5C4F\u6570\u636E' 38 | ), 39 | _react2.default.createElement( 40 | 'pre', 41 | null, 42 | JSON.stringify(state.csr) 43 | ) 44 | ); 45 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/simple_mock/json/csr.json: -------------------------------------------------------------------------------- 1 | { 2 | "mock": true, 3 | "content": "from csr.json" 4 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/simple_mock/json/ssr.json: -------------------------------------------------------------------------------- 1 | { 2 | "mock": true, 3 | "content": "from ssr.json" 4 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/static_view/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _controller = require('react-imvc/controller'); 8 | 9 | var _controller2 = _interopRequireDefault(_controller); 10 | 11 | var _View = require('./View'); 12 | 13 | var _View2 = _interopRequireDefault(_View); 14 | 15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 16 | 17 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 18 | 19 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 20 | 21 | function _inherits(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; } 22 | 23 | var StaticView = function (_Controller) { 24 | _inherits(StaticView, _Controller); 25 | 26 | function StaticView() { 27 | var _ref; 28 | 29 | var _temp, _this, _ret; 30 | 31 | _classCallCheck(this, StaticView); 32 | 33 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 34 | args[_key] = arguments[_key]; 35 | } 36 | 37 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = StaticView.__proto__ || Object.getPrototypeOf(StaticView)).call.apply(_ref, [this].concat(args))), _this), _this.View = _View2.default, _temp), _possibleConstructorReturn(_this, _ret); 38 | } 39 | 40 | return StaticView; 41 | }(_controller2.default); 42 | 43 | exports.default = StaticView; -------------------------------------------------------------------------------- /publish/src/basic_usage/static_view/View.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require('react'); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _Layout = require('../../component/Layout'); 13 | 14 | var _Layout2 = _interopRequireDefault(_Layout); 15 | 16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 17 | 18 | function View() { 19 | return _react2.default.createElement( 20 | _Layout2.default, 21 | null, 22 | _react2.default.createElement( 23 | 'div', 24 | null, 25 | '\u6211\u662F\u4E00\u4E2A\u9759\u6001\u7684 View\uFF0C\u6CA1\u6709\u5176\u4ED6\u4F5C\u7528' 26 | ) 27 | ); 28 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/use_action/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _controller = require('react-imvc/controller'); 8 | 9 | var _controller2 = _interopRequireDefault(_controller); 10 | 11 | var _View = require('./View'); 12 | 13 | var _View2 = _interopRequireDefault(_View); 14 | 15 | var _Model = require('./Model'); 16 | 17 | var Model = _interopRequireWildcard(_Model); 18 | 19 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 24 | 25 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 26 | 27 | function _inherits(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; } 28 | 29 | var UseAction = function (_Controller) { 30 | _inherits(UseAction, _Controller); 31 | 32 | function UseAction() { 33 | var _ref; 34 | 35 | var _temp, _this, _ret; 36 | 37 | _classCallCheck(this, UseAction); 38 | 39 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 40 | args[_key] = arguments[_key]; 41 | } 42 | 43 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = UseAction.__proto__ || Object.getPrototypeOf(UseAction)).call.apply(_ref, [this].concat(args))), _this), _this.View = _View2.default, _this.Model = Model, _temp), _possibleConstructorReturn(_this, _ret); 44 | } 45 | 46 | return UseAction; 47 | }(_controller2.default); 48 | 49 | exports.default = UseAction; -------------------------------------------------------------------------------- /publish/src/basic_usage/use_action/Model.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 8 | 9 | /** 10 | * Model of IMVC 11 | * 除了 initialState 属性外,其余的属性都应该是 action 函数 12 | * DOC: https://github.com/Lucifier129/relite 13 | */ 14 | 15 | var initialState = exports.initialState = { 16 | count: 0 17 | 18 | // 返回新的 state 才会触发 view 更新 19 | };var INCREMENT = exports.INCREMENT = function INCREMENT(state) { 20 | return _extends({}, state, { 21 | count: state.count + 1 22 | }); 23 | }; 24 | 25 | var DECREMENT = exports.DECREMENT = function DECREMENT(state) { 26 | return _extends({}, state, { 27 | count: state.count - 1 28 | }); 29 | }; -------------------------------------------------------------------------------- /publish/src/basic_usage/use_action/View.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require("react"); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _Layout = require("../../component/Layout"); 13 | 14 | var _Layout2 = _interopRequireDefault(_Layout); 15 | 16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 17 | 18 | /** 19 | * 20 | * 组件的 props 里直接有 state 和 actions 对象 21 | */ 22 | function View(_ref) { 23 | var state = _ref.state, 24 | actions = _ref.actions; 25 | var INCREMENT = actions.INCREMENT, 26 | DECREMENT = actions.DECREMENT; 27 | 28 | return _react2.default.createElement( 29 | _Layout2.default, 30 | null, 31 | _react2.default.createElement( 32 | "h2", 33 | null, 34 | "Count: ", 35 | state.count 36 | ), 37 | _react2.default.createElement( 38 | "div", 39 | null, 40 | _react2.default.createElement( 41 | "button", 42 | { onClick: INCREMENT }, 43 | "+1" 44 | ) 45 | ), 46 | _react2.default.createElement( 47 | "div", 48 | null, 49 | _react2.default.createElement( 50 | "button", 51 | { onClick: DECREMENT }, 52 | "-1" 53 | ) 54 | ) 55 | ); 56 | } -------------------------------------------------------------------------------- /publish/src/basic_usage/use_link_component/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _controller = require('react-imvc/controller'); 8 | 9 | var _controller2 = _interopRequireDefault(_controller); 10 | 11 | var _View = require('./View'); 12 | 13 | var _View2 = _interopRequireDefault(_View); 14 | 15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 16 | 17 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 18 | 19 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 20 | 21 | function _inherits(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; } 22 | 23 | var StaticView = function (_Controller) { 24 | _inherits(StaticView, _Controller); 25 | 26 | function StaticView() { 27 | var _ref; 28 | 29 | var _temp, _this, _ret; 30 | 31 | _classCallCheck(this, StaticView); 32 | 33 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 34 | args[_key] = arguments[_key]; 35 | } 36 | 37 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = StaticView.__proto__ || Object.getPrototypeOf(StaticView)).call.apply(_ref, [this].concat(args))), _this), _this.View = _View2.default, _temp), _possibleConstructorReturn(_this, _ret); 38 | } 39 | 40 | return StaticView; 41 | }(_controller2.default); 42 | 43 | exports.default = StaticView; -------------------------------------------------------------------------------- /publish/src/basic_usage/use_link_component/View.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = View; 7 | 8 | var _react = require('react'); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _component = require('react-imvc/component'); 13 | 14 | var _Layout = require('../../component/Layout'); 15 | 16 | var _Layout2 = _interopRequireDefault(_Layout); 17 | 18 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 19 | 20 | function View() { 21 | return _react2.default.createElement( 22 | _Layout2.default, 23 | null, 24 | _react2.default.createElement( 25 | 'div', 26 | null, 27 | 'Link \u7EC4\u4EF6\u7528\u6765\u5B9E\u73B0\u9875\u9762\u8DF3\u8F6C' 28 | ), 29 | _react2.default.createElement( 30 | 'p', 31 | null, 32 | _react2.default.createElement( 33 | _component.Link, 34 | { to: '/' }, 35 | '\u70B9\u51FB\u6211\u53BB\u9996\u9875\uFF0C\u53EF\u4EE5\u56DE\u9000\u5230\u672C\u9875' 36 | ) 37 | ), 38 | _react2.default.createElement( 39 | 'p', 40 | null, 41 | _react2.default.createElement( 42 | _component.Link, 43 | { to: '/', replace: true }, 44 | '\u70B9\u51FB\u6211\u53BB\u9996\u9875\uFF0C\u4E0D\u53EF\u4EE5\u56DE\u9000\u5230\u672C\u9875' 45 | ) 46 | ), 47 | _react2.default.createElement( 48 | 'p', 49 | null, 50 | _react2.default.createElement( 51 | _component.Link, 52 | { to: '/', back: true }, 53 | '\u70B9\u51FB\u6211\u56DE\u9000\u81F3\u4E0A\u4E00\u4E2A\u9875\u9762' 54 | ) 55 | ) 56 | ); 57 | } -------------------------------------------------------------------------------- /publish/src/component/Layout.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = Layout; 7 | 8 | var _react = require('react'); 9 | 10 | var _react2 = _interopRequireDefault(_react); 11 | 12 | var _component = require('react-imvc/component'); 13 | 14 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 15 | 16 | function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } 17 | 18 | function Layout(_ref) { 19 | var children = _ref.children, 20 | props = _objectWithoutProperties(_ref, ['children']); 21 | 22 | return _react2.default.createElement( 23 | 'div', 24 | props, 25 | _react2.default.createElement( 26 | 'h1', 27 | null, 28 | _react2.default.createElement( 29 | _component.Link, 30 | { to: '/' }, 31 | '\u76EE\u5F55' 32 | ) 33 | ), 34 | _react2.default.createElement( 35 | 'div', 36 | null, 37 | children 38 | ) 39 | ); 40 | } -------------------------------------------------------------------------------- /publish/src/home/Controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _controller = require('react-imvc/controller'); 8 | 9 | var _controller2 = _interopRequireDefault(_controller); 10 | 11 | var _Model = require('./Model'); 12 | 13 | var Model = _interopRequireWildcard(_Model); 14 | 15 | var _View = require('./View'); 16 | 17 | var _View2 = _interopRequireDefault(_View); 18 | 19 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 24 | 25 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 26 | 27 | function _inherits(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; } 28 | 29 | var Home = function (_Controller) { 30 | _inherits(Home, _Controller); 31 | 32 | function Home() { 33 | var _ref; 34 | 35 | var _temp, _this, _ret; 36 | 37 | _classCallCheck(this, Home); 38 | 39 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 40 | args[_key] = arguments[_key]; 41 | } 42 | 43 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Home.__proto__ || Object.getPrototypeOf(Home)).call.apply(_ref, [this].concat(args))), _this), _this.Model = Model, _this.View = _View2.default, _temp), _possibleConstructorReturn(_this, _ret); 44 | } 45 | 46 | return Home; 47 | }(_controller2.default); 48 | 49 | exports.default = Home; -------------------------------------------------------------------------------- /publish/src/home/Model.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | /** 7 | * Model of IMVC 8 | */ 9 | 10 | var initialState = exports.initialState = { 11 | html: { 12 | title: 'react-imvc' 13 | }, 14 | contents: [{ 15 | type: "基本用法", 16 | list: [{ 17 | title: "单独展示静态 React 组件", 18 | url: "/basic_usage/static_view" 19 | }, { 20 | title: "使用 Link 组件用不刷新页面的方式跳转页面", 21 | url: "/basic_usage/use_link_component" 22 | }, { 23 | title: "存在默认填充的 state 属性", 24 | url: "/basic_usage/basic_state" 25 | }, { 26 | title: "需要用特定方式引用 CSS 文件", 27 | url: "/basic_usage/import_css" 28 | }, { 29 | title: "用 action 来改变 state", 30 | url: "/basic_usage/use_action" 31 | }, { 32 | title: "事件函数写在 Controller 里统筹处理", 33 | url: "/basic_usage/event_handler" 34 | }, { 35 | title: "介绍有用的生命周期方法", 36 | url: "/basic_usage/life_cycle_method" 37 | }, { 38 | title: "使用 fetch 方法同构地发起请求", 39 | url: "/basic_usage/isomorphic_fetch" 40 | }, { 41 | title: "有最简单的 Mock 数据功能", 42 | url: "/basic_usage/simple_mock" 43 | }, { 44 | title: "使用 cookie 方法同构地存取 cookie", 45 | url: "/basic_usage/isomorphic_cookie" 46 | }, { 47 | title: "使用 redirect 方法同构地重定向", 48 | url: "/basic_usage/isomorphic_redirect?tips=1秒后重定向到首页" 49 | }, { 50 | title: '介绍表单 Input 组件', 51 | url: '/basic_usage/input_component' 52 | }, { 53 | title: '自定义 title、description 和 keywoards', 54 | url: '/basic_usage/custom_title_description_keywords' 55 | }] 56 | }, { 57 | type: '进阶用法', 58 | list: [{ 59 | title: '利用 context 属性实现自定义同构方法', 60 | url: "/advanced_usage/custom_isomorphic_method" 61 | }, { 62 | title: '运用 KeepAlive 属性复用 controller', 63 | url: "/advanced_usage/use_keep_alive/a" 64 | }, { 65 | title: "使用 NavLink 组件响应当前 url 的匹配样式", 66 | url: "/advanced_usage/use_nav_link_component/a" 67 | }] 68 | }] 69 | }; -------------------------------------------------------------------------------- /publish/src/home/View.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 8 | 9 | exports.default = View; 10 | 11 | var _react = require("react"); 12 | 13 | var _react2 = _interopRequireDefault(_react); 14 | 15 | var _component = require("react-imvc/component"); 16 | 17 | var _Layout = require("../component/Layout"); 18 | 19 | var _Layout2 = _interopRequireDefault(_Layout); 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } 24 | 25 | function View(_ref) { 26 | var state = _ref.state; 27 | 28 | return _react2.default.createElement( 29 | _Layout2.default, 30 | null, 31 | state.contents.map(function (_ref2) { 32 | var type = _ref2.type, 33 | list = _ref2.list; 34 | 35 | return _react2.default.createElement( 36 | "div", 37 | { key: type }, 38 | _react2.default.createElement( 39 | "h2", 40 | null, 41 | type 42 | ), 43 | _react2.default.createElement(List, { data: list }) 44 | ); 45 | }) 46 | ); 47 | } 48 | 49 | function List(_ref3) { 50 | var data = _ref3.data; 51 | 52 | return _react2.default.createElement( 53 | "ul", 54 | null, 55 | data.map(function (item) { 56 | return _react2.default.createElement(ListItem, _extends({ key: item.url }, item)); 57 | }) 58 | ); 59 | } 60 | 61 | function ListItem(_ref4) { 62 | var title = _ref4.title, 63 | url = _ref4.url, 64 | raw = _ref4.raw, 65 | rest = _objectWithoutProperties(_ref4, ["title", "url", "raw"]); 66 | 67 | return _react2.default.createElement( 68 | "li", 69 | null, 70 | !!raw && _react2.default.createElement( 71 | "a", 72 | _extends({ href: url }, rest), 73 | title 74 | ), 75 | !raw && _react2.default.createElement( 76 | _component.Link, 77 | _extends({ to: url }, rest), 78 | title 79 | ) 80 | ); 81 | } -------------------------------------------------------------------------------- /publish/src/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _basic_usage = require('./basic_usage'); 8 | 9 | var _basic_usage2 = _interopRequireDefault(_basic_usage); 10 | 11 | var _advanced_usage = require('./advanced_usage'); 12 | 13 | var _advanced_usage2 = _interopRequireDefault(_advanced_usage); 14 | 15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 16 | 17 | // routes 18 | exports.default = [{ 19 | path: ['/', '/index', '/list'], 20 | controller: require('./home/Controller') 21 | }, _basic_usage2.default, _advanced_usage2.default]; -------------------------------------------------------------------------------- /publish/start.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | process.env.NODE_ENV = 'production'; 6 | 7 | var ReactIMVC = require('react-imvc'); 8 | var config = require('./imvc.config'); 9 | 10 | ReactIMVC.start({ 11 | config: _extends({}, config, { 12 | root: __dirname, 13 | logger: 'dev' 14 | }) 15 | }); -------------------------------------------------------------------------------- /publish/static/advanced_usage/custom_isomorphic_method/custom_isomorphic_method-41cfa0.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([14],{221:function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function u(e){var t=e.children,n=o(e,["children"]);return l["default"].createElement("div",n,l["default"].createElement("h1",null,l["default"].createElement(i.Link,{to:"/"},"目录")),l["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=u;var a=n(206),l=r(a),i=n(222)},276:function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e){var t=e.state;return d["default"].createElement(y["default"],null,d["default"].createElement("h2",null,"User-Agent: ",t.userAgent),d["default"].createElement("em",null,"view source to see the user agent of server side"))}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}function u(e){var t=e.children,n=a(e,["children"]);return l["default"].createElement("div",n,l["default"].createElement("h1",null,l["default"].createElement(i.Link,{to:"/"},"目录")),l["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=u;var r=n(206),l=o(r),i=n(222)},278:function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){var t=e.state;return s["default"].createElement(h["default"],null,s["default"].createElement("h2",null,"I am Page A"),s["default"].createElement("div",null,s["default"].createElement(m.Link,{to:"/advanced_usage/use_keep_alive/b"},"去 Page B")," ",s["default"].createElement(m.Link,{href:"javascript:;",back:!0},"回退")," ",s["default"].createElement(m.Link,{href:"javascript:;",forward:!0},"前进")),s["default"].createElement("pre",null,JSON.stringify(t,null,2)))}Object.defineProperty(t,"__esModule",{value:!0});var c=(function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}function u(e){var t=e.children,n=a(e,["children"]);return l["default"].createElement("div",n,l["default"].createElement("h1",null,l["default"].createElement(i.Link,{to:"/"},"目录")),l["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=u;var r=n(206),l=o(r),i=n(222)},280:function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){var t=e.state;return s["default"].createElement(h["default"],null,s["default"].createElement("h2",null,"I am Page B"),s["default"].createElement("div",null,s["default"].createElement(m.Link,{to:"/advanced_usage/use_keep_alive/a"},"去 Page A")," ",s["default"].createElement(m.Link,{href:"javascript:;",back:!0},"回退")," ",s["default"].createElement(m.Link,{href:"javascript:;",forward:!0},"前进")),s["default"].createElement("pre",null,JSON.stringify(t,null,2)))}Object.defineProperty(t,"__esModule",{value:!0});var c=(function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,a)&&(n[a]=e[a]);return n}function l(e){var t=e.children,n=r(e,["children"]);return c["default"].createElement("div",n,c["default"].createElement("h1",null,c["default"].createElement(o.Link,{to:"/"},"目录")),c["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=l;var u=n(206),c=a(u),o=n(222)},282:function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var c=n(205),o=a(c),i=n(283),f=a(i),d=(function(e){function t(){var e,n,a,u;r(this,t);for(var c=arguments.length,o=Array(c),i=0;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function l(e){var t=e.children,n=a(e,["children"]);return o["default"].createElement("div",n,o["default"].createElement("h1",null,o["default"].createElement(c.Link,{to:"/"},"目录")),o["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=l;var u=n(206),o=r(u),c=n(222)},236:function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var o=n(205),c=r(o),i=n(237),f=r(i),s=(function(e){function t(){var e,n,r,u;a(this,t);for(var o=arguments.length,c=Array(o),i=0;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function u(e){var t=e.children,n=o(e,["children"]);return a["default"].createElement("div",n,a["default"].createElement("h1",null,a["default"].createElement(i.Link,{to:"/"},"目录")),a["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=u;var l=n(206),a=r(l),i=n(222)},271:function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function o(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=n(205),c=o(i),f=n(272),s=o(f),d=n(273),p=r(d),_=(function(e){function t(){var e,n,r,o;u(this,t);for(var a=arguments.length,i=Array(a),c=0;c=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function u(e){var t=e.children,n=o(e,["children"]);return a["default"].createElement("div",n,a["default"].createElement("h1",null,a["default"].createElement(c.Link,{to:"/"},"目录")),a["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=u;var l=n(206),a=r(l),c=n(222)},246:function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function o(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var c=n(205),i=o(c),f=n(247),d=o(f),s=n(248),p=r(s),E=(function(e){function t(){var e,n,r,o;u(this,t);for(var a=arguments.length,c=Array(a),i=0;i=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function o(e){var t=e.children,r=a(e,["children"]);return u["default"].createElement("div",r,u["default"].createElement("h1",null,u["default"].createElement(c.Link,{to:"/"},"目录")),u["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=o;var l=r(206),u=n(l),c=r(222)},239:function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function c(e){return b.includes(e)?"/basic_usage/import_css/css/"+e+".css":"/basic_usage/import_css/css/red.css"}Object.defineProperty(t,"__esModule",{value:!0});var i=r(205),s=n(i),f=r(240),d=n(f),p=(function(e){function t(){var e,r,n,u;o(this,t);for(var i=arguments.length,s=Array(i),f=0;f=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e){var t=e.children,n=u(e,["children"]);return a["default"].createElement("div",n,a["default"].createElement("h1",null,a["default"].createElement(c.Link,{to:"/"},"目录")),a["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=o;var l=n(206),a=r(l),c=n(222)},267:function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var c=n(205),f=u(c),i=n(268),d=u(i),s=n(269),p=r(s),v=(function(e){function t(){var e,n,r,u;o(this,t);for(var a=arguments.length,c=Array(a),f=0;f=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e){var t=e.children,n=u(e,["children"]);return l["default"].createElement("div",n,l["default"].createElement("h1",null,l["default"].createElement(c.Link,{to:"/"},"目录")),l["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=o;var a=n(206),l=r(a),c=n(222)},261:function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var c=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e){var t=e.children,n=u(e,["children"]);return i["default"].createElement("div",n,i["default"].createElement("h1",null,i["default"].createElement(c.Link,{to:"/"},"目录")),i["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=o;var a=n(206),i=r(a),c=n(222)},253:function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}function o(e){return function(){var t=e.apply(this,arguments);return new Promise(function(e,n){function r(u,o){try{var a=t[u](o),i=a.value}catch(c){return void n(c)}return a.done?void e(i):Promise.resolve(i).then((function(e){r("next",e)}),(function(e){r("throw",e)}))}return r("next")})}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e){return new Promise(function(t){setTimeout(t,e)})}Object.defineProperty(t,"__esModule",{value:!0});var s=(function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e){var t=e.children,n=u(e,["children"]);return i["default"].createElement("div",n,i["default"].createElement("h1",null,i["default"].createElement(c.Link,{to:"/"},"目录")),i["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=o;var a=n(206),i=r(a),c=n(222)},250:function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function u(e){return function(){var t=e.apply(this,arguments);return new Promise(function(e,n){function r(u,o){try{var a=t[u](o),i=a.value}catch(c){return void n(c)}return a.done?void e(i):Promise.resolve(i).then((function(e){r("next",e)}),(function(e){r("throw",e)}))}return r("next")})}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var c=(function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e){var t=e.children,n=u(e,["children"]);return i["default"].createElement("div",n,i["default"].createElement("h1",null,i["default"].createElement(c.Link,{to:"/"},"目录")),i["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=o;var a=n(206),i=r(a),c=n(222)},257:function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}function o(e){return function(){var t=e.apply(this,arguments);return new Promise(function(e,n){function r(u,o){try{var a=t[u](o),i=a.value}catch(c){return void n(c)}return a.done?void e(i):Promise.resolve(i).then((function(e){r("next",e)}),(function(e){r("throw",e)}))}return r("next")})}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e){return new Promise(function(t){setTimeout(t,e)})}Object.defineProperty(t,"__esModule",{value:!0});var s=(function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function u(e){var t=e.children,n=o(e,["children"]);return a["default"].createElement("div",n,a["default"].createElement("h1",null,a["default"].createElement(c.Link,{to:"/"},"目录")),a["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=u;var l=n(206),a=r(l),c=n(222)}}); -------------------------------------------------------------------------------- /publish/static/basic_usage/use_action/use_action-8b976a.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([5],{221:function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function u(e){var t=e.children,n=o(e,["children"]);return a["default"].createElement("div",n,a["default"].createElement("h1",null,a["default"].createElement(c.Link,{to:"/"},"目录")),a["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=u;var l=n(206),a=r(l),c=n(222)},242:function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function o(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var c=n(205),f=o(c),i=n(243),d=o(i),s=n(244),p=r(s),v=(function(e){function t(){var e,n,r,o;u(this,t);for(var a=arguments.length,c=Array(a),f=0;f=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function u(e){var t=e.children,n=l(e,["children"]);return a["default"].createElement("div",n,a["default"].createElement("h1",null,a["default"].createElement(c.Link,{to:"/"},"目录")),a["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=u;var o=n(206),a=r(o),c=n(222)},233:function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=n(205),c=r(a),f=n(234),i=r(f),d=(function(e){function t(){var e,n,r,o;l(this,t);for(var a=arguments.length,c=Array(a),f=0;f=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function l(e){var t=e.children,r=a(e,["children"]);return i["default"].createElement("div",r,i["default"].createElement("h1",null,i["default"].createElement(o.Link,{to:"/"},"目录")),i["default"].createElement("div",null,t))}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=l;var u=r(206),i=n(u),o=r(222)},285:function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var o=r(205),c=a(o),s=r(286),f=n(s),_=r(287),d=a(_),p=(function(e){function t(){var e,r,n,a;l(this,t);for(var i=arguments.length,o=Array(i),c=0;c=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function l(e){var t=e.state;return s["default"].createElement(d["default"],null,t.contents.map((function(e){var t=e.type,r=e.list;return s["default"].createElement("div",{key:t},s["default"].createElement("h2",null,t),s["default"].createElement(u,{data:r}))})))}function u(e){var t=e.data;return s["default"].createElement("ul",null,t.map((function(e){return s["default"].createElement(i,o({key:e.url},e))})))}function i(e){var t=e.title,r=e.url,n=e.raw,l=a(e,["title","url","raw"]);return s["default"].createElement("li",null,!!n&&s["default"].createElement("a",o({href:r},l),t),!n&&s["default"].createElement(f.Link,o({to:r},l),t))}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;treact-imvc
-------------------------------------------------------------------------------- /publish/test/foo-test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _nodeFetch = require('node-fetch'); 4 | 5 | var _nodeFetch2 = _interopRequireDefault(_nodeFetch); 6 | 7 | var _expect = require('expect'); 8 | 9 | var _expect2 = _interopRequireDefault(_expect); 10 | 11 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 12 | 13 | function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } 14 | 15 | describe('react-imvc test', function () { 16 | it('should not throw error', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { 17 | var result; 18 | return regeneratorRuntime.wrap(function _callee$(_context) { 19 | while (1) { 20 | switch (_context.prev = _context.next) { 21 | case 0: 22 | _context.next = 2; 23 | return 1; 24 | 25 | case 2: 26 | _context.t0 = _context.sent; 27 | result = _context.t0 + 1; 28 | 29 | (0, _expect2.default)(result).toBe(2); 30 | 31 | case 5: 32 | case 'end': 33 | return _context.stop(); 34 | } 35 | } 36 | }, _callee, undefined); 37 | }))); 38 | }); -------------------------------------------------------------------------------- /routes/Layout.js: -------------------------------------------------------------------------------- 1 | // custom layout 2 | import React from 'react' 3 | 4 | export default function Page (props) { 5 | return ( 6 | 7 | 8 | 9 | 13 | 14 | 18 | 19 | {props.title} 20 | 21 | 22 | 23 | 24 |
25 |