Prechádzať zdrojové kódy

部分js区分生产环境和开发环境

MaiXinRong 6 rokov pred
rodič
commit
9ee7f7637d

+ 20 - 0
app.js

@@ -17,6 +17,7 @@ const BaseService = require('./app/base/base_service');
 const BaseController = require('./app/base/base_controller');
 
 const menu = require('./config/menu');
+const JsFiles = require('./config/web');
 
 module.exports = app => {
     app.uuid = uuid;
@@ -62,6 +63,25 @@ module.exports = app => {
     });
 
     //压缩前端js
+    app.jsFiles = { common: JsFiles.commonFiles };
+    for (const c in JsFiles.controller) {
+        const controller = JsFiles.controller[c];
+        app.jsFiles[c] = {};
+        for (const a in controller) {
+            const action = controller[a];
+            if (app.config.min) {
+                const minFileName = JsFiles.webPath + action.mergeFile + '.' + app.config.version + '.min.js';
+                let code = '';
+                for (const f of action.mergeFiles) {
+                    code = code + fs.readFileSync(app.baseDir + '/app' + f, 'utf8');
+                }
+                fs.writeFileSync(app.baseDir + '/app' + minFileName, Uglyfy.minify(code, {mangle: true}).code);
+                app.jsFiles[c][a] = action.files.concat([minFileName]);
+            } else {
+                app.jsFiles[c][a] = action.files.concat(action.mergeFiles);
+            }
+        }
+    }
     if (app.config.min) {
         app.minify = (file) => {
             const files = file instanceof Array ? file : [file];

+ 3 - 2
app/base/base_controller.js

@@ -57,17 +57,18 @@ class BaseController extends Controller {
         this.ctx.session.message = null;
 
         try {
-            data.min = this.app.config.min ? '.min' : '';
+            data.min = this.app.config.min;
             const viewString = await this.ctx.renderView(view, data);
             const modalString = modal === '' ? '' : await this.ctx.renderView(modal, data);
             const renderData = {
-                min: this.app.config.min ? '.min' : '',
+                min: this.app.config.min,
                 content: viewString,
                 message: JSON.stringify(message),
                 modal: modalString,
                 dropDownMenu: data.dropDownMenu === undefined ? [] : data.dropDownMenu,
                 breadCrumb: data.breadCrumb === undefined ? '' : data.breadCrumb,
                 tenderList: data.tenderList === undefined ? [] : data.tenderList,
+                jsFiles: data.jsFiles ? data.jsFiles : this.app.jsFiles.common,
             };
             await this.ctx.render('layout/layout.ejs', renderData);
         } catch(err) {

+ 1 - 0
app/controller/ledger_audit_controller.js

@@ -96,6 +96,7 @@ module.exports = app => {
                 renderData.ledgerSpreadSetting = JSON.stringify(ledgerSpread);
                 renderData.posSpreadSetting = JSON.stringify(posSpread);
                 renderData.readOnly = true;
+                renderData.jsFiles = this.app.jsFiles.common.concat(this.app.jsFiles.ledger.audit),
                 await this.layout('ledger/audit.ejs', renderData, 'ledger/audit_modal.ejs');
             } catch (err) {
                 console.log(err);

+ 2 - 0
app/controller/ledger_controller.js

@@ -132,7 +132,9 @@ module.exports = app => {
                     tenderMenu,
                     preUrl: '/tender/' + tender.id,
                     measureType,
+                    jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.ledger.explode),
                 };
+
                 await this.layout('ledger/explode.ejs', renderData, 'ledger/explode_modal.ejs');
             } catch (err) {
                 this.log(err);

+ 1 - 0
app/controller/stage_controller.js

@@ -105,6 +105,7 @@ module.exports = app => {
                 [renderData.ledgerSpread, renderData.posSpread] = this._getSpreadSetting();
                 renderData.ledgerData = await ctx.service.ledger.getDataByTenderId(ctx.tender.id, -1);
                 renderData.curStageData = await ctx.service.stageBills.getAuditorStageData(ctx.tender.id, ctx.stage.id, ctx.stage.times, 0);
+                renderData.jsFiles = this.app.jsFiles.common.concat(this.app.jsFiles.stage.index);
                 // 查询截止上期数据
                 //if (ctx.stage.order > 0) {
                     //renderData.preStageData

+ 1 - 0
app/controller/tender_controller.js

@@ -41,6 +41,7 @@ module.exports = app => {
                     categoryData,
                     tableColSetting: setting,
                     measureType: tenderConst.measureType,
+                    jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.tender.list),
                 };
                 await this.layout(view, renderData, modal);
             } catch (err) {

+ 3 - 13
app/view/layout/layout.ejs

@@ -15,19 +15,9 @@
     <link rel="stylesheet" href="/public/css/ztree/zTreeStyle.css" type="text/css">
     <link rel="stylesheet" href="/public/css/datepicker/datepicker.min.css" rel="stylesheet" type="text/css">
     <!-- JS. -->
-    <script src="/public/js/jquery/jquery-3.2.1.min.js"></script>
-    <script src="/public/js/jquery/jquery.validate.js"></script>
-    <script src="/public/js/messages_zh.js"></script>
-    <script src="/public/js/popper/popper.min.js"></script>
-    <script src="/public/js/bootstrap/bootstrap.min.js"></script>
-    <script src="/public/js/global.js"></script>
-    <script src="/public/js/vue/vue.js"></script>
-    <script src="/public/js/component/input.js"></script>
-    <script src="/public/js/cookies.js"></script>
-    <script src="/public/js/jquery-contextmenu/jquery.ui.position.min.js"></script>
-    <script src="/public/js/jquery-contextmenu/jquery.contextMenu.min.js"></script>
-    <script src="/public/js/lodash.js"></script>
-    <script src="/public/js/lz-string/lz-string.js"></script>
+    <% for (const file of jsFiles) { %>
+    <script type="text/javascript" src="<%- file %>"></script>
+    <% } %>
 </head>
 
 <body>

+ 1 - 5
app/view/ledger/audit.ejs

@@ -73,10 +73,6 @@
     ledgerSpreadSetting = JSON.parse(ledgerSpreadSetting);
     let posSpreadSetting = JSON.parse('<%- posSpreadSetting %>');
 </script>
-<script src="/public/js/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js"></script>
 <script>
     GC.Spread.Sheets.LicenseKey = "559432293813965#A0y3iTOzEDOzkjMyMDN9UTNiojIklkI1pjIEJCLi4TPB9mM5AFNTd4cvZ7SaJUVy3CWKtWYXx4VVhjMpp7dYNGdx2ia9sEVlZGOTh7NRlTUwkWR9wEV4gmbjBDZ4ElR8N7cGdHVvEWVBtCOwIGW0ZmeYVWVr3mI0IyUiwCMzETN8kzNzYTM0IicfJye&Qf35VfiEzRwEkI0IyQiwiIwEjL6ByUKBCZhVmcwNlI0IiTis7W0ICZyBlIsIyNyMzM5ADI5ADNwcTMwIjI0ICdyNkIsIibj9SbvNmL4N7bjRnch56ciojIz5GRiwiI8+Y9sWY9QmZ0Jyp96uL9v6L0wap9biY9qiq95q197Wr9g+89iojIh94Wiqi";
-</script>
-<script src="/public/js/spreadjs_rela/spreadjs_zh<%= min %>.js"></script>
-<script src="/public/js/path_tree<%= min %>.js"></script>
-<script src="/public/js/ledger_audit.js"></script>
+</script>

+ 1 - 6
app/view/ledger/explode.ejs

@@ -139,11 +139,6 @@
 </script>
 <script src="/public/js/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js"></script>
 <script src="/public/js/js-xlsx/xlsx.full.min.js"></script>
-<script src="/public/js/js-xlsx/xlsx.utils.js"></script>
 <script>
     GC.Spread.Sheets.LicenseKey = "559432293813965#A0y3iTOzEDOzkjMyMDN9UTNiojIklkI1pjIEJCLi4TPB9mM5AFNTd4cvZ7SaJUVy3CWKtWYXx4VVhjMpp7dYNGdx2ia9sEVlZGOTh7NRlTUwkWR9wEV4gmbjBDZ4ElR8N7cGdHVvEWVBtCOwIGW0ZmeYVWVr3mI0IyUiwCMzETN8kzNzYTM0IicfJye&Qf35VfiEzRwEkI0IyQiwiIwEjL6ByUKBCZhVmcwNlI0IiTis7W0ICZyBlIsIyNyMzM5ADI5ADNwcTMwIjI0ICdyNkIsIibj9SbvNmL4N7bjRnch56ciojIz5GRiwiI8+Y9sWY9QmZ0Jyp96uL9v6L0wap9biY9qiq95q197Wr9g+89iojIh94Wiqi";
-</script>
-<script src="/public/js/spreadjs_rela/spreadjs_zh<%= min %>.js"></script>
-<script src="/public/js/spreadjs_rela/extend_celltype.js"></script>
-<script src="/public/js/path_tree<%= min %>.js"></script>
-<script src="/public/js/ledger.js"></script>
+</script>

+ 1 - 5
app/view/stage/index.ejs

@@ -273,12 +273,9 @@
         </div>
     </div>
 </div>
-<script src="/public/js/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js"></script>
 <script>
     GC.Spread.Sheets.LicenseKey = "559432293813965#A0y3iTOzEDOzkjMyMDN9UTNiojIklkI1pjIEJCLi4TPB9mM5AFNTd4cvZ7SaJUVy3CWKtWYXx4VVhjMpp7dYNGdx2ia9sEVlZGOTh7NRlTUwkWR9wEV4gmbjBDZ4ElR8N7cGdHVvEWVBtCOwIGW0ZmeYVWVr3mI0IyUiwCMzETN8kzNzYTM0IicfJye&Qf35VfiEzRwEkI0IyQiwiIwEjL6ByUKBCZhVmcwNlI0IiTis7W0ICZyBlIsIyNyMzM5ADI5ADNwcTMwIjI0ICdyNkIsIibj9SbvNmL4N7bjRnch56ciojIz5GRiwiI8+Y9sWY9QmZ0Jyp96uL9v6L0wap9biY9qiq95q197Wr9g+89iojIh94Wiqi";
 </script>
-<script src="/public/js/spreadjs_rela/spreadjs_zh<%= min %>.js"></script>
-<script src="/public/js/path_tree<%= min %>.js"></script>
 <script>
     const ledgerSpreadSetting = JSON.parse('<%- JSON.stringify(ledgerSpread) %>');
     const posSpreadSetting = JSON.parse('<%- JSON.stringify(posSpread) %>');
@@ -287,5 +284,4 @@
     const stage = JSON.parse('<%- JSON.stringify(ctx.stage) %>');
     const ledgerData = JSON.parse('<%- JSON.stringify(ledgerData) %>');
     const curStageData = JSON.parse('<%- JSON.stringify(curStageData) %>');
-</script>
-<script type="text/javascript" src="/public/js/stage.js"></script>
+</script>

+ 1 - 2
app/view/tender/index.ejs

@@ -10,5 +10,4 @@
     const categoryType = JSON.parse('<%- JSON.stringify(settingConst.cType) %>');
     const category = JSON.parse('<%- JSON.stringify(categoryData) %>');
     const TenderTableCol = JSON.parse('<%- JSON.stringify(tableColSetting) %>');
-</script>
-<script src="/public/js/tender_list.js"></script>
+</script>

+ 1 - 2
app/view/tender/manage.ejs

@@ -10,5 +10,4 @@
     const categoryType = JSON.parse('<%- JSON.stringify(settingConst.cType) %>');
     const category = JSON.parse('<%- JSON.stringify(categoryData) %>');
     const TenderTableCol = JSON.parse('<%- JSON.stringify(tableColSetting) %>');
-</script>
-<script src="/public/js/tender_list.js"></script>
+</script>

+ 1 - 2
app/view/tender/progress.ejs

@@ -10,5 +10,4 @@
     const categoryType = JSON.parse('<%- JSON.stringify(settingConst.cType) %>');
     const category = JSON.parse('<%- JSON.stringify(categoryData) %>');
     const TenderTableCol = JSON.parse('<%- JSON.stringify(tableColSetting) %>');
-</script>
-<script src="/public/js/tender_list.js"></script>
+</script>

+ 2 - 0
config/config.default.js

@@ -108,6 +108,8 @@ module.exports = appInfo => {
     // 是否压缩替换前端js
     config.min = true;
 
+    config.version = '1.0.0';
+
     // 压缩设置
     config.gzip = {
         threshold: 1024,

+ 79 - 0
config/web.js

@@ -0,0 +1,79 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Mai
+ * @date 2019/1/10
+ * @version
+ */
+const JsFiles = {
+    webPath: "/public/js/web/",
+    commonFiles: [
+        "/public/js/jquery/jquery-3.2.1.min.js",
+        "/public/js/jquery/jquery.validate.js",
+        "/public/js/messages_zh.js",
+        "/public/js/popper/popper.min.js",
+        "/public/js/bootstrap/bootstrap.min.js",
+        "/public/js/global.js",
+        "/public/js/vue/vue.js",
+        "/public/js/component/input.js",
+        "/public/js/cookies.js",
+        "/public/js/jquery-contextmenu/jquery.ui.position.min.js",
+        "/public/js/jquery-contextmenu/jquery.contextMenu.min.js",
+        "/public/js/lodash.js",
+        "/public/js/lz-string/lz-string.js",
+    ],
+    controller: {
+        tender: {
+            list: {
+                files: [],
+                mergeFiles: ["/public/js/tender_list.js"],
+                mergeFile: 'tender_list',
+            }
+        },
+        ledger: {
+            explode: {
+                files: [
+                    "/public/js/js-xlsx/xlsx.full.min.js",
+                    "/public/js/js-xlsx/xlsx.utils.js",
+                    "/public/js/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js",
+                ],
+                mergeFiles: [
+                    "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/path_tree.js",
+                    "/public/js/ledger.js",
+                ],
+                mergeFile: 'explode',
+            },
+            audit: {
+                files: [
+                    "/public/js/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js",
+                ],
+                mergeFiles: [
+                    "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/path_tree.js",
+                    "/public/js/ledger_audit.js",
+                ],
+                mergeFile: 'ledger_audit',
+            }
+        },
+        stage: {
+            // 本期计量台账
+            index: {
+                files: [
+                    "/public/js/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js",
+                ],
+                mergeFiles: [
+                    "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/path_tree.js",
+                    "/public/js/stage.js",
+                ],
+                mergeFile: 'stage',
+            }
+        }
+    }
+
+};
+
+module.exports = JsFiles;

+ 1 - 0
package.json

@@ -14,6 +14,7 @@
     "egg-view": "^1.1.2",
     "egg-view-ejs": "^1.1.0",
     "gt3-sdk": "^2.0.0",
+    "gulp": "^4.0.0",
     "js-xlsx": "^0.8.22",
     "koa-is-json": "^1.0.0",
     "lodash": "^4.17.11",