vue项目总结之文件夹结构配置详解


Posted in Javascript onDecember 13, 2017

前言

之前一段时间都在使用 vue 开发后台管理系统,在摸索的过程中对 vue 本身和模块化、规范化开发有了更深的认知,现在记录下来,希望对其他需要开发项目的人有帮助。

基于 vue.js 的前端开发环境,用于前后端分离后的单页应用开发,可以在开发时使用 ES Next、scss 等最新语言特性。下面随着小编来一起学习学习吧。

项目配置

首先,在确定好使用的框架和组件库后,先要大致了解它们,做到文档基本熟悉。本次开发使用到的有: vue , vuex , axios , elementUI 。

然后可以按官方指引,使用 vue-cli 搭建 vue 的项目,在项目里按照上面的文档尝试修改,加深理解:

# 安装依赖库,建议指定 vue 和 element 版本,避免版本升级带来意料之外的 bug
$ npm install vue@2.1.6 element-ui@1.4.6 vuex axios
#全局安装脚手架
$ npm install -g vue-cli 
# 创建一个基于 webpack 模板的新项目my-project
$ vue init webpack my-project
# 进入项目目录
$ cd my-project
# 安装依赖
$ npm install
# 运行项目
$ npm run dev

运行之后,看到以下页面表明项目环境搭建成功:

vue项目总结之文件夹结构配置详解

项目结构

搭建成功后,使用编辑器打开项目目录,大致是这样的结构:

vue项目总结之文件夹结构配置详解

相关文件和文件夹的含义:

  • build 文件夹: 里面是对 webpack 开发和打包的相关设置,包括入口文件、输出文件、使用的模块等;
  • config 文件夹: 主要是指定开发和打包中的静态资源路径、要压缩的文件类型、开发使用的端口号、开发使用虚拟服务器跨域请求 api 等。
  • node_modules: 项目的依赖库;
  • src 文件夹: 我们主要操作的地方,组件的增加修改等都在这个文件夹里操作,下文会有详细介绍;
  • static 文件夹: 静态资源文件夹,放置不会变动的资源,直接被复制到最终的打包目录(默认是dist/static)下;
  • .babelrc: 使用 babel 的配置文件,用来设置转码规则和插件;
  • .editorconfig: 代码的规范文件,规定使用空格或 tab 缩进,缩进的长度是两位还是四位之类的代码风格,使用的话需要在编辑器里下载对应的插件;
  • .eslintignore: 指定 eslint 忽略的文件;
  • .eslintrc: 配置 eslint 的检测规则,强制按照规则书写代码;
  • .gitignore: 指定 git 忽略的文件,所有 git 操作均不会对其生效;
  • .postcssrc: 指定使用的 css 预编译器,里面默认配置了 autoprefixer ,自动补全浏览器前缀;
  • favicon.ico: 浏览器标签页 title 旁边的小图标,这是需要我们自己粘贴过来的;
  • index.html: 首页文件,项目运行的时候,会自动将我们在 src 文件夹里生成的组件插入这个文件里;
  • LICENSE: 项目声明的 license;
  • package-lock.json: 当 node_modules 或 package.json 发生变化时自动生成的文件。这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新;
  • package.json: 指定项目开发和生成环境中需要使用的依赖库;
  • README.md: 相当于是一个备注文件,对项目开发过程中需要注意的地方进行一些说明。

src 文件夹结构

src 文件夹里的文件夹设置是灵活的,可以根据自己的习惯进行,不必雷同。下面是这次项目的结构:

vue项目总结之文件夹结构配置详解

  • assets: 放置静态资源,包括公共的 css 文件、 js 文件、iconfont 字体文件、img 图片文件 以及其他资源类文件。之所以强调是公共的 css 文件,是因为要在组件的 css 标签里加入 ‘scoped‘ 标记,将其作用范围限制在此组件以及调用它的父级组件中,避免污染全局样式;
  • components: 放置通用模块组件。项目里总会有一些复用的组件,例如弹出框、发送手机验证码、图片上传等,将它们作为通用组件,避免重复工作;
  • http: 放置与后台 api 相关的文件。这里面有 axios 库的实例配置文件、使用配置的 axios 实例接入 api 获取数据的函数的集合的文件;
  • mixins: 放置混合选项的文件。具体来说,相当于是公用函数的集合,在组件中引用时,可以作用于组件而不必书写重复的方法;
  • pages: 放置主要页面的组件。例如登录页、用户信息页等。通常是这里的组件本身写入一些结构,再引入通用模块组件,形成完整的页面;
  • router: 放置路由设置文件,指定路由对应的组件;
  • store: 放置 vuex 需要的状态关联文件,设置公共的 state、mutations 等;
  • App.vue: 入口组件,pages 里的组件会被插入此组件中,此组件再插入 index.html 文件里,形成单页面应用;
  • main.js: 入口 js 文件,影响全局,作用是引入全局使用的库、公共的样式和方法、设置路由等。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
图片按比例缩放函数
Jun 26 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
Apr 19 Javascript
javaScript对文字按照拼音排序实现代码
Dec 27 Javascript
2种jQuery 实现刮刮卡效果
Feb 01 Javascript
JavaScript实现16进制颜色值转RGB的方法
Feb 09 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
Apr 25 Javascript
js实现三张图(文)片一起切换的banner焦点图
Aug 25 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Dec 15 Javascript
vue 引用自定义ttf、otf、在线字体的方法
May 09 Javascript
Vue编程式跳转的实例代码详解
Jul 10 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
May 09 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
May 14 Javascript
vue.js简单配置axios的方法详解
Dec 13 #Javascript
关于Vue单页面骨架屏实践记录
Dec 13 #Javascript
JS实现利用两个队列表示一个栈的方法
Dec 13 #Javascript
node vue项目开发之前后端分离实战记录
Dec 13 #Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 #Javascript
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 #Javascript
Angular4编程之表单响应功能示例
Dec 13 #Javascript
You might like
PHP简洁函数小结
2011/08/12 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
SWFObject Flash js调用类
2008/07/08 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
浅谈django中的认证与登录
2016/10/31 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
实例详解Python装饰器与闭包
2019/07/29 Python
python3爬虫中异步协程的用法
2020/07/10 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
自我评价优秀范文分享
2013/11/30 职场文书
企业委托书范本
2014/09/13 职场文书
python基础之停用词过滤详解
2021/04/21 Python
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python