From 80a7fbd86e9bd8a2b6d0d0ed63a795567d1bc5bf Mon Sep 17 00:00:00 2001 From: daief <1437931235@qq.com> Date: Mon, 30 Nov 2020 23:21:24 +0800 Subject: [PATCH] wip: code refine & refine debug way --- README.md | 36 ++++++++++++++++ config/index.ts | 2 +- src/Setting/Panel.vue | 57 ++++++++++++++++++++++++++ src/{SettingPanel => Setting}/index.ts | 4 +- src/SettingPanel/Panel.vue | 22 ---------- src/data/index.ts | 5 +++ src/global.less | 3 ++ src/index.ts | 30 +++++++++----- 8 files changed, 123 insertions(+), 36 deletions(-) create mode 100644 README.md create mode 100644 src/Setting/Panel.vue rename src/{SettingPanel => Setting}/index.ts (80%) delete mode 100644 src/SettingPanel/Panel.vue diff --git a/README.md b/README.md new file mode 100644 index 0000000..d8fce0c --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +### 调试、自动刷新 + +起个本地服务托管 `dist`,如 `live-server --port=777`,之后在油猴脚本中写入以下代码,当源码更新后可自动刷新: + +```js +// ==UserScript== +// ... 其他必要的配置 +// @grant unsafeWindow +// @grant GM_setValue +// @grant GM_getValue +// @grant GM_log +// @grant GM_xmlhttpRequest +// @connect 127.0.0.1 +// ==/UserScript== + +const code = GM_getValue('code'); +if (code) { + eval(code); +} + +const loop = () => { + GM_xmlhttpRequest({ + url: 'http://127.0.0.1:7777/index.js', + onload: e => { + console.log('check'); + const res = e.responseText; + if (e.status === 200 && code !== res) { + GM_setValue('code', res); + location.reload(); + } + }, + }); +}; + +setInterval(loop, 3000); +``` diff --git a/config/index.ts b/config/index.ts index 49d5cde..7ceba9f 100644 --- a/config/index.ts +++ b/config/index.ts @@ -61,7 +61,7 @@ const config: Configuration = { new GMPlugin({ scriptConfig: [ ['name', 'Response Proxy'], - ['namespace', 'http://tampermonkey.net/'], + ['namespace', pkg.author.name], ['version', pkg.version], ['description', pkg.description], ['author', pkg.author.name], diff --git a/src/Setting/Panel.vue b/src/Setting/Panel.vue new file mode 100644 index 0000000..08e33cb --- /dev/null +++ b/src/Setting/Panel.vue @@ -0,0 +1,57 @@ + + + {{ state.matchedSetList.length }}1 + + + + + + diff --git a/src/SettingPanel/index.ts b/src/Setting/index.ts similarity index 80% rename from src/SettingPanel/index.ts rename to src/Setting/index.ts index bd24b77..688a2c6 100644 --- a/src/SettingPanel/index.ts +++ b/src/Setting/index.ts @@ -1,8 +1,8 @@ import { createApp } from 'vue'; -import App from './Panel.vue'; +import Panel from './Panel.vue'; export function render(el: any) { - const vm = createApp(App); + const vm = createApp(Panel); const $root = vm.mount(el); return { diff --git a/src/SettingPanel/Panel.vue b/src/SettingPanel/Panel.vue deleted file mode 100644 index d4cbee5..0000000 --- a/src/SettingPanel/Panel.vue +++ /dev/null @@ -1,22 +0,0 @@ - - dsds {{ val }} - - - - - diff --git a/src/data/index.ts b/src/data/index.ts index a90fd41..9a7b84c 100644 --- a/src/data/index.ts +++ b/src/data/index.ts @@ -21,6 +21,11 @@ export const Store = { res = Array.isArray(res) ? res : []; return res; }, + getMatchedSetList(): ISet[] { + return Store.getSetList().filter(it => + new RegExp(it.domainTest, 'ig').test(location.host) + ); + }, findCurrentSet(): ISet { const ruleSet = Store.getSetList().find(it => new RegExp(it.domainTest, 'ig').test(location.host) diff --git a/src/global.less b/src/global.less index 15ef0da..d49133b 100644 --- a/src/global.less +++ b/src/global.less @@ -10,6 +10,9 @@ opacity: 0.5; transition: opacity 0.3s; box-shadow: 0 0 10px 0px rgb(0 0 0 / 35%); + display: flex; + align-items: center; + justify-content: center; &:hover { opacity: 1; diff --git a/src/index.ts b/src/index.ts index 2a24662..cac65e6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,19 +4,19 @@ import './global.less'; import { vmCtx } from './common'; // TODO change to async -import { render } from './SettingPanel'; -// import(/* webpackChunkName: 'setting-panel' */ './SettingPanel'); +import { render } from './Setting'; +// import(/* webpackChunkName: 'setting' */ './Setting'); -let handler: any; -let isDrag = false; -let isMove = false; -let tX = 0; -let tY = 0; -let elRect: DOMRect | null = null; +function bootstrap() { + let handler: any; + let isDrag = false; + let isMove = false; + let tX = 0; + let tY = 0; + let elRect: DOMRect | null = null; -vmCtx.addEventListener('DOMContentLoaded', () => { const el = document.createElement('div'); - el.innerText = '设置'; + el.innerText = 'o_O||'; el.className = 'response-proxy-page-root-fixed-button'; function onClickEl(_e: MouseEvent) { @@ -77,4 +77,12 @@ vmCtx.addEventListener('DOMContentLoaded', () => { document.body.appendChild(el); document.body.appendChild(elForMount); -}); +} + +if (document.readyState === 'loading') { + vmCtx.addEventListener('DOMContentLoaded', () => { + bootstrap(); + }); +} else { + bootstrap(); +}