参考原文: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
中排在第一个位置,成为首页。