UNPKG

wiz-frameworks

Version:

wizlong react framework

303 lines (273 loc) 9.35 kB
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; }; function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /** * 框架启动方法 * @author mll * @date 2019-9-19 */ import { component_tool as wizComponents, utils_tool } from '../tool'; var log = utils_tool.log, Storage = utils_tool.Storage, network = utils_tool.network; import { ergodicObj, exception, onError, logStorageUtils, templateUtils } from '../utils'; import { registerModels, registerDynamicModels } from '../models'; import createLoading from 'dva-loading'; import dynamic from 'dva/dynamic'; import dva from 'dva'; import createHistory from 'history/createHashHistory'; import React from 'react'; import { Router } from 'dva/router'; import _requestConfig from '../request'; import _request from '../utils/request'; import buildCreateRotues from '../rotues/buildCreateRoutes'; import { action, click, rotue, error } from '../log'; import upload from '../models/upload'; import user from '../models/user'; var WizNotice = wizComponents.WizNotice, WizPageLoading = wizComponents.WizPageLoading, WizLocaleProvider = wizComponents.WizLocaleProvider, zh_CN = wizComponents.zh_CN; global.rotueHistory = createHistory({ basename: '/' }); /** * 初始本地化设置,并设置全局数据 * @param {*} g * @param {*} constants * @param {*} settings */ export function initLocalSetting(_ref) { var _ref$g = _ref.g, g = _ref$g === undefined ? global : _ref$g, _ref$constants = _ref.constants, constants = _ref$constants === undefined ? 'constants' : _ref$constants, _ref$initLocalSetting = _ref.initLocalSetting, initLocalSetting = _ref$initLocalSetting === undefined ? {} : _ref$initLocalSetting; g[constants] = {}; ergodicObj(initLocalSetting, function (obj, key) { g[constants][key] = obj[key]; }); log.info('config localSetting finish'); } /** * 初始全局的变量 * 1\注册缓存工具 * 2\注册全局log方法 * 3\注册全局提示 * 4\注册全局网络状态 */ export function initGlobal(_ref2) { var _ref2$g = _ref2.g, g = _ref2$g === undefined ? global : _ref2$g, _ref2$initGlobal = _ref2.initGlobal, initGlobal = _ref2$initGlobal === undefined ? {} : _ref2$initGlobal; g.log = log; g.storage = Storage; g.wizNotice = WizNotice; g.network = network.getNetworkState; g.networkListerner = network.startNetInfoListerner; g.request = _request; ergodicObj(initGlobal, function (obj, key) { g[key] = obj[key]; }); log.info('config global finish'); } /** * 网络监控 * @param {*} callback */ export function initNetworkInfoListerner(_ref3) { var networkCallback = _ref3.networkCallback; network.startNetInfoListerner(function (connection) { if (connection) { if (networkCallback) { networkCallback(true); } else { WizNotice.warn({ description: '网络已连接', key: 'networkNotice', message: '网络情况', duration: 3 }); } } else { if (networkCallback) { networkCallback(false); } else { WizNotice.error({ description: '当前网络不可用,请切换网络', key: 'networkNotice', message: '网络错误', duration: null }); } } }); log.info('config networkInfoListerner finish'); } /** * 初始化redeux模型 * @param {*} app * @param {*} {models,appDevModels} */ export function initReduxFramework(app, _ref4) { var models = _ref4.models, appDevModels = _ref4.appDevModels; // 注册全局模型 var _models = models ? [].concat(_toConsumableArray(models), [upload, user]) : [upload, user]; registerModels(app, _models); // 注册动态模型 registerDynamicModels(app, appDevModels); !models && !appDevModels ? log.warn('config reduxFramework:未传入rudex数据模型') : log.info('config reduxFramework finish'); } /** * 初始化插件 * @param {*} app * @param {*} {use} */ export function initPlugIn(app, _ref5) { var _ref5$use = _ref5.use, use = _ref5$use === undefined ? [] : _ref5$use; app.use(createLoading()); app.use({ onError: exception }); use.forEach(function (u) { app.use(u); }); log.info('config Plug-in finish'); } /** * 初始化请求 * @param {*} {request,requestConfig} */ export function initRequest(_ref6) { var _ref6$request = _ref6.request, request = _ref6$request === undefined ? _request : _ref6$request, _ref6$requestConfig = _ref6.requestConfig, requestConfig = _ref6$requestConfig === undefined ? _requestConfig : _ref6$requestConfig; requestConfig.headers.endpoint = global.endpoint || 'admin'; request.config(requestConfig); log.info('config request finish'); } /** * 初始化路由 * @param {*} app * @param {*} {router,createRoutes} */ export function initRoutes(app, _ref7) { var router = _ref7.router, createRoutes = _ref7.createRoutes; var f = true; if (router) { app.router(router); } else if (createRoutes) { app.router(function (_ref8) { var history = _ref8.history, app = _ref8.app; return React.createElement( WizLocaleProvider, { locale: zh_CN }, React.createElement( Router, { history: history }, buildCreateRotues(app, createRoutes) ) ); }); } else { f = false; } f ? log.info('config routes finish') : onError('config routes:请传入 <路由:router> 或者 设置<路由参数:createRoutes>'); } /** * 初始化动态模型loading * @param {*} {pageLoading} */ export function initDynamicLoading(_ref9) { var pageLoading = _ref9.pageLoading; dynamic.setDefaultLoadingComponent(pageLoading || function () { return React.createElement(WizPageLoading, { loading: true }); }); log.info('config dynamicLoading finish'); } /** * 初始化记录日志 * @param {*} app * @param {*} {recodeLog} * click日志记录方式 * 1、通过传值 例:recodeLogParams.clickNeedRecord : ['a','button'] ,会自动记录 a标签和button标签的日志 * 2、通过'data-wiz-log'标示 例: <div data-wiz-log>点击我会被记录</div> */ export function initRecodeLog(app, _ref10) { var _ref10$recodeLog = _ref10.recodeLog, recodeLog = _ref10$recodeLog === undefined ? true : _ref10$recodeLog, _ref10$recodeLogParam = _ref10.recodeLogParams, recodeLogParams = _ref10$recodeLogParam === undefined ? {} : _ref10$recodeLogParam; //用户行为日志 logStorageUtils.setKey(recodeLogParams['userLogKey'] ? recodeLogParams['userLogKey'] : 'wiz-frameworks-user-log'); if (recodeLog) { //暂时不使用记录action的日志 //app.use(action); app.model(rotue); click && click(recodeLogParams['clickNeedRecord']); log.info('config recodeLog finish'); } else { log.warn('recode log not enabled'); } //系统日志 error && error(recodeLogParams['sysLogKey']); } /** * 初始化动态模型loading * @param {*} {pageLoading} */ export function initTemplateComponent(_ref11) { var templates = _ref11.templates; var form = wizComponents; templates && _extends(form, templates); templateUtils.setTemplates(form); log.info('config template component finish'); } /** * 项目启动方法 * @param {*} settings */ export function init() { var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; log.warn('framework start loading'); var storageKey = settings['storageKey'] ? settings['storageKey'] : 'wiz-frameworks'; Storage.setKey(storageKey); var app = settings.app || dva({ history: rotueHistory }); // -> 本地设置 initLocalSetting(settings); // -> 全局变量 initGlobal(settings); // -> 网络检查 initNetworkInfoListerner(settings); // -> 数据模型 initReduxFramework(app, settings); // -> 插件 initPlugIn(app, settings); // -> 请求 initRequest(settings); // -> loading initDynamicLoading(settings); // -> 记录日志 initRecodeLog(app, settings); // -> 初始化路由 initRoutes(app, settings); // -> 初始化模版组件 initTemplateComponent(settings); // -> Start app.start('#root'); log.warn('framework loading success'); return { app: app, store: app._store, dispatch: app._store.dispatch }; } export default (function (e) { return init(e); });