UNPKG

17.4 kBSource Map (JSON)View Raw
1{"version":3,"sources":["server.js"],"names":["AKSHOOKS","append","entry","context","configs","keys","apis","mapper","app","list","Error","js","css","core","call","server","console","log","stack","_init","fs","require","Koa","glob","md5","render","statics","bodyparser","fkpcore","fetch","cache","fkp","aks","ReactDom","SAX","global","ReactDomServer","AotooServerHooks","Aotoo","emit","renderToString","apply","arguments","html","renderToStaticMarkup","DEFAULTCONFIGS","public","fetchOptions","headers","timeout","cacheOptions","max","length","n","key","dispose","value","maxAge","bodyOptions","routerOptions","allMethods","parameters","get","post","prefixes","aotooServer","opts","middlewares","_public","_","merge","index","root","pages","pagesFolder","controls","pluginsFolder","state","views","status","use","Fetch","Cache","Md5","inject","on","name","cb","one","off","hasOn","set","_opts","midw","fn","plugins","utileHand","callback","dist","files","dft","dynamic","buffer","gzip","obj","extname","debug","process","env","NODE_ENV","viewsRoot","existsSync","distState","statSync","isDirectory","sync","forEach","item","push","error","port","dom","init","listen","module","exports"],"mappings":"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","file":"../server.js","sourcesContent":["const fs = require('fs')\nconst Koa = require('koa')\nconst glob = require('glob')\nconst md5 = require('blueimp-md5')\nconst render = require('koa-art-template')\nconst statics = require('koa-static-cache')\nconst bodyparser = require('koa-bodyparser')\nrequire('aotoo')\nrequire('aotoo-web-widgets')\nconst fkpcore = require('./fkpcore')\nconst fetch = require('./fkpcore/modules/fetch')\nconst cache = require('./fkpcore/modules/cache')\nconst core = fkpcore.core\nconst fkp = fkpcore.fkp\nconst aks = fkp\n\nReactDom = require('react-dom/server')\nconst AKSHOOKS = SAX('AOTOO-KOA-SERVER')\nglobal.ReactDomServer = ReactDom\nglobal.AotooServerHooks = AKSHOOKS\nAotoo.render = function() {\n AKSHOOKS.emit('AotooClassDestory') // 演示2.5秒\n return ReactDomServer.renderToString.apply(null, arguments)\n}\nAotoo.html = function() {\n AKSHOOKS.emit('AotooClassDestory')\n return ReactDomServer.renderToStaticMarkup.apply(null, arguments)\n}\n\nconst app = new Koa()\nconst DEFAULTCONFIGS = {\n mapper: {\n js: {},\n css: {},\n public: {\n js: '/js',\n css: '/css'\n }\n },\n \n apis: {\n list: {}\n },\n\n fetchOptions: {\n headers: { }\n , timeout: 100000\n },\n\n cacheOptions: {\n max: 300\n , length: function (n, key) { return n * 2 + key.length }\n , dispose: function (key, value) { }\n , maxAge: 2 * 60 * 60 * 1000\n },\n\n bodyOptions: null,\n\n routerOptions: {\n allMethods: ['get', 'post', 'put', 'del'],\n parameters: {\n get: [\n '/',\n '/:cat',\n '/:cat/:title',\n '/:cat/:title/:id'\n ],\n post: [\n '/',\n '/:cat',\n '/:cat/:title',\n '/:cat/:title/:id'\n ]\n },\n prefixes: { }\n }\n}\n\n\nclass aotooServer {\n constructor(opts = {}) {\n this.middlewares = []\n this._public = {\n js: '/js',\n css: '/css'\n }\n\n opts = _.merge({}, DEFAULTCONFIGS, opts)\n\n this.configs = {\n keys: opts.keys || ['aotoo koa'], // cookie session关键字\n index: opts.index || 'index', // 默认首页\n\n apis: opts.apis, // api接口集合\n mapper: opts.mapper, // 静态资源映射文件\n\n fetchOptions: opts.fetchOptions,\n cacheOptions: opts.cacheOptions,\n bodyOptions: opts.bodyOptions,\n routerOptions: opts.routerOptions,\n\n root: opts.root, // 渲染默认目录\n pages: opts.pages||opts.pagesFolder||opts.controls, // control层文件夹,必须\n pluginsFolder: opts.pluginsFolder // 插件文件夹\n }\n\n this.state = {\n views: false,\n bodyparser: false,\n status: false\n }\n\n if (this.configs.bodyOptions) {\n this.state.bodyparser = true\n app.use(bodyparser(this.configs.bodyOptions))\n }\n\n // 传入apis\n global.Fetch = this.fetch = fetch({ apis: this.configs.apis, ...this.fetchOptions});\n global.Cache = this.cache = cache(this.configs.cacheOptions)\n global.Md5 = md5\n\n if (this.configs.mapper) {\n let _public\n let mapper = this.configs.mapper\n if (mapper.public) {\n _public = mapper.public\n // delete mapper.public\n }\n if (_public) {\n this._public = _public\n Aotoo.inject.public = _public\n }\n Aotoo.inject.mapper = mapper\n }\n\n this.on = function(name, cb) {\n if (name === 'error') app.on(name, cb)\n AKSHOOKS.on(name, cb)\n }\n this.one = AKSHOOKS::AKSHOOKS.one\n this.off = AKSHOOKS::AKSHOOKS.off\n this.emit = AKSHOOKS::AKSHOOKS.emit\n this.hasOn = AKSHOOKS::AKSHOOKS.hasOn\n this.append = AKSHOOKS::AKSHOOKS.append\n this.set = AKSHOOKS::AKSHOOKS.set\n this.get = AKSHOOKS::AKSHOOKS.get\n }\n \n setFetchOptions(opts){\n DEFAULTCONFIGS.fetchOptions.apis = this.fetch.apis\n const _opts = _.merge({}, DEFAULTCONFIGS.fetchOptions, opts)\n this.configs.fetchOptions = _opts\n global.Fetch = this.fetch = fetch(_opts)\n }\n\n setCacheOptions(opts){\n const _opts = _.merge({}, DEFAULTCONFIGS.cacheOptions, opts)\n this.configs.cacheOptions = _opts\n global.Cache = this.cache = cache(_opts)\n }\n\n setRouterOptions(opts){\n const _opts = _.merge({}, DEFAULTCONFIGS.routerOptions, opts)\n this.configs.routerOptions = _opts\n }\n\n setRouterPrefixes(opts){\n if (!this.state.status) {\n const _opts = _.merge({}, this.configs.routerOptions.prefixes, opts)\n this.configs.routerOptions.prefixes = _opts\n } else {\n console.log('===========');\n console.log('初始化状态才能设置前缀路由');\n }\n }\n\n public(opts) {\n this._public = opts\n Aotoo.inject.public = opts\n }\n\n // 注册KOA2的中间间,与KOA2语法保持一致\n async use(midw) {\n app.use(midw)\n }\n\n // 注册一个Aotoo插件方法\n plugins(name, fn) {\n aks.plugins(name, fn)\n }\n\n // 注册一个Aotoo助手方法\n utile(name, fn) {\n aks.utileHand(name, fn)\n }\n\n callback() {\n return app.callback(arguments)\n }\n\n // 指定站点静态路径,如 /images, /uploader, /user\n async statics(dist, opts, files) {\n let dft = {\n dynamic: false,\n buffer: false,\n gzip: false\n }\n dft = _.merge(dft, opts)\n\n app.use(statics(dist, dft, files))\n }\n\n // 注册api接口集,用于做接口层的数据访问\n async apis(obj = {}) {\n if (typeof obj == 'object') {\n this.configs.apis = obj\n }\n }\n\n\n // 注册POST中间件,可以通过 ctx.bodys来访问post数据\n async bodyparser(obj = {}) {\n if (!this.state.bodyparser && typeof obj == 'object') {\n this.state.bodyparser = true\n app.use(bodyparser(obj))\n }\n }\n\n\n // 注册渲染方法\n async views(dist, opts) {\n // import views from 'koa-views' // 放到顶部\n // let dft = {\n // map: {\n // html: (opts&&opts.html||'ejs')\n // }\n // }\n // if (opts&&opts.extension) {\n // dft.extension = opts.extension\n // }\n // if (opts&&opts.options) {\n // dft.options = opts.options\n // }\n // this.state.views = true\n // app.use( views(dist, dft) )\n\n let dft = {\n root: dist,\n extname: '.html',\n debug: process.env.NODE_ENV !== 'production'\n }\n\n if (typeof opts == 'function') {\n opts = {\n render: opts\n }\n }\n\n dft = _.merge({}, dft, opts)\n\n if (dist) {\n let views = []\n this.state.viewsRoot = dist\n if (fs.existsSync(dist)) {\n const distState = fs.statSync(dist)\n if (distState.isDirectory()) {\n // glob.sync(dist + '/**/*.html').forEach(function (item) {\n glob.sync(dist + '/**/*.html').forEach(function (item) {\n views.push(item)\n })\n }\n }\n this.state.views = views\n }\n if (dft.render && typeof dft.render == 'function') {\n app.use(dft.render)\n } else {\n render(app, dft)\n }\n }\n\n\n // 初始化\n async init() {\n try {\n if (!this.configs.pages) {\n throw new Error('控制器目录没有指定')\n }\n if (!this.state.views) {\n if (!this.configs.root) {\n throw new Error('koa的模板解析引擎没有配置且需设置app.state.views=true; app.state.viewsRoot=HTMLDIST')\n } else {\n this.views(this.configs.root)\n }\n }\n if (!this.state.bodyparser) {\n app.use(bodyparser())\n }\n return await _init.call(this)\n\n } catch (e) {\n console.error(e);\n }\n }\n\n async listen(port, dom, cb) {\n const server = await this.init()\n this.state.status = 'running'\n server.listen(port, dom, cb)\n }\n}\n\n\nasync function _init() {\n try {\n AKSHOOKS.append({ \n entry: this ,\n context: this\n })\n const {keys, apis, mapper} = this.configs\n app.keys = this.configs.keys\n\n if (!apis.list) {\n throw new Error('api 列表必须封装为list的子属性')\n }\n\n if (!mapper.js || !mapper.css) {\n throw new Error('请将静态资源列表分别配置作为mapper.js和mapper.css的子元素')\n }\n\n const server = await core.call(this, app, this.configs)\n \n return server\n } catch (error) {\n console.log(error.stack);\n }\n}\n\nmodule.exports = function (opts) {\n return new aotooServer(opts)\n}\n"]}
\No newline at end of file