vue学习:第二章 初识Vue项目结构

1. 总体结构

vue-project
  |----build --webpack相关配置文件(一般不需再进行配置)
  |----config --vue基本配置文件(配置监听端口、打包构建等)
  |----node_modules --依赖的node模块
  |----src --项目核心文件(页面代码存放位置)
        |----assets --静态资源(样式类文件,以及一些外部js文件)
        |----components --公共组件
        |----router --路由
        |----App.vue --根组件
        |----main.js --入口文件
  |----static --静态资源(存放图片类资源)
  |----.babelrc --babel编译参数
  |----.editorconfig --代码格式
  |----.gitignore -- git上传需要忽略的文件配置
  |----.postcssrc.js --转换css的工具
  |----index.html --主页
  |----package.json --项目构建基本信息
  |----README.md --项目说明

2. 具体结构说明

2.1 build--[webpack配置]

build文件主要是webpack的配置,主要启动文件是dev-server.js,当我们输入npm run dev首先启动的就是dev-server.js,它会去检查node及npm版本,加载配置文件,启动服务。

build
  |----build.js --生产环境构建
  |----check-version.js --版本检查(node,npm)
  |----dev-client.js --开发服务器的热重载(页面自动刷新)
  |----dev-server.js --构建本地服务器(npm run dev即运行该文件)
  |----utils.js --构建相关工具
  |----vue-loader.conf.js --css加载器配置
  |----webpack.base.conf.js --webpack基础配置
  |----webpack.dev.conf.js --webpack开发环境配置
  |----webpack.prod.conf.js --webpack生产环境配置

2.2 config--[vue项目配置]

config文件主要是项目相关配置,我们常用的就是当端口冲突时配置监听端口,打包输出路径及命名等

config
  |----dev.env.js --项目开发环境配置
  |----index.js --项目主要配置(监听端口,打包路径)
  |----prod.env.js --项目生产环境配置

2.3 node_modules--[依赖包]

node_modules里面是项目依赖包,其中包括很多基础依赖,自己也可以根据需要安装其他依赖。安装方法为打开cmd,进入项目目录,输入npm install [依赖包名称],回车。

在两种情况下我们会自己去安装依赖:

(1)项目运行缺少该依赖包:例如项目加载外部css会用到的css-loader,路由跳转vue-loader等(安装方法示例:npm install css-loader)

(2)安装插件:如vux(基于WEUI的移动端组件库),vue-swiper(轮播插件)

注:有时会安装指定依赖版本,需在依赖包名称后加上版本号信息,如安装11.1.4版本的vue-loader,输入npm install vue-loader@11.1.4

2.4 src--[项目核心文件]

项目核心文件前面已经进行了简单的说明,接下来重点讲解main.js,App.vue,及router的index.js

2.4.1 App.vue--[根组件]

一个vue页面通常由三部分组成:模板(template)、js(script)、样式(style)

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <router-view/>
  </div>
</template>

<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 './assetc/css/public.css';
</style>

这样,我们就可以把style下的样式封装起来,写到css文件夹,再引入到页面使用,整个vue页面也看上去更简洁。

2.4.2 main.js--[入口文件]

main.js主要是引入vue框架,根组件及路由设置,并且定义vue实例,下图中的
components:{App}就是引入的根组件App.vue
后期还可以引入插件,当然首先得安装插件。

import Vue from 'vue'
import App from './App'
import router from './router'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
2.4.3 router--[路由配置]

router文件夹下,有一个index.js,即为路由配置文件

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    }
  ]
})

这里定义了路径为'/'的路由,该路由对应的页面是Hello组件,所以当我们在浏览器url访问http://localhost:8080/#/时就渲染的Hello组件

类似的,我们可以设置多个路由,‘/index','/list'之类的,当然首先得引入该组件,再为该组件设置路由。

2.5 index.html--[主页]

index.html如其他html一样,但一般只定义一个空的根节点,在src下的main.js里面定义的实例将挂载在根节点下,内容都通过vue组件来填充

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 Webpack 1.1 概念简介 1.1.1 WebPack是什么 1、一个打包工具 2、一个模块加载工具 3...
    Kevin_Junbaozi阅读 6,707评论 0 16
  • 相关概念 混合开发和前后端分离 混合开发(服务器端渲染) 前后端分离后端提供接口,前端开发界面效果(专注于用户的交...
    他爱在黑暗中漫游阅读 2,844评论 4 45
  • 从很小的时候,我的愿望就是能够做一个soho工作者,当然我小时候还没有“soho”这个概念,就是很想当一个可以随时...
    HUALINI阅读 849评论 0 0
  • 冬雪 雪花临空舞,世界好壮观。风劲常扑面,地冻频送寒。千树裹素枝,万楼着银装。山河增秀色,天地白漫漫。
    独孤旅行阅读 113评论 0 0
  • 我想我已经知道这种麻木的感觉了,意识到了自己已经失去了那份美好,可自己的宽慰之心告诉自己结果不重要,重要的这个...
    lonelyoung阅读 245评论 0 1