diff --git a/package.json b/package.json index 5fcf989..6d1dd2b 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@types/fs-extra": "^5.0.5", "@types/gulp": "^4.0.6", "@types/hapi": "^18.0.1", + "@types/history": "^4.7.2", "@types/imagemin": "^6.0.0", "@types/koa": "^2.0.48", "@types/koa-router": "^7.0.40", @@ -34,6 +35,7 @@ "chai": "^4.2.0", "chokidar": "^2.1.5", "csso": "^3.5.1", + "history": "^4.9.0", "html-webpack-plugin": "^3.2.0", "imagemin": "^6.1.0", "imagemin-mozjpeg": "^8.0.0", @@ -60,6 +62,7 @@ "webpack": "^4.30.0", "webpack-dev-middleware": "^3.6.2", "webpack-hot-client": "^4.1.1", + "webpack-hot-middleware": "^2.24.4", "webpack-koa2-middleware": "^2.1.0", "yargs": "^13.2.2" }, diff --git a/packages/nger-effects/lib/actions.ts b/packages/nger-effects/lib/actions.ts index d56b255..d0aad60 100755 --- a/packages/nger-effects/lib/actions.ts +++ b/packages/nger-effects/lib/actions.ts @@ -12,7 +12,6 @@ import { filter } from 'rxjs/operators'; export class Actions extends Observable { constructor(@Inject(ScannedActionsSubject) source?: Observable) { super(); - if (source) { this.source = source; } diff --git a/packages/nger-module-core/README.md b/packages/nger-module-core/README.md new file mode 100644 index 0000000..da19a76 --- /dev/null +++ b/packages/nger-module-core/README.md @@ -0,0 +1,3 @@ +# `nger-module-core` + +> 全段页面核心 diff --git a/packages/nger-module-core/__tests__/nger-module-core.test.js b/packages/nger-module-core/__tests__/nger-module-core.test.js new file mode 100644 index 0000000..a08d34c --- /dev/null +++ b/packages/nger-module-core/__tests__/nger-module-core.test.js @@ -0,0 +1,7 @@ +'use strict'; + +const ngerModuleCore = require('..'); + +describe('nger-module-core', () => { + it('needs tests'); +}); diff --git a/packages/nger-module-core/lib/index.ts b/packages/nger-module-core/lib/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/nger-module-core/package.json b/packages/nger-module-core/package.json new file mode 100644 index 0000000..019f28d --- /dev/null +++ b/packages/nger-module-core/package.json @@ -0,0 +1,29 @@ +{ + "name": "nger-module-core", + "version": "0.0.1", + "description": "> TODO: description", + "author": "imeepos <1037483576@qq.com>", + "homepage": "https://github.com/meepobrother/nger#readme", + "license": "ISC", + "main": "lib/nger-module-core.js", + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib" + ], + "publishConfig": { + "registry": "http://registry.npmjs.org/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/meepobrother/nger.git" + }, + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "bugs": { + "url": "https://github.com/meepobrother/nger/issues" + } +} diff --git a/packages/nger-module-webpack/lib/providers/store/webpack.actions.ts b/packages/nger-module-webpack/lib/providers/store/webpack.actions.ts new file mode 100644 index 0000000..482b403 --- /dev/null +++ b/packages/nger-module-webpack/lib/providers/store/webpack.actions.ts @@ -0,0 +1,13 @@ +import { Action } from 'nger-store'; + +export enum WebpackActionTypes { + // 打包命令 + Build = '[Webpack Build] Build', + Decrement = '[Counter Component] Decrement', + Reset = '[Counter Component] Reset', +} + +// 打包 +export class Build implements Action { + readonly type = WebpackActionTypes.Build; +} diff --git a/packages/nger-module-webpack/lib/providers/store/webpack.effects.ts b/packages/nger-module-webpack/lib/providers/store/webpack.effects.ts new file mode 100644 index 0000000..35a904c --- /dev/null +++ b/packages/nger-module-webpack/lib/providers/store/webpack.effects.ts @@ -0,0 +1,25 @@ +import { Injectable } from 'nger-core'; +import { Actions, Effect, ofType } from 'nger-effects'; +import { EMPTY, Observable, of } from 'rxjs'; +import { map, mergeMap, catchError } from 'rxjs/operators'; +import { WebpackActionTypes } from './webpack.actions' +@Injectable() +export class WebpackEffects { + @Effect() + loadMovies$ = this.actions$ + .pipe( + ofType(WebpackActionTypes.Increment), + mergeMap(() => { + console.log(`Increment`) + return of({ type: WebpackActionTypes.Reset }); + }) + ); + + constructor( + private actions$: Actions, + ) { + this.actions$.subscribe(res => { + console.log(`action`, res) + }); + } +} \ No newline at end of file diff --git a/packages/nger-module-webpack/lib/providers/store/webpack.reducer.ts b/packages/nger-module-webpack/lib/providers/store/webpack.reducer.ts new file mode 100644 index 0000000..1fca9e8 --- /dev/null +++ b/packages/nger-module-webpack/lib/providers/store/webpack.reducer.ts @@ -0,0 +1,20 @@ +import { Action } from 'nger-store'; +import { WebpackActionTypes } from './webpack.actions'; + +export const initialState = 0; + +export function counterReducer(state = initialState, action: Action) { + switch (action.type) { + case WebpackActionTypes.Increment: + return state + 1; + + case WebpackActionTypes.Decrement: + return state - 1; + + case WebpackActionTypes.Reset: + return 0; + + default: + return state; + } +} \ No newline at end of file diff --git a/packages/nger-module-webpack/lib/providers/webpack.ts b/packages/nger-module-webpack/lib/providers/webpack.ts index 8a107d4..bd8e808 100644 --- a/packages/nger-module-webpack/lib/providers/webpack.ts +++ b/packages/nger-module-webpack/lib/providers/webpack.ts @@ -5,14 +5,15 @@ import { WebpackMergeService } from './merge'; import chalk from 'chalk'; import ora from 'ora'; import { Injector } from 'nger-di'; - +import { Store } from 'nger-store' @Injectable() export class WebpackService { serveSpinner: ora.Ora = ora(`Starting development server, please wait~`); constructor( @Inject() public injector: Injector, - @Inject() public merge: WebpackMergeService + @Inject() public merge: WebpackMergeService, + private store: Store<{ count: number }> ) { } configs: Configuration[]; diff --git a/packages/nger-platform-axios/lib/index.ts b/packages/nger-platform-axios/lib/index.ts index 40f2048..a769dc9 100644 --- a/packages/nger-platform-axios/lib/index.ts +++ b/packages/nger-platform-axios/lib/index.ts @@ -12,65 +12,69 @@ export class NgerPlatformAxios extends Platform { this.util = new NgerUtil(this.logger) } async run(ref: NgModuleRef) { - const _axios = await this.util.loadPkg('axios'); const ngModule = ref.context.getClass(NgModuleMetadataKey) as NgModuleClassAst; ngModule.declarations.map(declaration => { const instance = ref.createControllerRef(declaration.target) const controller = declaration.getClass(ControllerMetadataKey) as ControllerClassAst; - const gets = declaration.getProperty(GetMetadataKey) as GetPropertyAst[]; - const posts = declaration.getProperty(PostMetadataKey) as PostPropertyAst[]; - gets.map(get => { - const def = get.ast.metadataDef; - def.path = def.path || `${get.ast.propertyKey as string}`; - if (def.path.startsWith('http')) { - instance[get.ast.propertyKey] = (...args: any[]) => { - let params: any = {} - args.map(arg => { - if (typeof arg === 'object') { - params = { ...params, ...arg } - } - }); - if (def.path) return _axios.get(def.path, { - params: params - }).then(data => data.data) - } - } else { - instance[get.ast.propertyKey] = (...args: any[]) => { - let params: any = {} - args.map(arg => { - if (typeof arg === 'object') { - params = { ...params, ...arg } - } - }); - return _axios.get(`${controller.path}/${def.path}`, { params }).then(data => data.data) - } + this.handler(declaration, instance, controller) + }); + } + + async handler(declaration: TypeContext, instance: any, controller: any) { + const _axios = await this.util.loadPkg('axios'); + const gets = declaration.getProperty(GetMetadataKey) as GetPropertyAst[]; + const posts = declaration.getProperty(PostMetadataKey) as PostPropertyAst[]; + gets.map(get => { + const def = get.ast.metadataDef; + def.path = def.path || `${get.ast.propertyKey as string}`; + if (def.path.startsWith('http')) { + instance[get.ast.propertyKey] = (...args: any[]) => { + let params: any = {} + args.map(arg => { + if (typeof arg === 'object') { + params = { ...params, ...arg } + } + }); + if (def.path) return _axios.get(def.path, { + params: params + }).then(data => data.data) + } + } else { + instance[get.ast.propertyKey] = (...args: any[]) => { + let params: any = {} + args.map(arg => { + if (typeof arg === 'object') { + params = { ...params, ...arg } + } + }); + return _axios.get(`${controller.path}/${def.path}`, { params }).then(data => data.data) + } + } + }); + posts.map(post => { + const def = post.ast.metadataDef; + def.path = def.path || `${post.ast.propertyKey as string}`; + if (def.path.startsWith('http')) { + instance[post.ast.propertyKey] = (...args: any[]) => { + let body: any = {} + args.map(arg => { + if (typeof arg === 'object') { + body = { ...body, ...arg } + } + }); + return _axios.post(`${def.path}`, body).then(data => data.data) } - }); - posts.map(post => { - const def = post.ast.metadataDef; - def.path = def.path || `${post.ast.propertyKey as string}`; - if (def.path.startsWith('http')) { - instance[post.ast.propertyKey] = (...args: any[]) => { - let body: any = {} - args.map(arg => { - if (typeof arg === 'object') { - body = { ...body, ...arg } - } - }); - return _axios.post(`${def.path}`, body).then(data => data.data) - } - } else { - instance[post.ast.propertyKey] = (...args: any[]) => { - let body: any = {} - args.map(arg => { - if (typeof arg === 'object') { - body = { ...body, ...arg } - } - }); - return _axios.post(`${controller.path}/${def.path}`, body).then(data => data.data) - } + } else { + instance[post.ast.propertyKey] = (...args: any[]) => { + let body: any = {} + args.map(arg => { + if (typeof arg === 'object') { + body = { ...body, ...arg } + } + }); + return _axios.post(`${controller.path}/${def.path}`, body).then(data => data.data) } - }); + } }); } } \ No newline at end of file diff --git a/packages/nger-platform-express/lib/express.ts b/packages/nger-platform-express/lib/express.ts index 8862619..2a7c3ef 100644 --- a/packages/nger-platform-express/lib/express.ts +++ b/packages/nger-platform-express/lib/express.ts @@ -1,20 +1,29 @@ import { ConsoleLogger, LogLevel } from 'nger-logger'; -import { TypeContext } from 'ims-decorator'; import express from 'express'; +import WebpackDevMiddleware from 'webpack-dev-middleware'; import { createServer } from 'http'; import { NgModuleMetadataKey, NgModuleClassAst, ControllerMetadataKey, ControllerClassAst, GetMetadataKey, GetMethodAst, PostMetadataKey, PostMethodAst, Platform, NgModuleRef } from 'nger-core'; import { NgerUtil } from 'nger-util'; +import { Injector, InjectFlags } from 'nger-di'; +import { WebpackService } from 'nger-module-webpack'; +import { NgerPlatformAxios } from 'nger-platform-axios'; export class NgerPlatformExpress extends Platform { logger: ConsoleLogger; util: NgerUtil; + injector: Injector; + app: any; + axios: NgerPlatformAxios = new NgerPlatformAxios(); constructor() { super(); this.logger = new ConsoleLogger(LogLevel.debug) this.util = new NgerUtil(this.logger); } async run(ref: NgModuleRef) { + await this.axios.run(ref); + this.injector = ref.injector; const exp = await this.util.loadPkg('express') const app = exp(); + this.app = app; const server = createServer(app) // 获取端口号 const port = ref.context.get(`port`); @@ -35,7 +44,6 @@ export class NgerPlatformExpress extends Platform { } }); }); - posts.map(post => { this.logger.debug(`post ${controller.path}/${post.path}`) app.post(`${controller.path}/${post.path}`, async (req, res, next) => { @@ -47,9 +55,24 @@ export class NgerPlatformExpress extends Platform { } }) }); + // 属性 }); + this.attachWebpackCompiler(); server.listen(port, () => { this.logger.info(`app start at http://localhost:${port}`) }); } + + async attachWebpackCompiler() { + const webpack = this.injector.get(WebpackService, undefined, InjectFlags.Optional) as WebpackService; + const config = webpack.config; + let publicPath = '/'; + if (config) { + if (config.output && config.output.publicPath) publicPath = config.output.publicPath + } + const middleWare = WebpackDevMiddleware(webpack.compiler, { + publicPath, + }) + this.app.use(middleWare); + } } \ No newline at end of file diff --git a/packages/nger-platform-koa/lib/index.ts b/packages/nger-platform-koa/lib/index.ts index cea8e30..88399c2 100644 --- a/packages/nger-platform-koa/lib/index.ts +++ b/packages/nger-platform-koa/lib/index.ts @@ -2,7 +2,7 @@ import { createServer } from 'http'; import { Injector, InjectFlags } from 'nger-di' import Koa from 'koa'; import { ConsoleLogger, LogLevel } from 'nger-logger'; -import { DevModelToken, NgModuleRef } from 'nger-core'; +import { DevModelToken, NgModuleRef, ControllerRef } from 'nger-core'; import { NgerUtil } from 'nger-util'; import Router from 'koa-router'; import Static from 'koa-static'; @@ -13,6 +13,7 @@ import { NgerPlatformAxios } from 'nger-platform-axios' // import webpackKoa2Middleware from 'webpack-koa2-middleware' import koaWebpack from 'koa-webpack'; import { WebpackService } from 'nger-module-webpack'; +import { TypeContext } from 'ims-decorator'; export class NgerPlatformKoa extends Platform { logger: ConsoleLogger; util: NgerUtil; @@ -25,7 +26,6 @@ export class NgerPlatformKoa extends Platform { this.util = new NgerUtil(this.logger) } async run(ref: NgModuleRef) { - await this.axios.run(ref); const KoaPkg = await this.util.loadPkg('koa'); const KoaRouter = await this.util.loadPkg('koa-router') const KoaStatic = await this.util.loadPkg('koa-static') @@ -51,35 +51,8 @@ export class NgerPlatformKoa extends Platform { ngModule.declarations.map(declaration => { const controllerRef = ref.createControllerRef(declaration.target) const controller = declaration.getClass(ControllerMetadataKey) as ControllerClassAst; - const gets = declaration.getMethod(GetMetadataKey) as GetMethodAst[]; - const posts = declaration.getMethod(PostMetadataKey) as PostMethodAst[]; - gets.map(get => { - this.logger.debug(`get ${controller.path}/${get.path}`) - router.get(`${controller.path}/${get.path}`, async (ctx) => { - try { - // get.parameters.map(par=>{ - // if(par instanceof ReqParameterAst){ - // params[par.ast.parameterIndex] = ctx.request - // } - // }) - const data = await controllerRef.instance[get.ast.propertyKey](); - ctx.body = data; - } catch (e) { - this.catchError(e) - } - }); - }); - posts.map(post => { - this.logger.debug(`post ${controller.path}/${post.path}`) - router.post(`${controller.path}/${post.path}`, async (ctx) => { - try { - const data = await controllerRef.instance[post.ast.propertyKey](); - ctx.body = data; - } catch (e) { - this.catchError(e) - } - }) - }); + this.handler(declaration, router, controller, controllerRef); + this.axios.handler(declaration, controllerRef.instance, controller) }); this.attachWebpackCompiler(router); this.app.use(router.routes()).use(router.allowedMethods()) @@ -88,20 +61,49 @@ export class NgerPlatformKoa extends Platform { }); } + handler(declaration: TypeContext, router: any, controller: any, controllerRef: any) { + const gets = declaration.getMethod(GetMetadataKey) as GetMethodAst[]; + gets.map(get => { + this.logger.debug(`get ${controller.path}/${get.path}`) + router.get(`${controller.path}/${get.path}`, async (ctx) => { + try { + const data = await controllerRef.instance[get.ast.propertyKey](); + ctx.body = data; + } catch (e) { + this.catchError(e) + } + }); + }); + const posts = declaration.getMethod(PostMetadataKey) as PostMethodAst[]; + posts.map(post => { + this.logger.debug(`post ${controller.path}/${post.path}`) + router.post(`${controller.path}/${post.path}`, async (ctx) => { + try { + const data = await controllerRef.instance[post.ast.propertyKey](); + ctx.body = data; + } catch (e) { + this.catchError(e) + } + }) + }); + } + async attachWebpackCompiler(router: any) { const webpack = this.injector.get(WebpackService, undefined, InjectFlags.Optional) as WebpackService; const config = webpack.config; const dev = this.injector.get(DevModelToken, false); + console.log({ config, dev }) if (dev && !!webpack) { const middleware = await koaWebpack({ config, devMiddleware: { - publicPath: config.output && config.output.publicPath || '/', logLevel: 'silent', - watchOptions: { aggregateTimeout: 200 } + inline: true, + heartbeat: 2000, }, hotClient: { - logLevel: 'silent' + logLevel: 'silent', + autoConfigure: false }, compiler: webpack.compiler }); diff --git a/packages/nger-ui-core/README.md b/packages/nger-ui-core/README.md new file mode 100644 index 0000000..3a5cc98 --- /dev/null +++ b/packages/nger-ui-core/README.md @@ -0,0 +1,4 @@ +# `nger-ui-core` + +> ui core 核心UI + diff --git a/packages/nger-ui-core/__tests__/nger-ui-core.test.js b/packages/nger-ui-core/__tests__/nger-ui-core.test.js new file mode 100644 index 0000000..6b88aec --- /dev/null +++ b/packages/nger-ui-core/__tests__/nger-ui-core.test.js @@ -0,0 +1,7 @@ +'use strict'; + +const ngerUiCore = require('..'); + +describe('nger-ui-core', () => { + it('needs tests'); +}); diff --git a/packages/nger-ui-core/lib/index.ts b/packages/nger-ui-core/lib/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/nger-ui-core/lib/router-outlet/index.ts b/packages/nger-ui-core/lib/router-outlet/index.ts new file mode 100644 index 0000000..fa82b95 --- /dev/null +++ b/packages/nger-ui-core/lib/router-outlet/index.ts @@ -0,0 +1,15 @@ +import { Directive, OnDestroy, OnInit, PageRef } from 'nger-core'; +@Directive({ + selector: `router-outlet`, + exportAs: 'outlet' +}) +export class RouterOutlet implements OnDestroy, OnInit { + // 当前激活的组件 + private activated: PageRef | null = null; + ngOnInit() { } + ngOnDestroy() { } + get component(): object { + if (!this.activated) throw new Error('Outlet is not activated'); + return this.activated.instance; + } +} diff --git a/packages/nger-ui-core/package.json b/packages/nger-ui-core/package.json new file mode 100644 index 0000000..cca2de7 --- /dev/null +++ b/packages/nger-ui-core/package.json @@ -0,0 +1,29 @@ +{ + "name": "nger-ui-core", + "version": "0.0.1", + "description": "> TODO: description", + "author": "imeepos <1037483576@qq.com>", + "homepage": "https://github.com/meepobrother/nger#readme", + "license": "ISC", + "main": "lib/nger-ui-core.js", + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib" + ], + "publishConfig": { + "registry": "http://registry.npmjs.org/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/meepobrother/nger.git" + }, + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "bugs": { + "url": "https://github.com/meepobrother/nger/issues" + } +} diff --git a/packages/nger-webpack-admin/lib/assets.ts b/packages/nger-webpack-admin/lib/assets.ts new file mode 100644 index 0000000..8b66417 --- /dev/null +++ b/packages/nger-webpack-admin/lib/assets.ts @@ -0,0 +1,88 @@ +import autoprefixer = require('autoprefixer'); +const postCssPlugins = [ + autoprefixer({ + browsers: [ + 'Android >= 4', + 'iOS >= 6' + ], + flexbox: 'no-2009' + }) +]; +export default [ + { + test: /\.css$/, + use: [{ + loader: 'style-loader' + }, { + loader: 'css-loader' + }, { + loader: 'postcss-loader', + options: { + ident: 'postcss', + plugins: postCssPlugins + } + }] + }, { + test: /\.(s[ac]ss)\b/, + use: [{ + loader: 'style-loader', + options: { + sourceMap: true + } + }, { + loader: 'css-loader' + }, { + loader: 'postcss-loader', + options: { + ident: 'postcss', + plugins: postCssPlugins + } + }, { + loader: 'sass-loader' + }] + }, { + test: /\.less\b/, + use: [{ + loader: 'style-loader', + options: { + sourceMap: true + } + }, { loader: 'css-loader' }, { + loader: 'postcss-loader', + options: { + ident: 'postcss', + plugins: postCssPlugins + } + }, { + loader: 'less-loader', + options: {} + }] + }, { + test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, + use: [{ + loader: 'url-loader', + options: { + name: 'assets/medias/[name]_[hash].[ext]', + limit: 10240 + } + }] + }, { + test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, + use: [{ + loader: 'url-loader', + options: { + name: 'assets/fonts/[name]_[hash].[ext]', + limit: 10240 + } + }] + }, { + test: /\.(png|jpe?g|gif|bpm|svg)(\?.*)?$/, + use: [{ + loader: 'url-loader', + options: { + name: 'assets/images/[name]_[hash].[ext]', + limit: 10240 + } + }] + } +] \ No newline at end of file diff --git a/template/admin/index.html b/packages/nger-webpack-admin/lib/index.html similarity index 81% rename from template/admin/index.html rename to packages/nger-webpack-admin/lib/index.html index 1989878..6ee6837 100644 --- a/template/admin/index.html +++ b/packages/nger-webpack-admin/lib/index.html @@ -4,9 +4,9 @@ - Document + nger-pc - +
\ No newline at end of file diff --git a/packages/nger-webpack-admin/lib/index.ts b/packages/nger-webpack-admin/lib/index.ts index 23b7c23..7286fd6 100644 --- a/packages/nger-webpack-admin/lib/index.ts +++ b/packages/nger-webpack-admin/lib/index.ts @@ -5,30 +5,34 @@ import webpack, { Configuration } from 'webpack' import { join } from 'path'; const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); const root = process.cwd(); +import assets from './assets'; @NgModule({ providers: [{ provide: WebpackConfigToken, useValue: { entry: { - main: [join(root, 'src/admin.ts')] + main: ['webpack-hot-middleware/client?noInfo=true&reload=true', join(root, 'src/admin.ts')] }, devtool: 'inline-source-map', watch: true, resolve: { - plugins: [new TsconfigPathsPlugin({ configFile: 'tsconfig.json' })] + plugins: [ + new TsconfigPathsPlugin({ configFile: 'tsconfig.json' }), + ] }, plugins: [ new HtmlWebpackPlugin({ - template: join(root, 'template/admin/index.html'), + template: join(__dirname, 'index.html'), filename: 'index.html', chunks: [ - 'manifest' + 'manifest', 'main' ] }), new webpack.WatchIgnorePlugin([ /\.js$/, /\.d\.ts$/ ]), + new webpack.HotModuleReplacementPlugin(), ], output: { path: join(root, 'attachments/template/admin'), @@ -49,8 +53,7 @@ const root = process.cwd(); } } ] - - }] + }, ...assets] }, performance: { hints: 'warning', diff --git a/src/admin.ts b/src/admin.ts index f483631..fb88ea3 100644 --- a/src/admin.ts +++ b/src/admin.ts @@ -7,4 +7,10 @@ import { HomePage } from './template/admin/home/home'; HomePage ] }) -export default class NgerAdmin { } \ No newline at end of file +export default class NgerAdmin { } + +const domRoot = document.getElementById('app'); +import { createBrowserHistory } from 'history'; +const history = createBrowserHistory(); +history.push('/home', { some: 'data' }) +console.log(11) diff --git a/src/app.ts b/src/app.ts index 40ac6cf..a733d1f 100644 --- a/src/app.ts +++ b/src/app.ts @@ -2,6 +2,7 @@ import { NgModule } from 'nger-core'; import { HomePage } from './template/mobile/home/home'; import { NgerUserInjectable } from './template/services/index' + interface Home { } class Demo implements Home { } // 小程序/h5等移动端 @@ -14,3 +15,7 @@ class Demo implements Home { } ] }) export default class NgerApp { } + + +console.log(11) + diff --git a/src/inc/home.ts b/src/inc/home.ts index 6f3ebdb..455d298 100644 --- a/src/inc/home.ts +++ b/src/inc/home.ts @@ -23,7 +23,7 @@ export class HomeController { baidu() { return this.getBaidu(); } - + constructor() { } @It(`Get /userInfo`, async (expect, that) => { diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..212269e --- /dev/null +++ b/src/index.ts @@ -0,0 +1 @@ +console.log(11) \ No newline at end of file diff --git a/template/app/index.html b/template/app/index.html deleted file mode 100644 index 2f776c4..0000000 --- a/template/app/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - nger app - - - -
- welcome to use nger app! -
- - - \ No newline at end of file diff --git a/template/index.html b/template/index.html index d3658a1..8b73f4b 100644 --- a/template/index.html +++ b/template/index.html @@ -55,7 +55,7 @@
Welcome to use nger!
- + 安装使用