mpvue目录结构

参考原文:https://www.jianshu.com/p/2c363ea29cdavue

mpvue的目录结构以下图:vuex

(todo是我mpvue项目的名称)npm

dist目录是在执行npm run dev后由src编译生成的微信小程序文件。json

counter目录是mpvue官方快速模板中存放vuex的目录,也就相似于vuex中的store目录。小程序

project.config.json是开发工具的配置文件。微信小程序

app.json数组

  app.json是小程序的全局配置文件,其包含了小程序的页面文件路径配置、窗口的全局样式信息、底部选项卡式菜单栏的配置,以及一些小程序网络超时的配置等等。与原生小程序的app.js文件的做用同样。微信

<script>
/* 这部分至关于原生小程序的 app.js */
   export default {
     created () {
     console.log('miniapp created!!!')}
  }
</script>
<style>
/* 这部分至关于原生小程序的 app.wxss */
 .container { background-color: #cccccc; }
</style>


App.vue网络

  App.vue组件被 src/main.js引入并被设置了一个 mpType的属性值,其值为 app。这个值是为了与后面要讲的小程序页面组件所区分开来,由于小程序页面组件和这个 App.vue组件的写法和引入方式是一致的,为了区分二者,须要设置 mpType值。引入这个 App.vue组件后,会用它做为参数来建立一个Vue的实例,并调用 $mount()方法加载。下面是这个过程的关键代码行:
App.mpType = 'app'
const app = new Vue(App)
app.$mount()


在src/page目录下的index文件夹:app

  main.js的功能是引入 index.vue并建立Vue实例:
import Vue from 'vue'
import App from './index'

const app = new Vue(App)
app.$mount()

实现index.vue页面组件,它的写法是最典型的Vue组件写法

    <template>
     <div class="container" @click="clickHandle"> 
        <div class="message">{{msg}}</div> 
    </div> 
</template>
<script> 
export default {
    data () {
         return { msg: 'Hello'}
    }, 
    methods: {
        clickHandle () {
             this.msg = 'Clicked!!!!!!'
        }
    }
 }
 </script> 
<style scoped>
     .message { color: red; padding: 10px; text-align: center; }
 </style> 
            
回头再来看,当咱们实现了这个 index.vue页面组件后,其实还缺最后一个步骤,就是须要将这个页面组件指定为首页。若是咱们的小程序只有一个页面的话,其实也能够省略这一步,由于mpvue会自动将 src/pages目录下的页面组件路径添加到最终编译出来的小程序配置文件中去(能够打开 dist/app.json文件观察一下):
 
{ 
  "pages": ["pages/index/main"],
  "window": {
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "第一个小程序",
    "navigationBarTextStyle": "black"}
}

可是,大多数状况下咱们的小程序会由不少个页面组成,在src/pages目录下编写多个页面组件后,mpvue也会自动把它们都添加进配置文件,可是因为小程序有一个机制:

配置文件中pages数组里的第一个page路径会被当作是首页。

若是你指望的首页组件并无被mpvue添加到第一个路径的话,就不会被当作首页显示。好比有多个页面,并在dist/app.json里生成的是下面的序列,则第一个pages/articles/main页面会被当作首页:

"pages": [
  "pages/articles/main",
  "pages/authors/main",
  "pages/index/main",
  "pages/kickstart/main"
]

为了解决这种状况,咱们须要显式的去指定首页。能够在src/main.js的配置里,加入这样一行配置信息:

pages: [
  '^pages/index/main'
]

注意:以上配置中指定为首页的路径前面有个^符号。

加入这行配置以后,pages/index/main老是会在最终生成的dist/app.json中排在第一个位置,成为首页。

相关文章
相关标签/搜索