From 5a8fcccf9f7db99827a6fd7b2b17f7cda5fdbb2b Mon Sep 17 00:00:00 2001
From: wkj <278599135@qq.com>
Date: Tue, 12 Jul 2022 16:52:21 +0800
Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AEapp.json=E6=98=AF=E5=90=A6?=
=?UTF-8?q?=E9=85=8D=E7=BD=AEoak-message=EF=BC=8C=20pages=E4=B8=8Bxml?=
=?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8A=A0=E4=B8=8A=20?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
config/loaders/wxml-loader.js | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/config/loaders/wxml-loader.js b/config/loaders/wxml-loader.js
index 092c3a8..d4444d5 100644
--- a/config/loaders/wxml-loader.js
+++ b/config/loaders/wxml-loader.js
@@ -77,6 +77,7 @@ function traverse(doc, callback) {
const isSrc = (name) => name === 'src';
const isDynamicSrc = (src) => /\{\{/.test(src);
+const oakMessage = 'oak-message';
const oakRegex = /(\/*[a-zA-Z0-9_-])*\/app\/|(\\*[a-zA-Z0-9_-])*\\app\\/;
const localRegex = /(\/*[a-zA-Z0-9_-])*\/src+\/|(\\*[a-zA-Z0-9_-])*\\src+\\/;
const TranslationFunction = 't';
@@ -117,6 +118,15 @@ function getWxsCode() {
return [code, runner].join('\n');
}
+function getAppJson(context) {
+ const JSON_PATH = require.resolve(`${context}/app.json`);
+ if (!fs.existsSync(JSON_PATH)) {
+ return;
+ }
+ const data = fs.readFileSync(JSON_PATH, 'utf8');
+ return JSON.parse(data);
+}
+
module.exports = async function (content) {
// loader的缓存功能
// this.cacheable && this.cacheable();
@@ -175,9 +185,16 @@ module.exports = async function (content) {
}
// 注入全局message组件
if (/pages/.test(context)) {
- source =
- source +
- ``;
+ const appJson = getAppJson(projectContext);
+ if (
+ appJson &&
+ appJson.usingComponents &&
+ appJson.usingComponents[oakMessage]
+ ) {
+ source =
+ source +
+ `\n <${oakMessage} show="{{!!oakError}}" type="{{oakError.type || ''}}" content="{{oakError.msg || ''}}" >${oakMessage}>`;
+ }
}
const doc = new DOMParser({