From 3953a57fa4b43b1e002857a83cc38b5b838029df Mon Sep 17 00:00:00 2001 From: npmrun <1549469775@qq.com> Date: Thu, 24 Nov 2022 18:21:44 +0800 Subject: [PATCH] fixed bug --- pnpm-lock.yaml | 188 +++++++++++++++++++++++++------------------- route.txt | 5 +- source/db/data.db | Bin 81920 -> 81920 bytes source/plugins/index.ts | 3 + source/route/views/login.ts | 15 +++- source/run.ts | 1 + template/helper/ui.pug | 5 ++ template/layout/layout.pug | 2 +- template/views/index.pug | 4 +- 9 files changed, 133 insertions(+), 90 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b7a102..860ccc1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,8 +1,8 @@ -lockfileVersion: 5.3 +lockfileVersion: 5.4 specifiers: '@hapi/code': ^9.0.1 - '@hapi/cookie': ^11.0.2 + '@hapi/cookie': 11.0.2 '@hapi/crumb': ^8.0.1 '@hapi/hapi': ^20.1.2 '@hapi/hoek': ^10.0.0 @@ -59,8 +59,8 @@ dependencies: bcrypt: 5.0.1 fs-extra: 10.1.0 hapi-auth-jwt2: 10.2.0 - hapi-sequelizejs: 4.5.0_854bf76d9bf23fc83de64ddfc031ac7f - hapi-swagger: 14.2.0_@hapi+hapi@20.1.4+joi@17.4.0 + hapi-sequelizejs: 4.5.0_qvf7o3m36i74qppgjxp4amnmp4 + hapi-swagger: 14.2.0_7vfmy7cdcj4whrdhceanslo3uq joi: 17.4.0 json-merge-patch: 1.0.1 jsonwebtoken: 8.5.1 @@ -88,7 +88,7 @@ devDependencies: fast-glob: 3.2.11 file-type: 16.5.0 log4js: 6.4.1 - ts-node: 10.0.0_994e9dd6eccb2c889707fc5c400a4503 + ts-node: 10.0.0_tfhj3vxmzmwirfyh7roeacsfam ts-node-dev: 1.1.6_typescript@4.3.2 tsc-alias: 1.7.0 tsconfig-paths: 3.9.0 @@ -139,7 +139,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser/7.18.9_@babel+core@7.18.9+eslint@8.20.0: + /@babel/eslint-parser/7.18.9_454u7sltq2wfyzqnoclqps3oeu: resolution: {integrity: sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -437,7 +437,7 @@ packages: dependencies: '@hapi/boom': 9.1.2 - /@hapi/eslint-plugin/6.0.0_b4055c31b549a4167e3f98494be7111a: + /@hapi/eslint-plugin/6.0.0_wqcvymnvjgsbm7r7tbeuxzyrdi: resolution: {integrity: sha512-6eN1fnBO742nTTSpQtYB35aFGAT9I7r4u2v/+R2c9ToYTQp4QBoPOBA5R3+C7+Az3I0ugs+lTIqAsMPDLpsRAg==} peerDependencies: '@babel/core': ^7.14.3 @@ -449,7 +449,7 @@ packages: optional: true dependencies: '@babel/core': 7.18.9_supports-color@8.1.1 - '@babel/eslint-parser': 7.18.9_@babel+core@7.18.9+eslint@8.20.0 + '@babel/eslint-parser': 7.18.9_454u7sltq2wfyzqnoclqps3oeu dev: true /@hapi/file/2.0.0: @@ -524,9 +524,9 @@ packages: optional: true dependencies: '@babel/core': 7.18.9_supports-color@8.1.1 - '@babel/eslint-parser': 7.18.9_@babel+core@7.18.9+eslint@8.20.0 + '@babel/eslint-parser': 7.18.9_454u7sltq2wfyzqnoclqps3oeu '@hapi/bossy': 6.0.0 - '@hapi/eslint-plugin': 6.0.0_b4055c31b549a4167e3f98494be7111a + '@hapi/eslint-plugin': 6.0.0_wqcvymnvjgsbm7r7tbeuxzyrdi '@hapi/hoek': 10.0.0 diff: 5.1.0 eslint: 8.20.0_supports-color@8.1.1 @@ -1258,7 +1258,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: registry.npmmirror.com/fsevents/2.3.2 + fsevents: 2.3.2 /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} @@ -1272,7 +1272,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: registry.npmmirror.com/fsevents/2.3.2 + fsevents: 2.3.2 dev: true /chownr/1.1.4: @@ -1331,6 +1331,12 @@ packages: dev: false optional: true + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + requiresBuild: true + dev: false + optional: true + /commander/9.4.0: resolution: {integrity: sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==} engines: {node: ^12.20.0 || >=14} @@ -1344,7 +1350,7 @@ packages: engines: {node: '>=8'} dependencies: dot-prop: 5.3.0 - graceful-fs: registry.npmmirror.com/graceful-fs/4.2.6 + graceful-fs: 4.2.6 make-dir: 3.1.0 unique-string: 2.0.0 write-file-atomic: 3.0.3 @@ -1437,16 +1443,39 @@ packages: meow: 3.7.0 dev: true - /debug/2.6.9: + /debug/2.6.9_supports-color@5.5.0: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 + supports-color: 5.5.0 dev: false /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: false + + /debug/3.2.7_supports-color@5.5.0: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 + supports-color: 5.5.0 dev: false /debug/4.3.1: @@ -1995,11 +2024,18 @@ packages: /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + /fstream/1.0.12: resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} engines: {node: '>=0.6'} dependencies: - graceful-fs: registry.npmmirror.com/graceful-fs/4.2.6 + graceful-fs: 4.2.6 inherits: 2.0.4 mkdirp: 0.5.5 rimraf: 2.7.1 @@ -2151,7 +2187,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: registry.npmmirror.com/uglify-js/3.13.9 + uglify-js: 3.13.9 /hapi-auth-jwt2/10.2.0: resolution: {integrity: sha512-6Xkt0LHNBglYWOlFulNgf5pUPqRGMKpAHZjwEZqC8/07TVlgxr240pENctrthcLi8k/yCunm7x2xCSLNyTGKmg==} @@ -2162,7 +2198,7 @@ packages: jsonwebtoken: 8.5.1 dev: false - /hapi-sequelizejs/4.5.0_854bf76d9bf23fc83de64ddfc031ac7f: + /hapi-sequelizejs/4.5.0_qvf7o3m36i74qppgjxp4amnmp4: resolution: {integrity: sha512-+A2Qgu2lIM8kz7PDxbDtmhGJbnobRPdOEMkmc7NvhElZr5AIkbhoYcV/dmqI70tw671zvRjS9A255igShyigow==} engines: {node: '>=12.0.0', npm: '>=5.6.0'} peerDependencies: @@ -2176,7 +2212,7 @@ packages: sequelize: 6.6.2_sqlite3@5.0.2 dev: false - /hapi-swagger/14.2.0_@hapi+hapi@20.1.4+joi@17.4.0: + /hapi-swagger/14.2.0_7vfmy7cdcj4whrdhceanslo3uq: resolution: {integrity: sha512-S0XoYfWOsMXA4rk43YCCzNUFW2zNHKfDcagJqrurTMcJgyKK7soHzEbaF34m/kyeT4n4YiKLDdcFhfXzSAMycw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2192,6 +2228,8 @@ packages: json-schema-ref-parser: 6.1.0 swagger-parser: 4.0.2 swagger-ui-dist: 3.50.0 + transitivePeerDependencies: + - supports-color dev: false /har-schema/2.0.0: @@ -2642,6 +2680,8 @@ packages: debug: 3.2.7 js-yaml: 3.14.1 ono: 4.0.11 + transitivePeerDependencies: + - supports-color dev: false /json-schema-ref-parser/6.1.0: @@ -2687,7 +2727,7 @@ packages: dependencies: universalify: 2.0.0 optionalDependencies: - graceful-fs: registry.npmmirror.com/graceful-fs/4.2.6 + graceful-fs: 4.2.6 /jsonwebtoken/8.5.1: resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} @@ -2776,7 +2816,7 @@ packages: resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} engines: {node: '>=0.10.0'} dependencies: - graceful-fs: registry.npmmirror.com/graceful-fs/4.2.6 + graceful-fs: 4.2.6 parse-json: 2.2.0 pify: 2.3.0 pinkie-promise: 2.0.1 @@ -3058,6 +3098,8 @@ packages: debug: 3.2.7 iconv-lite: 0.4.24 sax: 1.2.4 + transitivePeerDependencies: + - supports-color dev: false /neo-async/2.6.2: @@ -3072,6 +3114,27 @@ packages: engines: {node: 4.x || >=6.0.0} dev: false + /node-gyp/3.8.0: + resolution: {integrity: sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==} + engines: {node: '>= 0.8.0'} + hasBin: true + requiresBuild: true + dependencies: + fstream: 1.0.12 + glob: 7.1.7 + graceful-fs: 4.2.6 + mkdirp: 0.5.5 + nopt: 3.0.6 + npmlog: 4.1.2 + osenv: 0.1.5 + request: 2.88.2 + rimraf: 2.7.1 + semver: 5.3.0 + tar: 2.2.2 + which: 1.3.1 + dev: false + optional: true + /node-pre-gyp/0.11.0: resolution: {integrity: sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==} deprecated: 'Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future' @@ -3087,6 +3150,8 @@ packages: rimraf: 2.7.1 semver: 5.7.1 tar: 4.4.13 + transitivePeerDependencies: + - supports-color dev: false /node-releases/2.0.6: @@ -3100,14 +3165,14 @@ packages: requiresBuild: true dependencies: chokidar: 3.5.2 - debug: 3.2.7 + debug: 3.2.7_supports-color@5.5.0 ignore-by-default: 1.0.1 minimatch: 3.0.4 pstree.remy: 1.1.8 semver: 5.7.1 supports-color: 5.5.0 touch: 3.1.0 - undefsafe: 2.0.3 + undefsafe: 2.0.3_supports-color@5.5.0 update-notifier: 4.1.3 dev: false @@ -3344,7 +3409,7 @@ packages: resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} engines: {node: '>=0.10.0'} dependencies: - graceful-fs: registry.npmmirror.com/graceful-fs/4.2.6 + graceful-fs: 4.2.6 pify: 2.3.0 pinkie-promise: 2.0.1 dev: true @@ -3940,7 +4005,9 @@ packages: node-addon-api: 3.2.1 node-pre-gyp: 0.11.0 optionalDependencies: - node-gyp: registry.npmmirror.com/node-gyp/3.8.0 + node-gyp: 3.8.0 + transitivePeerDependencies: + - supports-color dev: false /sshpk/1.16.1: @@ -4120,6 +4187,8 @@ packages: swagger-methods: 1.0.8 swagger-schema-official: 2.0.0-bab6bed z-schema: 3.25.1 + transitivePeerDependencies: + - supports-color dev: false /swagger-schema-official/2.0.0-bab6bed: @@ -4260,7 +4329,7 @@ packages: typescript: 4.3.2 dev: true - /ts-node/10.0.0_994e9dd6eccb2c889707fc5c400a4503: + /ts-node/10.0.0_tfhj3vxmzmwirfyh7roeacsfam: resolution: {integrity: sha512-ROWeOIUvfFbPZkoDis0L/55Fk+6gFQNZwwKPLinacRl6tsxstTF1DbAcLKkovwnpKMVvOMHP1TIbnwXwtLg1gg==} engines: {node: '>=12.0.0'} hasBin: true @@ -4380,6 +4449,13 @@ packages: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: false + /uglify-js/3.13.9: + resolution: {integrity: sha512-wZbyTQ1w6Y7fHdt8sJnHfSIuWeDgk6B5rCb4E/AM6QNNPbOMIZph21PW5dRB3h7Df0GszN+t7RuUH6sWK5bF0g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + optional: true + /uid-safe/2.1.5: resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} engines: {node: '>= 0.8'} @@ -4396,10 +4472,12 @@ packages: which-boxed-primitive: 1.0.2 dev: false - /undefsafe/2.0.3: + /undefsafe/2.0.3_supports-color@5.5.0: resolution: {integrity: sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==} dependencies: - debug: 2.6.9 + debug: 2.6.9_supports-color@5.5.0 + transitivePeerDependencies: + - supports-color dev: false /unique-string/2.0.0: @@ -4634,59 +4712,5 @@ packages: lodash.isequal: 4.5.0 validator: 10.11.0 optionalDependencies: - commander: registry.npmmirror.com/commander/2.20.3 - dev: false - - registry.npmmirror.com/commander/2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz} - name: commander - version: 2.20.3 - requiresBuild: true - dev: false - optional: true - - registry.npmmirror.com/fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz} - name: fsevents - version: 2.3.2 - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - optional: true - - registry.npmmirror.com/graceful-fs/4.2.6: - resolution: {integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.6.tgz} - name: graceful-fs - version: 4.2.6 - - registry.npmmirror.com/node-gyp/3.8.0: - resolution: {integrity: sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/node-gyp/-/node-gyp-3.8.0.tgz} - name: node-gyp - version: 3.8.0 - engines: {node: '>= 0.8.0'} - hasBin: true - requiresBuild: true - dependencies: - fstream: 1.0.12 - glob: 7.1.7 - graceful-fs: registry.npmmirror.com/graceful-fs/4.2.6 - mkdirp: 0.5.5 - nopt: 3.0.6 - npmlog: 4.1.2 - osenv: 0.1.5 - request: 2.88.2 - rimraf: 2.7.1 - semver: 5.3.0 - tar: 2.2.2 - which: 1.3.1 + commander: 2.20.3 dev: false - optional: true - - registry.npmmirror.com/uglify-js/3.13.9: - resolution: {integrity: sha512-wZbyTQ1w6Y7fHdt8sJnHfSIuWeDgk6B5rCb4E/AM6QNNPbOMIZph21PW5dRB3h7Df0GszN+t7RuUH6sWK5bF0g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/uglify-js/-/uglify-js-3.13.9.tgz} - name: uglify-js - version: 3.13.9 - engines: {node: '>=0.8.0'} - hasBin: true - requiresBuild: true - optional: true diff --git a/route.txt b/route.txt index 0abea62..95ae8c4 100644 --- a/route.txt +++ b/route.txt @@ -1,4 +1,4 @@ -D:\1XYX\demo\hapi-demo\source\route\api对应路径: +D:\@code\project\hapi-demo\source\route\api对应路径: 不需权限 : GET /api/{path*} 需要权限 : GET /api/v1/upload 需要权限 : POST /api/v1/upload/upload @@ -7,7 +7,7 @@ D:\1XYX\demo\hapi-demo\source\route\api对应路径: 不需权限 : POST /api/v1/user/login 需要权限 : DELETE /api/v1/user/del 需要权限 : GET /api/v1/user/userinfo -D:\1XYX\demo\hapi-demo\source\route\views对应路径: +D:\@code\project\hapi-demo\source\route\views对应路径: 不需权限(提供无需验证): GET /404 不需权限 : GET /css 不需权限(提供无需验证): GET / @@ -16,5 +16,6 @@ D:\1XYX\demo\hapi-demo\source\route\views对应路径: 不需权限 : GET /{path*} 不需权限(提供无需验证): GET /login 不需权限 : POST /login + 需要权限 : GET /login/logout 不需权限 : POST /login/register 不需权限 : GET /nav \ No newline at end of file diff --git a/source/db/data.db b/source/db/data.db index 308def576748eb7b0fc6594a842bafed741ce3d4..85db86f9fd314ee34f6ec590318c1b2570371b7f 100644 GIT binary patch delta 226 zcmZo@U~On%ogmGaI8nx#F>zx;fjuMp=8N{m3k2ABVj1`@^Xc)I@^}HO)KY{=$+CldK delta 51 zcmZo@U~On%ogmGaFj2;tF=1mufjuMJ=8N{m3;0-hIT-jZ^Xc)I@^ => { server.auth.strategy("session", "cookie", { cookie: { ttl: 1000 * 60 * 60 * 24, + path: '/', // 测试退出时set-cookie失效,加上这个好了 name: "sid", //cookie的名字 password: process.env.KEY, isSecure: false, // false: 允许 Cookie 通过不安全的连接传输,这会使其受到攻击 diff --git a/template/helper/ui.pug b/template/helper/ui.pug index 68a5a94..f3f0c17 100644 --- a/template/helper/ui.pug +++ b/template/helper/ui.pug @@ -17,3 +17,8 @@ mixin header() .btn.btn-sm.btn-outline-secondary 登陆/注册 else div #{user.username} + a(href="/login/logout") + .btn.btn-sm.btn-outline-secondary 退出 + //- form(action="/login/logout", method="post") + //- include @/helper/form_security.pug + //- button.btn.btn-sm.btn-outline-secondary(type="submit") 退出 diff --git a/template/layout/layout.pug b/template/layout/layout.pug index 04fd2eb..458540a 100644 --- a/template/layout/layout.pug +++ b/template/layout/layout.pug @@ -8,10 +8,10 @@ html(lang="zh-cn") meta(charset="UTF-8") meta(http-equiv="X-UA-Compatible", content="IE=edge") link(rel="shortcut icon" href="/public/favicon.ico" type="image/x-icon") - //- device-width 宽度低于1100像素的设备直接缩小 meta(name="viewport", content="width=device-width, initial-scale=1.0") title #{title || 'WEB'} link(rel="stylesheet", href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css", integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx", crossorigin="anonymous") + link(rel="stylesheet", href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css") +css("style/common/style.css") block head body diff --git a/template/views/index.pug b/template/views/index.pug index 9bf807f..00c1bb2 100644 --- a/template/views/index.pug +++ b/template/views/index.pug @@ -1,4 +1,4 @@ -extends /layout/layout +extends @/layout/layout block var -title="首页" // 网页标题 @@ -9,4 +9,4 @@ block head block content .container - div sda + div(class="animated bounce") asda