完成所有功能的开发

master 1.0.0
yutent 2023-08-14 19:12:30 +08:00
parent 80a58ac116
commit 67ac6a7e95
5 changed files with 35 additions and 11 deletions

View File

@ -17,9 +17,9 @@
### 一些注意事项 ### 一些注意事项
- 路由不支持嵌套, 即`<router-view></router-view>`只能出现`1`次。 - 路由不支持嵌套, 即`<router-view></router-view>`只能出现`1`次。
- `$router`和`$route`对象, 只注入到一级路由页面, 页面引用的其他`web components`组件, 不会注入 - `$router`对象, 只注入到使用`wkit`创建的组件, 其他地方可以使用`getRouter()`获取`$router`对象
- 所有路由页面和组件, 均可使用`getCurrentPage()`获取当前的`$route`对象; 同时可以使用`getRouter()`获取`$router`对象 - 所有路由页面和组件, 均可使用`getCurrentPage()`获取当前的页面的信息; 也可以用`$router.route`获取
- `$store`对象, 只注入到一级路由页面, 其他组件可使用`getStore()`获取。 - `$store`对象, 只注入到使用`wkit`创建的组件, 其他组件可使用`getStore()`获取。
- `$store`对象为非响应式, 后续可能会支持(时间无限期延后)。 - `$store`对象为非响应式, 后续可能会支持(时间无限期延后)。

View File

@ -1,6 +1,6 @@
{ {
"name": "wkitd", "name": "wkitd",
"version": "0.0.0", "version": "1.0.0",
"type": "module", "type": "module",
"main": "dist/index.js", "main": "dist/index.js",
"files": [ "files": [

View File

@ -31,7 +31,6 @@ export function createApp({
} }
this.mount = function () { this.mount = function () {
let $router = window.__wkitd__.get('$router') let $router = window.__wkitd__.get('$router')
window.foo = $router
if (render) { if (render) {
App.prototype.render = render App.prototype.render = render
} else { } else {
@ -87,3 +86,15 @@ export function createApp({
} }
})() })()
} }
export function getStore() {
return window.__wkitd__.get('$store')
}
export function getRouter() {
return window.__wkitd__.get('$router')
}
export function getCurrentPage() {
return window.__wkitd__.get('$router')?.route
}

View File

@ -16,11 +16,10 @@ export function createRouter({
let $router = history() let $router = history()
window.__wkitd__.set('$router', $router) window.__wkitd__.set('$router', $router)
Component.prototype.$router = $router
$router.addRoute(routes) $router.addRoute(routes)
function wrapper() { function wrapper() {
return $router Component.prototype.$router = $router
} }
wrapper.beforeEach = $router.beforeEach.bind($router) wrapper.beforeEach = $router.beforeEach.bind($router)
return wrapper return wrapper

View File

@ -7,11 +7,25 @@
import { Component } from 'wkit' import { Component } from 'wkit'
export function createStore(obj = {}) { export function createStore(obj = {}) {
window.__wkitd__.$store = obj window.__wkitd__.set(
'$store',
Component.prototype.$store = obj new Proxy(obj, {
set(target, prop, value) {
target[prop] = value
return true
}
})
)
return function () { return function () {
// Object.defineProperty(Component.prototype, '$store', {
get() {
return window.__wkitd__.get('$store')
},
set(val) {
console.error('Can not replace readonly property $store of Component')
},
enumerable: false
})
} }
} }