first commit

This commit is contained in:
2026-09-08 20:28:54 +08:00
commit 2ada8d3d5a
37380 changed files with 4886169 additions and 0 deletions
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2018 落子无悔
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,60 @@
README
===========================
解决mpvue多个页面公用一个vm对象的问题 [mpvue issue 140](https://github.com/Meituan-Dianping/mpvue/issues/140)
### 使用方法:
#### !注意:master分支是基于1.1.2版本的,如果你现有工程用的是1.0.x的版本,因为目录结构不一样会有问题。2个方法解决:
1. 直接使用我的1.0.x的分支,pagckage.json 中添加依赖
```
"mpvue-loader": "git+https://github.com/HelloZJW/mpvue-loader.git#patch1.0.x",
"mpvue-page-factory": "^1.0.0",
```
2. 参考[升级指南](http://mpvue.com/change-log/2018.7.24/)修改工程配置
#### 如果是现有工程使用的是1.1.x版本,直接使用使用[master分支](https://github.com/HelloZJW/mpvue-loader)
pagckage.json 中添加依赖
```
"mpvue-loader": "git+https://github.com/HelloZJW/mpvue-loader.git",
"mpvue-page-factory": "^1.0.0",
```
#### 添加完依赖以后,需要修改页面的main.js入口文件为
```javascript
import pageFactory from 'mpvue-page-factory'
import App from './index'
Page(pageFactory(App))
```
### 如果你用了mpvue-entry:
```
"mpvue-loader": "git+https://github.com/HelloZJW/mpvue-loader.git",
"mpvue-page-factory": "^1.0.0",
```
#### 配置方法:
在你的pages.js相同目录下建一个template.js文件,此文件为入口模板;里面内容为:
```
import pageFactory from 'mpvue-page-factory'
import App from '@/App'
Page(pageFactory(App))
```
然后修改build/webpack.base.conf.js 中MpvueEntry.getEntry()方法的入参
```
const entry = MpvueEntry.getEntry({
pages: './src/pages.js', //可以不填,缺省就是这个
main: './src/main.js', //可以不填,缺省就是这个
template: './src/template.js'
})
```
然后你会发现node_module/mpvue-entry/dist目录里面js文件内容发生了变化。
![image](https://user-images.githubusercontent.com/8361397/45264454-43671a00-b46f-11e8-8b4f-ecfd534a4755.png)
enjoy,其他工程代码不需要修改
@@ -0,0 +1,7 @@
//临时方案
declare function Page(page: object): void;
declare module 'mpvue-page-factory' {
function factory (pageComponent: Vue): any
export default factory;
}
@@ -0,0 +1,168 @@
import Vue from 'vue';
function callHook$1(vm, hook, params) {
var handlers = vm.$options[hook];
if (hook === 'onError' && handlers) {
handlers = [handlers];
}
if(typeof handlers === 'function'){
handlers = [handlers]
}
var ret;
if (handlers) {
for (var i = 0, j = handlers.length; i < j; i++) {
// try {
ret = handlers[i].call(vm, params);
// } catch (e) {//fixed by xxxxxx
// handleError(e, vm, (hook + " hook"));
// }
}
}
if (vm._hasHookEvent) {
vm.$emit('hook:' + hook);
}
// for child
if (vm.$children.length) {
vm.$children.forEach(function (v) {
return callHook$1(v, hook, params);
});
}
return ret
}
function getRootVueVm(page) {
return page.$vm.$root;
}
export default function (App) {
return {
// 页面的初始数据
data: {
$root: {}
},
// mp lifecycle for vue
// 生命周期函数--监听页面加载
onLoad:function onLoad(query) {
//页面加载的时候
var app = new Vue(App);
// 挂载Vue对象到page上
this.$vm = app;
var rootVueVM = app.$root;
rootVueVM.__wxExparserNodeId__ = this.__wxExparserNodeId__//fixed by xxxxxx(createIntersectionObserver)
rootVueVM.__wxWebviewId__ = this.__wxWebviewId__//fixed by xxxxxx(createIntersectionObserver)
//初始化mp对象
if (!rootVueVM.$mp) {
rootVueVM.$mp = {};
}
var mp = rootVueVM.$mp;
mp.mpType = 'page';
mp.page = this;
mp.query = query;
mp.status = 'load';
//mount 要在 mp.status = 'load';赋值之后,不然mount方法会重复添加微信Page
//具体原因参考mpvue核心库源码,_initMP方法
app.$mount();
},
handleProxy: function handleProxy(e) {
var rootVueVM = getRootVueVm(this);
return rootVueVM.$handleProxyWithVue(e)
},
// 生命周期函数--监听页面显示
onShow:function onShow() {
var rootVueVM = getRootVueVm(this);
var mp = rootVueVM.$mp;
mp.status = 'show';
callHook$1(rootVueVM, 'onShow');
// // 只有页面需要 setData
rootVueVM.$nextTick(function () {
rootVueVM._initDataToMP();
});
},
// 生命周期函数--监听页面初次渲染完成
onReady:function onReady() {
var rootVueVM = getRootVueVm(this);
var mp = rootVueVM.$mp;
mp.status = 'ready';
callHook$1(rootVueVM, 'onReady');
},
// 生命周期函数--监听页面隐藏
onHide: function onHide() {
var rootVueVM = getRootVueVm(this);
var mp = rootVueVM.$mp;
mp.status = 'hide';
callHook$1(rootVueVM, 'onHide');
},
// 生命周期函数--监听页面卸载
onUnload: function onUnload() {
var rootVueVM = getRootVueVm(this);
callHook$1(rootVueVM, 'onUnload');
rootVueVM.$destroy();
},
// 页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh: function onPullDownRefresh() {
var rootVueVM = getRootVueVm(this);
callHook$1(rootVueVM, 'onPullDownRefresh');
},
// 页面上拉触底事件的处理函数
onReachBottom: function onReachBottom() {
var rootVueVM = getRootVueVm(this);
callHook$1(rootVueVM, 'onReachBottom');
},
// Do something when page scroll
onPageScroll: function onPageScroll(options) {
var rootVueVM = getRootVueVm(this);
callHook$1(rootVueVM, 'onPageScroll', options);
},
// 当前是 tab 页时,点击 tab 时触发
onTabItemTap: function onTabItemTap(options) {
var rootVueVM = getRootVueVm(this);
callHook$1(rootVueVM, 'onTabItemTap', options);
},
// // 用户点击右上角分享
onShareAppMessage: App.onShareAppMessage ?
function (options) {
var rootVueVM = getRootVueVm(this);
return callHook$1(rootVueVM, 'onShareAppMessage', options);
} : null,
//fixed by xxxxxx
onNavigationBarButtonTap: function onNavigationBarButtonTap(options) {
var rootVueVM = getRootVueVm(this);
callHook$1(rootVueVM, "onNavigationBarButtonTap", options)
},
onNavigationBarSearchInputChanged: function onNavigationBarSearchInputChanged(options) {
var rootVueVM = getRootVueVm(this);
callHook$1(rootVueVM, "onNavigationBarSearchInputChanged", options)
},
onNavigationBarSearchInputConfirmed: function onNavigationBarSearchInputConfirmed(options) {
var rootVueVM = getRootVueVm(this);
callHook$1(rootVueVM, "onNavigationBarSearchInputConfirmed", options)
},
onNavigationBarSearchInputClicked: function onNavigationBarSearchInputClicked(options) {
var rootVueVM = getRootVueVm(this);
callHook$1(rootVueVM, "onNavigationBarSearchInputClicked", options)
},
onBackPress: function onBackPress(options) {
var rootVueVM = getRootVueVm(this);
return callHook$1(rootVueVM, "onBackPress",options)
},
$getAppWebview:function (e) {
return plus.webview.getWebviewById('' + this.__wxWebviewId__)
}
};
}
@@ -0,0 +1,45 @@
{
"_from": "mpvue-page-factory",
"_id": "mpvue-page-factory@1.0.1",
"_inBundle": false,
"_integrity": "sha512-jHK5UVqPYMAl09MZmAq6Wq1Ki6s0/XRPvo0CkaP9LakUoVh1j8x7r4gU5dln9YTWzBqjXbdm0U3oghSa6Ql5hQ==",
"_location": "/mpvue-page-factory",
"_phantomChildren": {},
"_requested": {
"type": "tag",
"registry": true,
"raw": "mpvue-page-factory",
"name": "mpvue-page-factory",
"escapedName": "mpvue-page-factory",
"rawSpec": "",
"saveSpec": null,
"fetchSpec": "latest"
},
"_requiredBy": [
"#USER",
"/"
],
"_resolved": "https://registry.npmjs.org/mpvue-page-factory/-/mpvue-page-factory-1.0.1.tgz",
"_shasum": "3276cfe128751be30a2ee246b7c457652115f7d0",
"_spec": "mpvue-page-factory",
"_where": "/Users/fxy/Documents/DCloud/frontend/plugins/uniapp",
"author": {
"name": "zhangjianwei"
},
"bugs": {
"url": "https://github.com/HelloZJW/mpvue-page-factory/issues"
},
"bundleDependencies": false,
"deprecated": false,
"description": "README =========================== 解决mpvue多个页面公用一个vm对象的问题 [mpvue issue 140](https://github.com/Meituan-Dianping/mpvue/issues/140)",
"homepage": "https://github.com/HelloZJW/mpvue-page-factory#readme",
"license": "MIT",
"main": "index.js",
"name": "mpvue-page-factory",
"repository": {
"type": "git",
"url": "git+https://github.com/HelloZJW/mpvue-page-factory.git"
},
"typings": "types/index.d.ts",
"version": "1.0.1"
}