vue2.0项目启动后调用顺序:index.html-->main.js-->App.vue-->index.js-->components/组件
一般项目创建好后会有四个文件:index.html、main.js、app.vue、index.js
1、index.html:所有vue文件都是单页面形式开发,所有vue组件都是通过index.html进行渲染。
2、main.js:相当于java的入口函数,控制初次启动vue项目要加载的组件
import Vue from 'vue' /* 这里是引入vue文件 */ import App from './App' /* 这里是引入同目录下的App.vue模块 */ import router from './router' /* 这里是引入vue的路由 */ import Vuex from 'vuex' import store from './vuex/store'
Vue.use(Vuex) //全局方法定义为Vuex
el:'#app'这个和index.html中的app组件挂钩。官网解释为:模板将会替换挂载的元素
watch:用来监听路由的变换,可以用来定义页面切换时的过渡效果。
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue' /* 这里是引入vue文件 */
import App from './App' /* 这里是引入同目录下的App.vue模块 */
import router from './router' /* 这里是引入vue的路由 */
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import Vuex from 'vuex'
import store from './vuex/store'
//导入vue-resource,并使用
import VueResource from 'vue-resource'
Vue.use(ElementUI);
Vue.use(VueResource);
Vue.use(Vuex);
//方法一
import axios from 'axios'
//其他vue组件中就可以this.$axios调用使用
Vue.prototype.$axios = axios
axios.defaults.baseURL = '/api' //关键代码
Vue.config.productionTip = false
/**
* 方法二:结合vue-axios插件,
* 安装插件后,就不需要将axios绑定到Vue原型链上了,
* 组件内通过this.axios调用
*/
/*import axios from 'axios'
import VueAxios from "vue-axios";
Vue.use(VueAxios,axios)*/
/*关闭生产模式下给出的提示*/
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app', /* 定义作用范围就是index.html里的id为app的范围内 */
data(){
return{
transitionName:'slide'
}
},
store,
router, /* 引入路由 */
watch:{
$route(to,from){
//debugger
const toDepth = to.path.split('/').length
const fromDepth = from.path.split('/').length
this.transitionName = toDepth < fromDepth ? 'slide_back' : 'slide'
//根据路由深度,来判断是该从右侧进入还是该从左侧进入
}
},
components: { App }, /* 注册引入的组件App.vue */
template: '<App/>' /* 给Vue实例初始一个App组件作为template 相当于默认组件 */
})
3、App.vue默认为一个根组件。
4、index.js
引入组件的代码routes定义时,path
为你以后页面间路由跳转的路径。name
为import
进来的名字,component
也为这个名字。
'use strict'
// Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path')
module.exports = {
dev: { // dev 环境
assetsSubDirectory: 'static',// 编译输出的二级目录
assetsPublicPath: '/',// 编译发布的根目录,可配置为资源服务器域名或 CDN 域名
outputDir:"dist", //打包时生成的生产环境构建文件的目录
assetsDir: 'public', // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
host: 'localhost', // can be overwritten by process.env.HOST
port: 9080, // 运行测试页面的端口
autoOpenBrowser: false,
errorOverlay: true,
notifyOnErrors: true,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
devtool: 'cheap-module-eval-source-map',
cacheBusting: true,
cssSourceMap: true, // 是否开启 cssSourceMap
proxyTable: {
'/api':{
target:'http://localhost:8088',//你请求的第三方接口
//secure:false,//如果是https接口,需要配置这个参数
changeOrigin:true,//如果接口跨域,需要进行这个参数配置.在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
pathRewrite:{ //路径重写
'^/api':'' //替换target中的请求地址,也就是说以后你在请求http://localhost:8088这个地址的时候直接写成/api即可
}
}
}// 需要 proxyTable 代理的接口(可跨域)
},
build: { // production 环境
index: path.resolve(__dirname, '../dist/index.html'),// 编译输入的 index.html 文件
assetsRoot: path.resolve(__dirname, '../dist'),// 编译输出的静态资源路径
assetsSubDirectory: 'static',// 编译输出的二级目录
assetsPublicPath: '/',// 编译发布的根目录,可配置为资源服务器域名或 CDN 域名
assetsDir: 'public', // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
productionSourceMap: true,// 是否开启 cssSourceMap
devtool: '#source-map',
productionGzip: false,// 是否开启 gzip
productionGzipExtensions: ['js', 'css'],// 需要使用 gzip 压缩的文件扩展名
bundleAnalyzerReport: process.env.npm_config_report
}
}
其他文件:
-build
-build.js 生产环境构建脚本
-utils.js 构建相关工具方法
-webpack.base.conf.js webpack基础配置
-webpack.dev.conf.js webpack开发环境配置
-webpack.prod.conf.js 生产环境配置
-confg 项目配置
–dev.env.js 开发环境变量
–index.js 项目配置文件
–prod.env.js 生产环境变量
–test.env.js 测试环境变量
-package.json npm包配置文件,里面定义了项目的npm脚本,依赖包等信息
-src 源码目录
–main.js 入口js文件
–app.vue 根组件
–components 公共组件目录