在上一篇项目搭建文章中,咱们已经下载安装了node环境以及vue-cli,而且已经成功构建了一个vue-cli项目,那么接下来,咱们来梳理一下vue-cli项目的结构。css
一个vue-cli的项目结构以下,其中src文件夹是须要掌握的,因此本文也重点讲解其中的文件,至于其余相关文件,了解一下便可。html
build文件主要是webpack的配置,主要启动文件是dev-server.js,当咱们输入npm run dev首先启动的就是dev-server.js,它会去检查node及npm版本,加载配置文件,启动服务。vue
config文件主要是项目相关配置,咱们经常使用的就是当端口冲突时配置监听端口,打包输出路径及命名等node
node_modules里面是项目依赖包,其中包括不少基础依赖,本身也能够根据须要安装其余依赖。安装方法为打开cmd,进入项目目录,输入npm install [依赖包名称],回车。webpack
在两种状况下咱们会本身去安装依赖:es6
(1)项目运行缺乏该依赖包:例如项目加载外部css会用到的css-loader,路由跳转vue-loader等(安装方法示例:npm install css-loader)web
(2)安装插件:如vux(基于WEUI的移动端组件库),vue-swiper(轮播插件)vue-router
注:有时会安装指定依赖版本,需在依赖包名称后加上版本号信息,如安装11.1.4版本的vue-loader,输入npm install vue-loader@11.1.4vue-cli
index.html如其余html同样,但通常只定义一个空的根节点,在main.js里面定义的实例将挂载在根节点下,内容都经过vue组件来填充npm
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>vuedemo</title> </head> <body> <!-- 定义的vue实例将挂载在#app节点下 --> <div id="app"></div> </body> </html>
一个vue页面一般由三部分组成:模板(template)、js(script)、样式(style)
<!-- 模板 --> <template> <div id="app"> <img src="./assets/logo.png"> <router-view></router-view> </div> </template> <!-- script --> <script> export default { name: 'app' } </script> <!-- 样式 --> <style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
【template】
其中模板只能包含一个父节点,也就是说顶层的div只能有一个(例以下图,父节点为#app的div,其没有兄弟节点)
<router-view></router-view>是子路由视图,后面的路由页面都显示在此处
打一个比喻吧,<router-view>相似于一个插槽,跳转某个路由时,该路由下的页面就插在这个插槽中渲染显示
【script】
vue一般用es6来写,用export default导出,其下面能够包含数据data,生命周期(mounted等),方法(methods)等,具体语法请看vue.js文档,在后面我也会经过例子来讲明。
【style】
样式经过style标签<style></style>包裹,默认是影响全局的,如需定义做用域只在该组件下起做用,需在标签上加scoped,<style scoped></style>
如要引入外部css文件,首先需给项目安装css-loader依赖包,打开cmd,进入项目目录,输入npm install css-loader,回车。安装完成后,就能够在style标签下import所需的css文件,例如:
<style> import './assets/css/public.css' </style>
这样,咱们就能够把style下的样式封装起来,写到css文件夹,再引入到页面使用,整个vue页面也看上去更简洁。
main.js主要是引入vue框架,根组件及路由设置,而且定义vue实例,下面的
components:{App}就是引入的根组件App.vue
后期还能够引入插件,固然首先得安装插件。
/*引入vue框架*/ import Vue from 'vue' /*引入根组件*/ import App from './App' /*引入路由设置*/ import router from './router' /*关闭生产模式下给出的提示*/ Vue.config.productionTip = false /*定义实例*/ new Vue({ el: '#app', router, template: '<App/>', components: { App } })
router文件夹下,有一个index.js,即为路由配置文件
/*引入vue框架*/ import Vue from 'vue' /*引入路由依赖*/ import Router from 'vue-router' /*引入页面组件,命名为Hello*/ import Hello from '@/components/Hello' /*使用路由依赖*/ Vue.use(Router) /*定义路由*/ export default new Router({ routes: [ { path: '/', name: 'Hello', component: Hello } ] })
这里定义了路径为'/'的路由,该路由对应的页面是Hello组件,因此当咱们在浏览器url访问http://localhost:8080/#/时就渲染的Hello组件
相似的,咱们能够设置多个路由,‘/index’,'/list'之类的,固然首先得引入该组件,再为该组件设置路由。