Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

集中式页面配置 #12

Closed
UnableRegister opened this issue Nov 12, 2018 · 9 comments
Closed

集中式页面配置 #12

UnableRegister opened this issue Nov 12, 2018 · 9 comments

Comments

@UnableRegister
Copy link

能像mpvue-entry集中式页面配置,自动生成各页面的入口文件?现在的页面配置方式会产生很多的模板文件(eg: pages/index/index.js)和模版代码:

import Vue from 'vue'

const app = new Vue( App )

app.$mount()

看着好痛苦啊

@elcarim5efil
Copy link
Member

好建议,我们会调研一下方案

@b2nil
Copy link

b2nil commented Nov 14, 2018

可以考虑采用 vue 的自定义块功能,将页面配置整合到 SFC 中。
需要写一个配合 vue-loader 使用的 config-loader

集中配置的话,感觉对开发者还是不友好,与现在一样,容易忘记切换文件去配置。

@auven
Copy link

auven commented Nov 28, 2018

给集中式页面配置补充一些功能建议:

  1. 能够配置公共的config。因为在实际使用过程中,有很多页面要用到相同的第三方小程序组件,如果在每个页面的config里写usingComponents太繁琐了。
  2. 能够在页面级组件mpType: 'page'里配置config,即:
  • xx.vue
export default {
  mpType: 'page',
  config: {
    ...
  }
}

优先级:页面vue组件的 config > 页面的 config > 公共的 config,并且三者会合并。

@fengzilong fengzilong transferred this issue from kaola-fed/megalo Nov 28, 2018
@b2nil
Copy link

b2nil commented Nov 30, 2018

如果这样写配置的话,通用配置可以通过 mixin 引入。就看提取配置的难度。

@fengzilong
Copy link
Member

@b2nil custom block 的想法很赞

<template></template>

<script></script>

<style></style>

<config>
  // app / page config
</config>

可以考虑支持下将 .vue 文件作为 app / page 入口,这样就可以少写一部分js样板代码了

@b2nil
Copy link

b2nil commented Dec 1, 2018

@fengzilong
如果 megalo 能够支持直接将 .vue 文件作为 app 和 page 的入口,那就简直太棒了。
采用 vue-template-compiler 解析 sfc 中各个模块好像并不复杂。需要考虑一下原入口文件的 js 代码如何处理比较好。现在 megalo 好像是不支持在 .vue 文件中使用 Vue.extend() 的写法。

fengzilong added a commit that referenced this issue Dec 3, 2018
feat: support use .vue file as entry, closes #12
@fengzilong
Copy link
Member

Vue.extend 的语法暂不支持解析,这些我会放在另一个 issue 里面处理

@fengzilong
Copy link
Member

@UnableRegister @b2nil

config配置

<config>
{
"a": 1
}
</config>

webpack配置:

'pages/counter/index': path.resolve( __dirname, 'src/pages/counter/index.vue' ),

理论上,app和page应该都可以直接指定.vue文件作为入口了

升级对应的 @megalo/target 版本即可:@megalo/[email protected]

@fengzilong
Copy link
Member

fengzilong commented Dec 3, 2018

给集中式页面配置补充一些功能建议:

  1. 能够配置公共的config。因为在实际使用过程中,有很多页面要用到相同的第三方小程序组件,如果在每个页面的config里写usingComponents太繁琐了。
  2. 能够在页面级组件mpType: 'page'里配置config,即:
  • xx.vue
export default {
  mpType: 'page',
  config: {
    ...
  }
}

优先级:页面 vue 组件的 config > 页面的 config > 公共的 config,并且三者会合并。

@auven 我新建了一个 issue,可以在新的 issue 中继续讨论

#24

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants